许多数组方法返回单个索引,尽管数组是多维的。例如:
a = rand(2,3)
z = a.argmax()
对于二维矩阵,查找最大元素的索引非常容易:
a[z/3, z%3]
但是对于更多维度,这可能会变得很麻烦。Numpy/Scipy有一种简单的方法可以返回在一个(折叠的)维度中给定索引时在多个维度中的索引吗?谢谢。
明白了!
a = X.argmax()
(i,j) = unravel_index(a, X.shape)
我不知道有没有内置函数可以做到你想要的,但是当我遇到这种情况时,我意识到我真正想做的是:
给定两个形状相同的数组a、b,找到与a的最大元素相同位置(相同的[i,j,k...]位置)的b元素
对于此问题,快速的numpy解决方案是:
j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]
文斯·马奇蒂