1
julia> [1 2; 3 4]
2×2 Array{Int64,2}:
 1  2
 3  4

julia> sum([1 2; 3 4]) 
10  

julia> sum([1 2; 3 4],dims=1)
1×2 Array{Int64,2}:
 4  6

julia> sum([1 2; 3 4],dims=2)
2×1 Array{Int64,2}:
 3   
 7   

现在,当我将参数 dims 设置为元组时,会发生什么?julia 1.0 的官方文档没有给我任何线索。

julia> sum([1 2; 3 4],dims=(1,1))
1×2 Array{Int64,2}:
 4  6

julia> sum([1 2; 3 4],dims=(1,2))
1×1 Array{Int64,2}:
 10  

julia> sum([1 2; 3 4],dims=(2,1))
1×1 Array{Int64,2}:
 10  

julia> sum([1 2; 3 4],dims=(2,2))
2×1 Array{Int64,2}:
 3
 7

julia> sum([1 2; 3 4],dims=(3,4))
2×2 Array{Int64,2}:
 1  2
 3  4

看起来它正在对元组做一些事情

4

1 回答 1

2

原因是dims通知应该减少哪些维度。此外:

  1. Julia 忽略大于数组维数的正索引
  2. 重复无效;
  3. 参数的顺序没有效果;
  4. 只接受正面的论据。

所以:

  • (1,1)1与;相同
  • (2,1)与 )相同(1,2
  • (3,4)与不传递dims参数相同;
  • (1,3,4)是一样的1
  • 0是一个错误。

该机制reduced_indices在Base中的function中实现(它没有导出,但您可以查找实现)。

于 2018-08-17T11:21:00.313 回答