Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy.max函数的作用是什么?_Python_Numpy_Max - Fatal编程技术网

Python numpy.max函数的作用是什么?

Python numpy.max函数的作用是什么?,python,numpy,max,Python,Numpy,Max,我接着写了一段代码如下: while numpy.max(abs(A - B)) > 0.01: 我试图用一些常规Python(数学?)函数替换numpy.max,但我找不到numpy.max的确切功能 我尝试过谷歌搜索,但我只发现: 我想这和numpy.max不一样 以及: 这也不是我需要的 有人知道我如何将这个numpy.max函数复制到一些标准python函数中吗 编辑:我正在使用Python 2.7numpy.max与numpy.amax是一样的: >>> im

我接着写了一段代码如下:

while numpy.max(abs(A - B)) > 0.01:
我试图用一些常规Python(数学?)函数替换
numpy.max
,但我找不到
numpy.max
的确切功能

我尝试过谷歌搜索,但我只发现: 我想这和numpy.max不一样

以及: 这也不是我需要的

有人知道我如何将这个numpy.max函数复制到一些标准python函数中吗


编辑:我正在使用Python 2.7

numpy.max
numpy.amax
是一样的:

>>> import numpy
>>> numpy.max # Notice it says 'amax' in the output
<function amax at 0x0228B5D0>
>>> numpy.max is numpy.amax
True
>>>

请参见下面的演示:

>>> def flatten(lst):
...     for item in lst:
...         if isinstance(item, list):
...             for sub_item in flatten(item):
...                 yield sub_item
...         else:
...             yield item
...
>>> array = [[1, 2, 3], [4, 5, 6]]
>>> max(flatten(array))
6
>>>

在纯Python中不能很容易地复制
np.max
的行为,因为多维数组在Python中不是标准的。如果代码中的
A
B
就是这样的数组,最好保留NumPy函数

对于平面(一维)数组,Python
max
np.max
做同样的事情,可以交换:

>>> a = np.arange(27)
>>> max(a)
26
>>> np.max(a)
26
对于具有多个维度的数组,
max
不起作用:

>>> a = a.reshape(3, 3, 3)
>>> max(a)
ValueError: The truth value of an array with more than one element is ambiguous [...]
>>> np.max(a)
26
默认情况下,
np.max
展平3D数组并返回最大值。(您还可以找到特定轴上的最大值,依此类推。)Python
max
无法做到这一点

要替换
np.max
,需要在数组的轴上编写嵌套循环;有效地尝试在嵌套列表列表中查找最大值。这当然是可能的,但可能会非常缓慢:

>>> max([max(y) for y in x for x in a])
26

根据“numpy.max是由于历史原因而存在的”。请注意,这里的
yield from
依赖于Python 3.3或更高版本。OP没有说明他的版本,所以我更喜欢使用最新版本。但是,如果有人正在运行较旧的版本,只需将
yield from
替换为普通的for循环:
for i in flatte(item):yield i
。这是一个不错的选择,但大多数围绕NumPy构建的项目仍然在2.7上,并且将持续很长时间。NumPy本身现在在Python3中工作得很好,但是太多相关的库和工具都没有,这给许多以NumPy为中心的项目带来了严重的问题。谢谢您的回复。但现在我更困惑了,因为最初的
A
B
实际上是浮动的,而不是数组:@iCodez-这个函数似乎是为了处理数组或标量而编写的。在该代码示例中,
EccenAnom
可以是数组,而不仅仅是标量。(请注意,函数的输入都记录为类似数组的对象。任何涉及时间或日期的内容都将是一个数组,例如,
T1
)在旁注上,原因是
np.min(2.0)
将返回标量(实际上是一个numpy浮点,而不是传入的python浮点)numpy函数被推广用于处理任何形状或大小的数组,包括长度为0的数组。这是整个努比的一种模式。没有理由在
分钟内将其中断。
>>> a = a.reshape(3, 3, 3)
>>> max(a)
ValueError: The truth value of an array with more than one element is ambiguous [...]
>>> np.max(a)
26
>>> max([max(y) for y in x for x in a])
26