假设我有一个 4*2 矩阵如下:
a = [1 2; 3 4; 5 6; 7 8]
4×2 Matrix{Int64}:
1 2
3 4
5 6
7 8
我想使用一个向量来访问矩阵,该向量指定我想要在每列中访问哪个元素。在 python 的 NumPy 中,我会执行以下命令:
a[[1,3], [1,2]]
# expected output:
1×2 Matrix{Int64}:
1(as a[1,1]) 6(as a[3,2])
但是在 Julia 中,我得到了以下矩阵:
2×2 Matrix{Int64}:
1 2
5 6
我怎样才能以 Julia 的方式做到这一点?
最佳答案
更新:受到 DNF 答案的启发:
julia> a[CartesianIndex.([1 3], [1 2])]
1×2 Matrix{Int64}:
1 6
在我看来,这似乎是清晰度和与OP相似性之间的正确平衡。
原始答案:
也许不是最佳方式,但是:
[a[x...] for x in [[[1,1]] [[3,2]]]]
有效。
请注意,这会返回一个行向量,就像OP中一样。在 Julia 中,向量和矩阵之间是有区别的。一行或一列的矩阵与向量不同。
[[]]
表示法是为了让hcat
正确处理向量元素。如果向量输出足够好,那么:[[1,1],[3,2]]
就足够了。
关于arrays - Julia 使用向量作为索引访问特定的 Matrix 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74744104/