numpy: argmin() 関数と argmax() 関数のロジックは何ですか? 質問する

numpy: argmin() 関数と argmax() 関数のロジックは何ですか? 質問する

argmaxaxis パラメータと一緒に使用した場合のおよびの出力が理解できませんargmin。例:

>>> a = np.array([[1,2,4,7], [9,88,6,45], [9,76,3,4]])
>>> a
array([[ 1,  2,  4,  7],
       [ 9, 88,  6, 45],
       [ 9, 76,  3,  4]])
>>> a.shape
(3, 4)
>>> a.size
12
>>> np.argmax(a)
5
>>> np.argmax(a,axis=0)
array([1, 1, 1, 1])
>>> np.argmax(a,axis=1)
array([3, 1, 1])
>>> np.argmin(a)
0
>>> np.argmin(a,axis=0)
array([0, 0, 2, 2])
>>> np.argmin(a,axis=1)
array([0, 2, 2])

ご覧のとおり、最大値はポイント (1,1) で、最小値はポイント (0,0) です。したがって、私のロジックでは、次のようになります。

  • np.argmin(a,axis=0)私は予想したarray([0,0,0,0])
  • np.argmin(a,axis=1)私は予想したarray([0,0,0])
  • np.argmax(a,axis=0)私は予想したarray([1,1,1,1])
  • np.argmax(a,axis=1)私は予想したarray([1,1,1])

私の物事の理解の何が間違っているのでしょうか?

ベストアンサー1

引数を追加するとaxis、NumPy は行と列を個別に調べます。引数を指定しない場合は、配列はa単一の 1D 配列に平坦化されます。

axis=0操作が実行されることを意味する2D 配列の列をa順番に処理します。

たとえば、np.argmin(a, axis=0)4つの列のそれぞれにおける最小値のインデックスを返します。各列の最小値は次のように表示されます。大胆な下に:

>>> a
array([[ 1,  2,  4,  7],  # 0
       [ 9, 88,  6, 45],  # 1
       [ 9, 76,  3,  4]]) # 2

>>> np.argmin(a, axis=0)
array([0, 0, 2, 2])

一方、axis=1操作が実行されることを意味します横切っての行a

つまり、には 3 つの行があるため、np.argmin(a, axis=1)が返されます。最初の行の最小値のインデックスは 0 で、2 行目と 3 行目の最小値のインデックスは 2 です。[0, 2, 2]a

>>> a
#        0   1   2   3
array([[ 1,  2,  4,  7],
       [ 9, 88,  6, 45],
       [ 9, 76,  3,  4]])

>>> np.argmin(a, axis=1)
array([0, 2, 2])

おすすめ記事