代码之家  ›  专栏  ›  技术社区  ›  Steve Tjoa

numpy:将一个维度中的索引转换为多个维度

  •  4
  • Steve Tjoa  · 技术社区  · 16 年前

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

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

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

    a[z/3, z%3]
    

    但是对于更多的维度,它可能会变得烦人。对于给定一个(折叠的)维度中的索引,numpy/scipy是否有返回多个维度中索引的简单方法?谢谢。

    2 回复  |  直到 16 年前
        1
  •  6
  •   Steve Tjoa    16 年前

    知道了!

    a = X.argmax()
    (i,j) = unravel_index(a, X.shape)
    
        2
  •  1
  •   Vincent Marchetti    16 年前

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

    给定两个形状相同的数组a,b,找出b的元素 与a的最大元素相同的位置(相同的[i,j,k…]位置)

    为此,快速麻木的解决方案是:

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

    文斯马尔凯蒂