답변:
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
을 가져 와서 요소 별 최대 값을 계산하는 것입니다. 여기서 'compatible'은 한 어레이가 다른 어레이로 브로드 캐스트 될 수 있음을 의미합니다. 예를 들면 다음과 같습니다.
>>> 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
계산을 수행하기 위해 호출 해야합니다.
amax
이 점에서 요소 별 비교에 최적화되어 있지 않습니다. 모든 입력은 Numpy 배열이어야하므로 작업이 실행되기 전에 목록이 변환됩니다 (두 모양이 동일하다고 가정). amax
구체적으로 문서는 그것이 maximum
더 빠르다고 말합니다 .
amax
수 있다고 생각 합니다. max
단항 우푼 을 만들 필요가 거의없는 것 같습니다 . 나는 amax
ufuncs가 실제로 (NumPy의 부모로부터 온 숫자) 전에 존재했기 때문에 후손을 위해 유지된다고 생각 합니다.
maximum.reduce
성능이 바람직하다 : The Python function max() will find the maximum over a one-dimensional array, but it will do so using a slower sequence interface. The reduce method of the maximum ufunc is much faster. Also, the max() method will not give answers you might expect for arrays with greater than one dimension.
[...]
max()
함수가 아니라 파이썬을 언급한다고 생각 numpy.max()
하지만, 파이썬 max()
이 느리다는 것을 분명히 지적 할 가치가 있습니다.
이미 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>
from numpy import max as np_max
제네릭과의 충돌을 피하기 위해 하고 max
있었다 . amax
완전성을 위해 Numpy에는 최대 4 개의 관련 기능이 있습니다. 그들은 두 가지 범주로 나뉩니다.
np.amax/np.max
, np.nanmax
: 단일 배열 순서 통계np.maximum
, np.fmax
: 두 배열 의 요소 별 비교NaN 전파자 np.amax/np.max
와 NaN 무식한 대응 자 np.nanmax
.
np.max
의 별칭 np.amax
일 뿐이 므로 하나의 함수로 간주됩니다.
>>> np.max.__name__
'amax'
>>> np.max is np.amax
True
np.max
NaN은 np.nanmax
무시하고 NaN은 무시합니다.
>>> np.max([np.nan, 3.14, -1])
nan
>>> np.nanmax([np.nan, 3.14, -1])
3.14
NaN 전파자 np.maximum
와 NaN 무식 단 np.fmax
.
두 함수 모두 비교할 첫 번째 두 위치 인수로 두 개의 배열이 필요합니다.
# x1 and x2 must be the same shape or can be broadcast
np.maximum(x1, x2, /, ...);
np.fmax(x1, x2, /, ...)
np.maximum
NaN은 np.fmax
무시하고 NaN은 무시합니다.
>>> np.maximum([np.nan, 3.14, 0], [np.NINF, np.nan, 2.72])
array([ nan, nan, 2.72])
>>> np.fmax([np.nan, 3.14, 0], [np.NINF, np.nan, 2.72])
array([-inf, 3.14, 2.72])
요소 별 함수는 np.ufunc
( Universal Function ) 이며, 일반 Numpy 함수에는없는 특별한 속성이 있습니다.
>>> type(np.maximum)
<class 'numpy.ufunc'>
>>> type(np.fmax)
<class 'numpy.ufunc'>
>>> #---------------#
>>> type(np.max)
<class 'function'>
>>> type(np.nanmax)
<class 'function'>
마지막으로, 네 가지 최소 관련 기능에 동일한 규칙이 적용됩니다 .
np.amin/np.min
, np.nanmin
;np.minimum
, np.fmin
.np.maximum
요소 별 비교뿐만 아니라 요소 별 배열과 단일 값 비교
>>>np.maximum([23, 14, 16, 20, 25], 18)
array([23, 18, 18, 20, 25])
amax
와 같은 (루트) 목적으로 사용할 수 있지만maximum
,numpy.amax([a1, a2], axis=0)
이 동작에 최적화되지 않았numpy.maximum
습니까? 마찬가지로 추가 된 기능numpy.amax
(예 :axis
매개 변수)이ufunc
?