Python max和np.max之间的差异

Python max和np.max之间的差异,python,arrays,numpy,max,Python,Arrays,Numpy,Max,我有一个关于仅仅使用max(列表数组)和np.max(列表数组)之间的区别的问题 这里唯一的区别是Python返回代码所需的时间吗?它们可能在边缘情况下有所不同,例如包含NAN的列表 import numpy as np a = max([2, 4, np.nan]) # 4 b = np.max([2, 4, np.nan]) # nan 在这种情况下,NumPy传播NaN,而Python的max的行为不太确定 关于数据类型,还有一些微妙的问题: a = max([10**n fo

我有一个关于仅仅使用max(列表数组)和np.max(列表数组)之间的区别的问题


这里唯一的区别是Python返回代码所需的时间吗?

它们可能在边缘情况下有所不同,例如包含NAN的列表

import numpy as np
a = max([2, 4, np.nan])     # 4
b = np.max([2, 4, np.nan])  # nan
在这种情况下,NumPy传播NaN,而Python的
max
的行为不太确定

关于数据类型,还有一些微妙的问题:

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
当然,运行时间差异记录在


通常,对于Python列表应该使用
max
,对于NumPy数组应该使用
np.max
,以尽量减少意外事件的发生。例如,我的第二个示例并不是关于
np.max
,而是关于数据类型转换:要使用
np.max
,首先将列表转换为NumPy数组,但是像
10**19
这样的元素太大,无法用NumPy整数类型表示,因此它们变成了浮点数

不完全是重复的,但相关:Np.max不打算使用列表数组(它可以)。查找Ndaray,在查看上面评论中的链接后,它会有意义。您所说的“列表数组”是什么意思?Python有列表。NumPy有数组。它们是不同的类型。我不建议依赖Python的
max
对NAN的行为。我怀疑这完全是一个意外的实现。事实上,
max(nan,1.2)
nan
,而不是
1.2
。Python的
max
没有显式地忽略NaN条目;只是在大多数情况下,它内部使用的比较方式都是正确的,因此到目前为止,
nan
不会被选为最大值。