我想在矩阵“A”的每行最大值的相同索引中提取数组“B”的值。要查找索引,我使用numpy函数“numpy.argmax”,如下所示:

>>> A=numpy.asarray([[0,1,6],[3,2,4]]);A
array([[0, 1, 6],
       [3, 2, 4]])
>>> argA=numpy.argmax(A,axis=1);argA
array([2, 2])

问题是我不知道如何使用“argA”来提取数组“B”中的值

最佳答案

每一个条目都对应于对应行中的最大值的索引位置。这些行不是显式的(由于使用了argA),而是对应于每个条目的索引因此,您需要将它们添加到中以获取所需的元素。

>>> A[[0,1], argA]
array([6, 4])

所以:
>>> B
array([[ 9,  8,  2],
       [ 3,  4,  5]])
>>> B[[0,1], argA] = 84,89
>>> B
array([[ 9,  8, 84],
       [ 3,  4, 89]])

概括使用:
>>> B[np.arange(A.shape[0]),argA]

关于python - 在定义的轴上使用最大值的索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11311477/

10-08 20:38