즉 제외 NumPy와는 — 그들은 같은 것을 사용할 수 있습니다처럼 보일 세 가지 기능을 가지고 numpy.maximum
있습니다 만 하면서, 요소 현명한 사용 numpy.max
및 numpy.amax
특정 축, 또는 모든 요소에 사용할 수 있습니다. 왜 그 이상이 numpy.max
있습니까? 성능에 미묘한 부분이 있습니까?
(유사 대한 min
대 amin
대 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
을 가져 와서 요소 별 최대 값을 계산하는 것입니다. 여기서 ‘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
계산을 수행하기 위해 호출 해야합니다.
답변
이미 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>
답변
완전성을 위해 Numpy에는 최대 4 개의 관련 기능이 있습니다. 그들은 두 가지 범주로 나뉩니다.
np.amax/np.max
,np.nanmax
: 단일 배열 순서 통계- 및
np.maximum
,np.fmax
: 두 배열 의 요소 별 비교
I. 를 들어 하나의 배열 순서 통계
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
II. 두 배열 의 요소 별 비교
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])
답변
