arrays - Julia 使用向量作为索引访问特定的 Matrix 元素

标签 arrays matrix julia

假设我有一个 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/

相关文章:

numpy - Theano广播与numpy的广播不同

java - 将对象的值从 DAO 传递到 2D 数组中的 servlet

c++ - 已计算但未存储的总和。为什么?

c++ - 如何在 C++ 11 中创建此结构的数组?

java - 制作数组列表的副本而不循环

c++ - 将文本文件读入矩阵,然后将它们相乘

c++ - 在 C++ 中创建基本矩阵的困难

string - Julia - 在文件中打印或写入字符串中的反斜杠

multithreading - 将任务添加到特定线程的队列中

image - 如何在 Julia 中模糊图像?