39

numpy の argmin 関数のドキュメントを読むのに少し混乱しています。それは仕事をするべきであるように見えます:

これを読んで

軸に沿った最小値のインデックスを返します。

私はそれを仮定するかもしれません

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

すべてのインデックスの配列を返します:[3, 4, 5, 7]

しかし、これの代わりに のみを返します3。問題はどこにありますか、または結果を得るにはどうすればよいですか?

4

4 に答える 4

58

多次元配列について考えると、そのドキュメントはより理にかなっています。

>>> 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())
于 2013-09-02T23:57:06.760 に答える
21

のドキュメントを参照してくださいnumpy.argmax( のドキュメントで参照されていますnumpy.argmin):

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

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

だから、あなたはそれを行うことはできませんnp.argmin。代わりに、これは機能します:

np.where(arr == arr.min())
于 2013-09-02T23:56:55.457 に答える