在一个浮点数数组中找到最小值。

35

如何在Python中找到一个包含100个浮点数的数组中的最小值?

我已经尝试使用import numpy导入darr数组后,使用minindex=darr.argmin()print darr[minindex]

但是我遇到了以下错误:

AttributeError: 'list' object has no attribute 'argmin'

可能出现什么问题?有更好的替代方法吗?


两位回答者都感谢你,但是完全不使用numpy似乎更好。 - pjehyun
4个回答

85

Python内置了一个min()函数

>>> darr = [1, 3.14159, 1e100, -2.71828]
>>> min(darr)
-2.71828

1
如果你的(numpy)数组超过一维,则必须使用darr.min()而不是min(darr) - Mead

25
如果想要使用numpy,你必须将darr定义为一个numpy数组,而不是一个list
import numpy as np
darr = np.array([1, 3.14159, 1e100, -2.71828])
print(darr.min())

darr.argmin() 将给出对应于最小值的索引。

你之前出现错误的原因是因为 argmin 是一个 numpy 数组理解的方法,但不适用于 Python 的 lists


3
虽然在底层,np.amin(darr) 实际上调用了 np.asarray(darr).min(),但由于额外的 __array_wrap__ 代码,它要慢大约50%。 - unutbu

0
你需要迭代这个二维数组以获取每一行的最小值,然后将任何获得的最小值推入另一个数组中,最后你需要获取推入每个最小行值的数组的最小值。
def get_min_value(self, table):
    min_values = []
    for i in range(0, len(table)):
        min_value = min(table[i])
        min_values.append(min_value)

    return min(min_values)

0

如果要在数组中查找最小值,可以尝试以下代码:

>>> mydict = {"a": -1.5, "b": -1000.44, "c": -3}
>>> min(mydict.values())
-1000.44

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接