我有一个关于仅使用 max(list array( 和 np.max(list array( 之间区别的问题。
这里唯一的区别是 Python 返回代码所需的时间吗?
它们在边缘情况下可能会有所不同,例如包含 NaN 的列表。
import numpy as np
a = max([2, 4, np.nan]) # 4
b = np.max([2, 4, np.nan]) # nan
在这种情况下,NumPy会传播NaN,而Pythonmax
的行为不太确定。
关于数据类型也存在一些微妙的问题:
a = max([10**n for n in range(20)]) # a is an integer
b = np.max([10**n for n in range(20)]) # b is a float
当然,运行时间差异以numpy.max或max记录?哪一个更快?
通常,应该对 Python 列表使用max
,对 NumPy 数组使用np.max
,以尽量减少意外的数量。 例如,我的第二个示例并不是关于np.max
而是关于数据类型转换:使用np.max
列表首先转换为 NumPy 数组,但像10**19
这样的元素太大而无法用 NumPy 整数类型表示,因此它们成为浮点数。