numpy的具有看起来他们可被用于同样的东西三个不同的函数—不同之处在于numpy.maximum
可 仅
被用于逐元素,而numpy.max
且numpy.amax
可以在特定轴,或所有元件一起使用。为什么不仅仅存在numpy.max
?在性能上有一些微妙之处吗?
(类似min
vs. amin
vs. minimum
)
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.max()
实际np.maximum.reduce
执行计算的调用。