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

Numpy:将一维索引转换为多维索引,numpy,scipy,Numpy,Scipy,许多数组方法返回单个索引,尽管数组是多维的。例如: 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 = 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,找出b中的元素 与a的最大元素相同的位置(相同的[i,j,k…]位置)

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

j = a.flatten().argmax()
corresponding_b_element = b.flatten()[j]

文斯·马切蒂(Vince Marchetti)

也许很烦人,但很可行。的确如此!请看下面。谢谢,这很有趣,它实际上帮助我解决了一些我用自己的解决方案无法解决的问题,如果没有一些技巧,b的sape是a形状的扩展