如果我做
mat = rand(8,8)
sum(mat, 1)
Run Code Online (Sandbox Code Playgroud)
返回类型是具有单行sum(mat, 2)
的Matrix ,而给出具有单列的Matrix.这让我感到惊讶,因为单身尺寸通常会下降0.5,所以我希望两种操作的返回类型都是Vector.为什么单身尺寸没有掉落?
我可能期望这是为了保留方向(例如sum(mat, 1)
是行Vector),但0.6上的行为是相同的,它具有明确的1-d RowVectors,因此这似乎不是解释.
谢谢!
是的,像sum
保留数组的维数这样的缩减。这是有意为之的,因为它可以将结果广播回原始数组。这意味着您可以使用以下方法规范化数组的列./
:
julia> A = rand(1:100, 4, 3)\n4\xc3\x973 Array{Int64,2}:\n 94 50 32\n 46 15 78\n 34 29 41\n 79 22 58\n\njulia> A ./ sum(A, 1)\n4\xc3\x973 Array{Float64,2}:\n 0.371542 0.431034 0.15311\n 0.181818 0.12931 0.373206\n 0.134387 0.25 0.196172\n 0.312253 0.189655 0.277512\n
Run Code Online (Sandbox Code Playgroud)\n\n虽然二维情况可以由RowVector
s 处理,但该方法不能推广到更高维度。
也就是说,在其他情况下,删除维度也同样有用。这是问题跟踪器上的一个开放式设计问题。
\n 归档时间: |
|
查看次数: |
189 次 |
最近记录: |