2013-09-02 12 views
21

argmin function in numpyのドキュメントを読んで少し混乱します。軸に沿ってこのnumpyのすべての最小インデックスを返す方法

リターン・最小値のインデックスを読む

: はそれが仕事をする必要があるように見えます。 [3, 4, 5, 7]

になるしかし、これに代えて、それが唯一の3返します:

私は

np.argmin([5, 3, 2, 1, 1, 1, 6, 1]) 

は、すべてのインデックスの配列を返すことを前提とすることがあります。キャッチはどこにありますか、私の結果を得るために何をすべきですか?

答えて

31

多次元配列について考えると、その説明は意味があります。指定された軸と

>>> x = numpy.array([[0, 1], 
...     [3, 2]]) 
>>> x.argmin(axis=0) 
array([0, 0]) 
>>> x.argmin(axis=1) 
array([0, 1]) 

argminは、所与の軸に沿って一次元サブアレイを取り、それぞれのサブアレイの最小値の最初のインデックスを返します。 1つの最小値のすべてのインデックスを返しません。最小値のすべてのインデックスを取得するには

、あなたは

numpy.where(x == x.min()) 
を行うことができます
13

は(numpy.argminためのドキュメントによって参照される)numpy.argmaxのドキュメントを参照してください:

最大値の複数の発生の場合には、最初の発生に対応するインデックスが返されます。

axisが提供されている場合、ドキュメントの句読点(「インデックス」ではなく「インデックス」)は多次元の場合を指します。

だから、np.argminで行うことはできません。代わりに、これは動作します:

np.where(arr == arr.min()) 
関連する問題