当您在 Julia 中为矩阵建立索引,并且您的选择是单列或单行时,结果将表示为向量。类似地,当您索引单个点时,您将获得该点的值,而不是 1x1 矩阵。
但是,对于我的用例,我希望我的答案也是一个矩阵,因为向量的方向具有意义,我不想丢失。
因此,给出以下示例矩阵:
julia> A = [1 2; 3 4]
2×2 Matrix{Int64}:
1 2
3 4
我得到:
julia> A[:, 1]
2-element Vector{Int64}:
1
3
julia> A[1, :]
2-element Vector{Int64}:
1
2
julia> A[1, 1]
1
但我想要:
julia> A[:, 1]
2×1 Matrix{Int64}:
1
3
julia> A[1, :]
1×2 Matrix{Int64}:
1 2
julia> A[1, 1]
1×1 Matrix{Int64}:
1
有没有简单的方法来实现这一目标?
现在我做这样的事情:
function getindex_asmatrix(A::Matrix, i, j)
# If i & j are Integers convert point to 1x1 Matrix
# If only j == Integer make a nx1 Matrix
# If only i == Integer make a 1xm Matrix
# else do A[i, j]
end
但我觉得可能有一个更优雅的解决方案。
只需使用1:1
(range) 而不是1
,例如:
julia> A[:, 1:1]
2×1 Matrix{Int64}:
1
3
julia> A[1:1, :]
1×2 Matrix{Int64}:
1 2
julia> A[1:1, 1:1]
1×1 Matrix{Int64}:
1
您也可以[1]
改用,但它会分配,而1:1
不会分配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句