alpha = [1 2 3; 4 5 6]
alpha[:, 1] # Type is Array{Int64, 1}
alpha[:, 1:2] # Type is Array{In64, 2}

我只是想防止自动类型转换,但是我很难弄清楚如何做到这一点。是的,我可以只使用alpha[:, 1]'',但是我想防止内存重新分配。有vec()可用于其他方向(1xn矩阵),但我找不到用于将(nx1)矩阵保持为矩阵的函数。

最佳答案

使用长度为1的范围,而不只是索引

而不是简单地指定所需列的索引(Int64),而是指定长度为1的范围(UnitRange{Int64}):1:1

这将欺骗Julia保留2D数组类型(Array{Int64,2}),而不是返回向量(Array{Int64,1})。

编辑:开发人员讨论了here这个主题(感谢Colin for pointing me to it)。

julia> alpha = [1 2 3; 4 5 6]
2x3 Array{Int64,2}:
 1  2  3
 4  5  6

julia> alpha[:,1]            # nope
2-element Array{Int64,1}:
 1
 4

julia> alpha[:,1:1]          # yep
2x1 Array{Int64,2}:
 1
 4

关于types - 阻止Julia自动转换一维矩阵切片的类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27153924/

10-12 23:16