我有一个以下结构的数组,针对这个问题进行了简化:
8 2 3 4 5 6
3 6 6 7 2 6
3 8 5 1 2 9
6 4 2 7 8 3
我希望在此二维数组中找到最小值,但是使用内置的 min 函数会返回值错误:
ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
我研究了使用 np.argmin 的替代方法:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.argmin.html
但是,它仅沿单个轴进行评估并返回沿单个行/列的最小值的索引,而我希望评估整个数组并返回最低值而不是索引。
如果可以返回数组中最低项的索引值,那么这也是可取的,因为可以很容易地找到最低值。
编辑:感谢下面的评论 np.min
是我一直在寻找的解决方案,我不知道它存在,所以我的答案已经解决了。
原文由 cd123 发布,翻译遵循 CC BY-SA 4.0 许可协议
numpy.argmin
默认不沿单轴求值,默认是沿展平矩阵求值,返回展平数组中的线性索引;来自numpy
您链接的文档:Either way, use
numpy.amin
ornumpy.min
to return the minimum value , or equivalently for an arrayarrname
usearrname.min()
.正如您提到的,numpy.argmin
返回最小值的 _索引_(当然,您可以使用该索引通过用它索引数组来返回最小值)。您还可以使用arrname.flatten()
展平为一维数组,并将其传递给内置的min
函数。以下四种方法产生你想要的。