首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >numpy max vs amax vs max

numpy max vs amax vs max
EN

Stack Overflow用户
提问于 2015-11-06 15:02:46
回答 4查看 304.2K关注 0票数 206

numpy有三个不同的函数,它们似乎可以用于相同的事情--除了numpy.maximum只能按元素使用,而numpy.maxnumpy.amax可以在特定的轴上使用,或者所有的元素。为什么不仅仅是numpy.max?这在性能上有什么微妙之处吗?

( minaminminimum也是如此)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-06 15:13:06

np.max只是np.amax的别名。此函数仅在单个输入数组上工作,并在整个数组中找到最大元素的值(返回一个标量)。或者,它接受一个axis参数,并将沿着输入数组的轴找到最大值(返回一个新数组)。

代码语言:javascript
运行
复制
>>> 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的默认行为是接受两个数组并计算它们的元素级最大值。在这里,“兼容”意味着一个数组可以广播到另一个数组。例如:

代码语言:javascript
运行
复制
>>> b = np.array([3, 6, 1])
>>> c = np.array([4, 2, 9])
>>> np.maximum(b, c)
array([4, 6, 9])

但是np.maximum也是一个通用函数,这意味着它有其他特性和方法,它们在处理多维数组时非常有用。例如,可以计算数组(或数组的特定轴)上的累积最大值:

代码语言:javascript
运行
复制
>>> 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

代码语言:javascript
运行
复制
>>> np.maximum.reduce(d)
9
>>> np.max(d)
9

基本测试表明,这两种方法在性能上是可比较的;它们应该是,就像np.maximum.reduce那样进行计算。

票数 239
EN

Stack Overflow用户

发布于 2015-11-06 15:11:24

您已经说明了为什么np.maximum是不同的-它返回一个数组,该数组是两个数组之间的元素级最大值。

至于np.amaxnp.max:它们都调用相同的函数-- np.max只是np.amax的别名,它们计算数组中所有元素的最大值,或者沿数组的轴。

代码语言:javascript
运行
复制
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>
票数 26
EN

Stack Overflow用户

发布于 2018-10-27 13:48:39

为了完整性,在Numpy中有四个最大相关函数。它们分为两大类:

  • np.amax/np.maxnp.nanmax:用于单数组顺序统计信息
  • np.maximumnp.fmax两个数组的元素比较

I. 顺序统计

NaNs传播子np.amax/np.max及其NaN无知的对应np.nanmax.

  • np.max只是np.amax的别名,因此它们被视为一个函数。 np.max.__name__ 'amax‘>>> np.max是np.amax True
  • np.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.

  • 这两个函数都需要两个数组作为前两个位置args来比较with.x1和x2必须是相同的形状或可以广播np.maximum(x1,x2,/,.);np.fmax(x1,x2,/,.)
  • 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)
  • 按元素划分的函数是),这意味着它们具有一些正常的Numpy函数不具有的特殊属性.类型(np.maximum)<类numpy.ufunc‘>>>>类型(np.fmax)<类numpy.ufunc’>>>>#

最后,同样的规则适用于四个相关的最小函数:

  • np.amin/np.minnp.nanmin
  • np.minimumnp.fmin.
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33569668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档