np.max处理整数时返回结果异常:为何np.max(-2,0)与Python内置max(-2,0)输出不同?
为什么
np.max(-2, 0)和内置max(-2, 0)返回结果不一样? 这完全是因为两个函数的设计逻辑和用途根本不一样,不是bug哦!
先说说Python内置的max函数:它的作用是接收任意多个独立的参数,然后返回这些参数里的最大值。比如max(-2, 0)就是直接比较这两个整数,当然会返回0。
而np.max(也就是numpy.max)是专门为numpy数组设计的函数,它的参数规则完全不同:
- 第一个参数必须是数组(或者可以被numpy转换成数组的对象,比如列表)
- 第二个参数是可选的
axis,用来指定沿着数组的哪个维度取最大值
当你写np.max(-2, 0)的时候,numpy会先把单个整数-2转换成一个0维numpy数组,然后处理axis=0的请求。但0维数组根本没有轴可言,所以它直接返回数组本身的值-2,这完全符合numpy的设计逻辑。
如果想用numpy实现和内置max(-2, 0)一样的效果,你需要把这两个数放到一个数组里作为第一个参数:
np.max([-2, 0]) # 这时候会返回0,和内置max结果一致
简单总结一下:
- 内置
max:处理多个独立值的最大值比较,参数是多个待比较的元素 np.max:处理数组(或类数组)在指定轴上的最大值,第一个参数是数组,第二个参数是轴方向
内容的提问来源于stack exchange,提问作者Zebraboard
相关产品推荐
相关产品推荐

