我想在数组中对一个维度进行求和。这很简单。对于阵列9x100x100:
sum(a,1)
然而,剩下的是一个尺寸为1x100x100的数组。现在我想摆脱第一个维度,因为只剩下一个元素。所以我的解决方案只是:
reshape(summed_array, 100,100)
为了得到我想要的100x100阵列。 然而,这感觉不是很干净。有没有更好的方法来实现这一目标?
答案 0 :(得分:10)
正如@E_net4中a comment指出的那样,自Julia 1.0以来,你应该使用dropdims
(一个更好的名字!)而不是squeeze
。
您正在寻找squeeze
:
squeeze(A, dims)
从数组
A
中删除dims指定的尺寸。dims
的元素必须是唯一的,且在1:ndims(A)
范围内。
julia> a = rand(4,3,2)
4x3x2 Array{Float64,3}:
[:, :, 1] =
0.333543 0.83446 0.659689
0.927134 0.885299 0.909313
0.183557 0.263095 0.741925
0.744499 0.509219 0.570718
[:, :, 2] =
0.967247 0.90947 0.715283
0.659315 0.667984 0.168867
0.120959 0.842117 0.217277
0.516499 0.60886 0.616639
julia> b = sum(a, 1)
1x3x2 Array{Float64,3}:
[:, :, 1] =
2.18873 2.49207 2.88165
[:, :, 2] =
2.26402 3.02843 1.71807
julia> c = squeeze(b, 1)
3x2 Array{Float64,2}:
2.18873 2.26402
2.49207 3.02843
2.88165 1.71807