如何返回numpy中的所有最小索引

2024-09-27 17:51:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在阅读argmin function in numpy的文档时有点困惑。 看起来它应该做的是:

读这个

Return the indices of the minimum values along an axis.

我可以假设

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

将返回一个包含所有索引的数组:它将是[3, 4, 5, 7]

但它只返回3,而不是这个。抓到哪里了,或者我该怎么做才能得到我的结果?


Tags: ofthein文档numpyanreturnnp
3条回答

假设您想要列表的索引,而不是numpy数组,请尝试

my_list = [5, 3, 2, 1, 1, 1, 6, 1]
np.where(my_list == min(my_list))[0]

索引[0]是因为numpy返回答案的元组,而不返回任何内容(答案是numpy数组)。别问我为什么。

当您考虑多维数组时,该文档更有意义。

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

在指定轴的情况下,argmin沿着给定轴获取一维子数组,并返回每个子数组最小值的第一个索引。它不会返回单个最小值的所有索引。

要获取最小值的所有索引,您可以

numpy.where(x == x.min())

请参阅^{}(由numpy.argmin的文档引用)的文档:

In case of multiple occurrences of the maximum values, the indices corresponding to the first occurrence are returned.

文档的措辞(“索引”而不是“索引”)是指提供axis时的多维情况。

所以,你不能用np.argmin来做。相反,这将起作用:

np.where(arr == arr.min())

相关问题 更多 >

    热门问题