1. ホーム
  2. python

[解決済み] numpyのmaxとamaxとmaxの比較

2022-03-03 17:33:49

質問

numpyには3つの異なる関数があり、それらは同じことに使えるように思われます。 numpy.maximum できる のみ は要素単位で使用され、一方 numpy.maxnumpy.amax は、特定の軸、またはすべての要素で使用することができます。 なぜ numpy.max ? パフォーマンス上、何か微妙なところがあるのでしょうか?

(同様に min vs. amin vs. minimum )

解決方法は?

np.max の単なるエイリアスです。 np.amax . この関数は シングル 入力配列中の最大要素の値を求めます(スカラーを返します)。あるいは,入力配列に axis 引数を取り、入力配列のある軸に沿った最大値を求めます (新しい配列を返します)。

>>> a = np.array([[0, 1, 6],
                  [2, 4, 1]])
>>> np.max(a)
6
>>> np.max(a, axis=0) # max of each column
array([2, 4, 6])

のデフォルトの動作は np.maximum を取ることです。 配列の要素ごとの最大値を計算します。ここで、「互換性がある」とは、一方の配列を他方の配列にブロードキャストできることを意味します。例えば

>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])

しかし np.maximum はまた ユニバーサル関数 これは、多次元配列を扱うときに便利な他の機能やメソッドを持っていることを意味します。例えば,配列(または配列の特定の軸)上の累積最大値を計算することができます.

>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])

を使用することはできません。 np.max .

を作ることができます。 np.maximum を模倣する np.max を使用する場合、ある程度は np.maximum.reduce :

>>> np.maximum.reduce(d)
9
>>> np.max(d)
9

基本的なテストでは、この2つのアプローチは同等のパフォーマンスであることが示唆されています。 np.max() 実際に np.maximum.reduce を使用して計算を行います。