Python - np.argmax(axis=0) は 3D 配列でどのように機能しますか?

okwaves2024-01-25  8

np.argmax(arr, axis=0) はどのように機能するのか、行き詰まっています。 np.argmax(axis=0) が 2D 配列でどのように動作するかを知っています。しかし、この 3D は私を本当に混乱させました。

私のコード:

   arr = np.array([[[ 1,  2,  3],
                   [ 4,  5,  6],
                   [ 7,  8,  9],
                   [10, 11, 12]],
                   
                   [[13, 14, 15],
                   [16, 17, 18],
                   [19, 20, 21],
                   [22, 23, 24]],
                   
                   [[25, 26, 27],
                   [28, 29, 30],
                   [31, 32, 33],
                   [34, 35, 36]]])

操作:

np.argmax(arr, axis = 0)

出力:

array([[2, 2, 2],
       [2, 2, 2],
       [2, 2, 2],
       [2, 2, 2]], dtype=int64)

参考までに - np.argmax(axis=0) が 2D 配列でどのように動作するかは知っています。しかし、この 3D は私を本当に混乱させました。

次元を「平面」、「行」、「列」と呼びます。各行と列の最大値は最後の (2) 平面にあります。寸法が異なると、状況がより明確になる可能性があります。 (4,3,2)、そして価値観はもう少し複雑でした。それでも、この argmax の結果を使用するのは簡単ではありません。

– HPULJ

2020 年 9 月 5 日 1:21

@hpaul わかりました、その「平面」、「行」、「列」です。意味は私には理解できます。しかし、ここで視覚化されているように、さらに多くの次元について私は本当に混乱してしまいます。 4 次元、5 次元、6 次元、またはそれ以上の次元を扱うときに空間イメージを念頭に置いたほうがよいでしょうか、それとも幾何学的具体化を行わずに特定の numpy 象徴性を自動的に使用するほうがよいでしょうか?

– マスファックス

2020 年 9 月 5 日 1:39

1

4d の一例は、カラー イメージのバッチの [image, width, height, color] です。しかし、それらの名前を数値化することは重要ではありません。それらはすべて単なる軸です。名前はアプリケーション固有です。

– HPULJ

2020 年 9 月 5 日 2:26



------------------------

ここで axis=0 とは何かをよりよく理解する必要があります。高さ le として解釈できます長方形の vel。したがって、出力にはその四角形のさまざまなレベルが表示されます。

   level 0       level 1       level 2
[ 1,  2,  3]  [13, 14, 15]  [16, 17, 18]
[ 4,  5,  6]  [16, 17, 18]  [19, 20, 21]
[ 7,  8,  9]  [19, 20, 21]  [22, 23, 24]
[10, 11, 12]  [22, 23, 24]  [25, 16, 27]

次に、argmax は、最大値が達成されるレベルのインデックスを記述します。それらは次のとおりです:

[16, 17, 18]
[19, 20, 21]
[22, 23, 24]
[25, 16, 27]

これは間違いなく、これらのセルのいずれにおいても最上位レベル (番号 2) です。 したがって、すべてのセルの argmax は 2 に割り当てられます。

8

なんという説明でしょう。あなたには脱帽です!過去 2 日間、この問題に悩まされてきました。

– Web 開発ラボ

2020 年 9 月 5 日 19:41

しかし、レベル 0 しか持っていない場合はどうなるでしょうか?つまり: np.random.seed(0)

------------------------

-- ---------- randint_array_2 = np.random.randint(36, size=(1,2,5))

– Web 開発ラボ

2020 年 9 月 5 日 21:02

これでは、出力がすべてゼロになります。ここでは目に見えないレベルで比較しているということですか?

– Web 開発ラボ

2020 年 9 月 5 日 21:03

これは、選択できるレベルが 1 つだけであることを意味します。そのレベル番号は 0 です。前にここで説明したように、3 次元の視覚イメージを想像してみてください。

– マスファックス

2020 年 9 月 5 日 21:06

1

はい、レベルのリストが [0] の場合です。前述の例では、レベルは l になります。[0, 1, 2] として指定されます。そして、これらのレベルのどれに射影の各セルの最大値が含まれるかを決定していました。

– マスファックス

2020 年 9 月 5 日 21:13

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。