- まずは二次元配列を見てみましょう
最大 2 つの値の位置インデックスを取得したいとします。a = np.array([[1, 7, 5], [8, 2, 13]])
- まず 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
- まず 2 次元配列を 1 次元配列に拡張し、ソートされたインデックス添字を取得します。
- 三次元、三次元(多次元)と二次元のステップが同じであることを試してください
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]]
【Python】Numpy多次元配列の最大値のインデックスを取得する
おすすめ
転載: blog.csdn.net/weixin_42166222/article/details/119894269
ランキング