【发布时间】:2021-03-20 02:11:01
【问题描述】:
我有一个矩阵 m = [[1,2,3],[4,5,6],[7,8,9]] 和一个向量 v=[1,2,0],其中包含我要为矩阵的每一列返回的行的索引。
我期望的结果应该是r=[4,8,3],但是我不知道如何使用 numpy 得到这个结果。
通过将向量应用于索引,对于每一列,我都会得到:m[v,[0,1,2]] = [4, 8, 3],这大致是我的任务。
为了防止硬编码列,我使用np.arange(m.shape[1]),我的最终公式看起来像r=m[v,np.arange(m.shape[1])]
这对我来说听起来很奇怪,对于应该很常见的事情来说有点复杂。
有没有一种干净的方法可以得到这样的结果?
【问题讨论】:
-
我看不出使用
arange有什么问题。那是advanced indexing,其中broadcasts数组相互对抗以选择项目。虽然符号有点混乱,但这个概念非常笼统和强大。 MATLAB 需要使用sub2ind来生成类似的索引。
标签: python arrays numpy indexing indices