【Python】Numpy多次元配列の最大値のインデックスを取得する

  • まずは二次元配列を見てみましょう
    a = np.array([[1, 7, 5],
                  [8, 2, 13]])
    
    最大 2 つの値の位置インデックスを取得したいとします。
    • まず 2 次元配列を 1 次元配列に拡張し、ソートされたインデックス添字を取得します。
      index = np.argsort(a.ravel())[:-3:-1]
      
      得到 index 值为 [5 3]
      
    • 次に、1次元で得られたインデックスを高次元にマッピングし、高次元配列内の位置インデックスを取得します。
      pos = np.unravel_index(index, a.shape)
      
      得到 pos 值为 (array([1, 1], dtype=int64), array([2, 0], dtype=int64))
      
    • 列ごとに位置を結合する
      np.column_stack(pos)
      
      结果:[[1 2]
      		[1 0]]
      
    • インデックスは[1 2]最大値に対応し13[1 0]対応する値は 2 番目に大きい値です8
  • 三次元、三次元(多次元)と二次元のステップが同じであることを試してください
    a = np.array([
            [[1, 7, 5],
             [8, 2, 13]],
            [[25, 0, 3],
             [50, 14, 28]]
        ])
    
    index = np.argsort(a.ravel())[:-3:-1]
    pos = np.unravel_index(index, a.shape)
    print(a.ravel())
    print(index)
    print(pos)
    print(np.column_stack(pos))
    
    a.ravel(): [ 1  7  5  8  2 13 25  0  3 50 14 28]
    
    index: [ 9 11]
    
    pos: (array([1, 1], dtype=int64), array([1, 1], dtype=int64), array([0, 2], dtype=int64))
    
    np.column_stack(pos): [[1 1 0]
     						[1 1 2]]
    

おすすめ

転載: blog.csdn.net/weixin_42166222/article/details/119894269