numpy有三个不同的函数,它们似乎可以用于相同的事情--除了numpy.maximum
只能按元素使用,而numpy.max
和numpy.amax
可以在特定的轴上使用,或者所有的元素。为什么不仅仅是numpy.max
?这在性能上有什么微妙之处吗?
( min
对amin
和minimum
也是如此)
发布于 2015-11-06 15:13:06
np.max
只是np.amax
的别名。此函数仅在单个输入数组上工作,并在整个数组中找到最大元素的值(返回一个标量)。或者,它接受一个axis
参数,并将沿着输入数组的轴找到最大值(返回一个新数组)。
>>> a = np.array([[0, 1, 6],
[2, 4, 1]])
>>> np.max(a)
6
>>> np.max(a, axis=0) # max of each column
array([2, 4, 6])
np.maximum
的默认行为是接受两个数组并计算它们的元素级最大值。在这里,“兼容”意味着一个数组可以广播到另一个数组。例如:
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])
但是np.maximum
也是一个通用函数,这意味着它有其他特性和方法,它们在处理多维数组时非常有用。例如,可以计算数组(或数组的特定轴)上的累积最大值:
>>> d = np.array([2, 0, 3, -4, -2, 7, 9])
>>> np.maximum.accumulate(d)
array([2, 2, 3, 3, 3, 7, 9])
这在np.max
中是不可能的。
当使用np.maximum
时,您可以在一定程度上使np.max
模仿np.maximum.reduce
。
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9
基本测试表明,这两种方法在性能上是可比较的;它们应该是,就像np.maximum.reduce
那样进行计算。
发布于 2015-11-06 15:11:24
您已经说明了为什么np.maximum
是不同的-它返回一个数组,该数组是两个数组之间的元素级最大值。
至于np.amax
和np.max
:它们都调用相同的函数-- np.max
只是np.amax
的别名,它们计算数组中所有元素的最大值,或者沿数组的轴。
In [1]: import numpy as np
In [2]: np.amax
Out[2]: <function numpy.core.fromnumeric.amax>
In [3]: np.max
Out[3]: <function numpy.core.fromnumeric.amax>
发布于 2018-10-27 13:48:39
为了完整性,在Numpy中有四个最大相关函数。它们分为两大类:
np.amax/np.max
,np.nanmax
:用于单数组顺序统计信息np.maximum
,np.fmax
:两个数组的元素比较I. 顺序统计
NaNs传播子np.amax/np.max
及其NaN无知的对应np.nanmax
.
np.max
只是np.amax
的别名,因此它们被视为一个函数。
np.max.__name__ 'amax‘>>> np.max是np.amax Truenp.max
传播NaNs,而np.nanmax
忽略NaNs.。np.max(np.nan,3.14,-1) nan >>> np.nanmax(np.nan,3.14,-1) 3.14二. 元素间的比较
NaNs传播子np.maximum
及其NaNs无知的np.fmax
.
np.maximum
传播NaNs,而np.fmax
忽略NaNs.。np.maximum(np.nan,3.14,0,np.NINF,np.nan,2.72)数组( nan,nan,2.72) >>> np.fmax(np.nan,3.14,0,np.NINF,np.nan,2.72)数组(-inf,3.14,2.72)最后,同样的规则适用于四个相关的最小函数:
np.amin/np.min
,np.nanmin
;np.minimum
,np.fmin
.https://stackoverflow.com/questions/33569668
复制相似问题