2017-01-28 26 views
1

ここに何か不足していますか?私は、次のスニペットでnp.maxは、任意のポインタのための[0, 4] ...Numpy max軸に沿って

>>> a 
    array([[1, 2], 
      [0, 4]]) 

>>> np.max(a, axis=0) 
    array([1, 4]) 

感謝を返すだろうと予想されます。

答えて

4

最大値を含む行を表示するように見えますか?

max(axis=0)は、[1,0]と[2,4]の最大値を別々に返します。

argmax axisパラメータを指定しないと、配列全体の最大値が平坦化された形で求められます。我々が使用する必要があり、行番号にそのインデックスを有効にするにはunravel_index

In [464]: a.argmax() 
Out[464]: 3 
In [465]: np.unravel_index(3,(2,2)) 
Out[465]: (1, 1) 
In [466]: a[1,:] 
Out[466]: array([0, 4]) 

または1つの式で:

In [467]: a[np.unravel_index(a.argmax(), a.shape)[0], :] 
Out[467]: array([0, 4]) 

あなたは答えの長さから見ることができるように、それに沿って最大の通常の定義ではありません/軸上にある。

Sum along axis in numpy arrayは、「軸に沿った」という意味をより深く理解するかもしれません。同じ定義がsum,meanおよびmax操作に適用されます。最初のノルムを計算し、最大normと行を選択する

===================

normは、同じ方法でaxisパラメータを使用します。

In [537]: np.linalg.norm(a,axis=1) 
Out[537]: array([ 2.23606798, 4.  ]) 
In [538]: np.argmax(_) 
Out[538]: 1 
In [539]: a[_,:] 
Out[539]: array([0, 4]) 
+0

ああ... max()は最大の行/列(要素の平方和の点で測定)を返していると思っていました。ありがとう。 – AIjunkie

+0

'norm'を使って行をランク付けする例を追加しました。 – hpaulj

関連する問題