我从How can I represent an infinite number in Python?
学习了inf我希望找到包含“inf”的数组的最小值
In [330]: residuals
Out[330]:
array([[ 2272.35651718, 1387.71126686, 1115.48728484],
[ 695.08009848, inf, inf],
[ 601.44997093, inf, inf]])
In [331]: min(residuals)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-331-69b09e4201cf> in <module>()
----> 1 min(residuals)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
然而,似乎'inf'是模棱两可的? 有没有一种聪明的方法来找到最小值而不是在这个数组的每个值上运行一个循环?
答案 0 :(得分:5)
此问题与inf
无关,它是使用python的内置min
函数和具有多个维度的numpy数组的副产品。
numpy.min( residuals )
应该做你想做的事情,假设你正在寻找任何子阵列中的最小元素。
答案 1 :(得分:2)
尝试 -
residuals.min()
示例 -
In [6]: import numpy as np
In [7]: a = np.array([[1,2,3,4],[np.inf,4,5,6],[7,8,9,10]])
In [8]: a
Out[8]:
array([[ 1., 2., 3., 4.],
[ inf, 4., 5., 6.],
[ 7., 8., 9., 10.]])
In [9]: a.min()
Out[9]: 1.0
答案 2 :(得分:0)
你有一个矩阵,min不够聪明,不能正确迭代。您可以使用numpy.min
或类似的内容:
min([x for x in y for y in residuals])