argmax
axis パラメータと一緒に使用した場合のおよびの出力が理解できません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])