Numpy:将一维中的索引转换为多维

时间:2010-01-15 17:25:00

标签: numpy scipy

尽管数组是多维的,但许多数组方法都返回单个索引。例如:

a = rand(2,3)
z = a.argmax()

对于二维,很容易找到最大元素的矩阵索引:

a[z/3, z%3]

但是对于更多尺寸,它可能会变得烦人。在一个(折叠)维度中给定索引时,Numpy / Scipy是否有一种简单的方法可以在多个维度中返回索引?感谢。

2 个答案:

答案 0 :(得分:6)

知道了!

a = X.argmax()
(i,j) = unravel_index(a, X.shape)

答案 1 :(得分:1)

我不知道内置函数可以做你想要的,但是在哪里 我找到了,我意识到我真正想做的就是:

给出2个具有相同形状的数组a,b,找到b中的元素 相同的位置(相同的[i,j,k ...]位置)作为

的最大元素

为此,快速的numpy-ish解决方案是:

j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]
文斯马尔凯蒂