带向量的 julia 索引矩阵

julia index matrix with vector

假设我有一个 20-by-10 矩阵 m

和一个20-by-1向量v,其中每个元素都是1到10之间的整数。

有没有像m[:,v]

这样的智能索引命令

这将给出一个向量,其中每个元素 i 是索引 [i,v[i]]?

m 的元素

不行,看来你做不到。文档 (http://docs.julialang.org/en/stable/manual/arrays/) 说:

If all the indices are scalars, then the result X is a single element from the array A. Otherwise, X is an array with the same number of dimensions as the sum of the dimensionalities of all the indices.

因此,要从索引操作中获得 1d 结果,您需要让其中一个索引的维数为 0,即只是一个标量——然后您将得不到想要的结果。

按照您问题的评论中的建议使用理解。

明确理解方法:

[m[i,v[i]] for i = 1:length(v)]

这很简洁明了,似乎不需要特殊的语法。