尽管数组是多维的,但许多数组方法返回单个索引。例如:
a = rand(2,3)
z = a.argmax()
对于二维,很容易找到最大元素的矩阵索引:
a[z/3, z%3]
但是对于更多维度,它可能会变得烦人。给定一个(折叠)维度中的索引,Numpy/Scipy 是否有一种简单的方法来返回多个维度中的索引?谢谢。
知道了!
a = X.argmax()
(i,j) = unravel_index(a, X.shape)
我不知道有一个内置函数可以满足您的需求,但是在我遇到这种情况时,我意识到我真正想做的是:
给定 2 个形状相同的数组 a,b,找到 b 中与 a 的最大元素处于相同位置(相同 [i,j,k...] 位置)的元素
为此,快速的 numpy-ish 解决方案是:
j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]
文斯·马尔凯蒂