数组维度上的广播

Geo*_*ery 3 julia

假设我有一个二维数组

a = [1 2 3; 1 2 3]

2×3 Array{Int64,2}:
 1  2  3
 1  2  3
Run Code Online (Sandbox Code Playgroud)

我想sum沿着一个维度,例如沿着维度 1 屈服

[2, 4, 6]
Run Code Online (Sandbox Code Playgroud)

或沿维度 2 屈服

[6, 6]
Run Code Online (Sandbox Code Playgroud)

这是如何正确完成的Julia

Jun*_*ian 7

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

julia> sum(a; dims=2)
2×1 Array{Int64,2}:
 6
 6
Run Code Online (Sandbox Code Playgroud)

您可以使用 删除维度vec


Bog*_*ski 6

君天建议的是标准的做法。但是,还值得了解一个更一般的模式:

julia> sum.(eachrow(a))
2-element Array{Int64,1}:
 6
 6

julia> sum.(eachcol(a))
3-element Array{Int64,1}:
 2
 4
 6
Run Code Online (Sandbox Code Playgroud)

在这种情况下sum可以用任何集合聚合函数代替。