Python:带'inf'的数组的最小值

时间:2015-07-21 15:48:45

标签: python

我从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'是模棱两可的? 有没有一种聪明的方法来找到最小值而不是在这个数组的每个值上运行一个循环?

3 个答案:

答案 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])