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/