Python max和np.max之间的差异
我有一个关于仅仅使用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
这里唯一的区别是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
不会被选为最大值。