带向量的 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)]
这很简洁明了,似乎不需要特殊的语法。
假设我有一个 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)]
这很简洁明了,似乎不需要特殊的语法。