gpt4 book ai didi

julia - 为什么矩阵上的 `sum` 返回矩阵,而不是向量?

转载 作者:行者123 更新时间:2023-12-04 19:33:38 26 4
gpt4 key购买 nike

如果我做

mat = rand(8,8)
sum(mat, 1)

返回类型是一个单行矩阵,而 sum(mat, 2)给出一个只有一列的矩阵。这让我感到惊讶,因为单例维度通常下降到 0.5,所以我希望这两个操作的返回类型都是 Vector。为什么这里没有删除单例维度?

我可能认为这是为了保持方向(例如 sum(mat, 1) 是行向量),但行为在 0.6 上是相同的,它具有明确的一维行向量,因此这似乎不是一个解释。

谢谢!

最佳答案

是的,像 sum 这样的减少保留数组的维数。这是有意为之,因为它可以将结果广播回原始数组。这意味着,例如,您可以使用 ./ 规范化数组的列。 :

julia> A = rand(1:100, 4, 3)
4×3 Array{Int64,2}:
94 50 32
46 15 78
34 29 41
79 22 58

julia> A ./ sum(A, 1)
4×3 Array{Float64,2}:
0.371542 0.431034 0.15311
0.181818 0.12931 0.373206
0.134387 0.25 0.196172
0.312253 0.189655 0.277512

而二维情况或许可以通过 RowVector来处理。 s,这种方法不能推广到更高的维度。

也就是说,在其他情况下,删除维度会 be similarly useful .这是一个 open design question on the issue tracker .

关于julia - 为什么矩阵上的 `sum` 返回矩阵,而不是向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42352927/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com