alpha = [1 2 3; 4 5 6]
alpha[:, 1] # Type is Array{Int64, 1}
alpha[:, 1:2] # Type is Array{In64, 2}
我只是想阻止自动类型转换,但我很难搞清楚如何做到这一点。是的,我可以去alpha[:, 1]''
,但我想阻止内存重新分配。向另一个方向(1xn矩阵)有vec()
但我找不到保持(nx1)矩阵为矩阵的函数。
答案 0 :(得分:6)
不是简单地指定所需列的索引(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