python 二维数组的最小值

2023-11-25

我有一个以下结构的数组,针对这个问题进行了简化:

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是我一直在寻找的解决方案,但我不知道它存在,所以我的答案已经解决。


然而,它仅沿单个轴计算并返回沿单个行/列的最小值的索引,而我希望计算整个数组并返回最小值而不是索引。

numpy.argmin默认情况下不沿单个轴求值,默认情况下沿展平矩阵求值并返回展平数组中的线性索引;来自numpy您链接的文档:

默认情况下,索引位于展平数组中,否则沿着指定的轴。

无论哪种方式,使用numpy.amin or numpy.min返回最小值value,或等效于数组arrname use arrname.min()。正如你提到的,numpy.argmin返回index最小值的值(当然,您可以使用此索引通过用它索引数组来返回最小值)。您还可以使用以下方法将其展平为一维数组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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 二维数组的最小值 的相关文章

随机推荐