首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Matrix上的“not”返回Matrix,而不是Vector?

为什么Matrix上的“not”返回Matrix,而不是Vector?
EN

Stack Overflow用户
提问于 2017-02-21 03:37:55
回答 1查看 268关注 0票数 5

如果我这样做了

代码语言:javascript
复制
mat = rand(8,8)
sum(mat, 1)

返回类型是单行的Matrix,而sum(mat, 2)返回的是单列的Matrix。这让我大吃一惊,因为单例维度通常在0.5中下降,所以我预计这两个操作的返回类型都是Vector。为什么这里没有删除单例维度?

我可能认为这是为了保持方向(例如,sum(mat, 1)是一个行向量),但在0.6上的行为是相同的,它具有显式的1-d RowVectors,所以这似乎不是一个解释。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-21 03:59:23

是的,像sum这样的缩减保留了数组的维数。这是有意的,因为它允许在原始数组中广播返回的结果。例如,这意味着您可以使用./对数组的列进行标准化

代码语言:javascript
复制
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处理,但这种方法不能推广到更高的维度。

这就是说,还有其他情况下,删除维度将be similarly useful。这是一个open design question on the issue tracker

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42352927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档