让索引返回一个矩阵而不是 julia 中的向量

乔纳斯

当您在 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章