我为以下问题简化了以下结构的数组:
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/generation/numpy.argmin.html
但是,它仅沿单个轴求值,并沿单个行/列返回最小值的索引,而我希望对整个数组求值,而返回最小值而不是索引。
如果可以返回数组中最低项目的索引值,那么这也是优选的,因为可以轻松找到最低值。
编辑:由于下面的评论np.min
是我正在寻找的解决方案,我不知道它的存在,所以我的答案就解决了。
但是,它仅沿单个轴求值,并沿单个行/列返回最小值的索引,而我希望对整个数组求值,而返回最小值而不是索引。
numpy.argmin
默认情况下不沿单轴求值,默认值是沿展平的矩阵求值,它返回展平数组中的线性索引;从numpy
您链接的文档中:
默认情况下,索引位于平面数组中,否则沿指定的轴。
无论哪种方式,使用numpy.amin
或numpy.min
回的最小值,或等效为一个阵列arrname
使用arrname.min()
。如前所述,numpy.argmin
返回最小值的索引(当然,您可以使用该索引通过对数组进行索引来返回最小值)。您还可以使用展平为一个单一维度的数组,arrname.flatten()
并将其传递给内置min
函数。
以下四种方法可以产生所需的结果。
import numpy as np
values = np.array([
[8,2,3,4,5,6],
[3,6,6,7,2,6],
[3,8,5,1,2,9],
[6,4,2,7,8,3]])
values.min() # = 1
np.min(values) # = 1
np.amin(values) # = 1
min(values.flatten()) # = 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句