在Julia 1.0中,当昏暗的地方进入暮光区时会发生什么?

时间:2018-08-17 10:08:19

标签: julia

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   

现在,当我将参数设置为元组昏暗时,会发生什么?朱莉娅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

看起来它正在对元组做某事

1 个答案:

答案 0 :(得分:2)

原因是dims告知应减小的尺寸。另外:

  1. Julia忽略大于数组维数的正索引
  2. 重复无效;
  3. 参数的排序无效;
  4. 只接受积极的论点。

所以:

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

该机制是在Base的函数reduced_indices中实现的(它不会导出,但是您可以查找实现)。