[Python] numpy 최소, 최대, 조건 색인값 : np.argmin(), np.argmax(), np.where()
Python 분석과 프로그래밍/Python 데이터 전처리 2018. 5. 17. 13:54이번 포스팅에서는 Python numpy 의 메소드, 함수 중에서
- 최소값, 최대값, 혹은 조건에 해당하는 색인(index) 값을 찾기
: np.argmin(), np.argmax(), np.where()
- 최소값, 최대값, 혹은 조건에 맞는 값 찾기
: np.min(), np.max(), x[np.where()]
에 대해서 소개하겠습니다.
분석할 때 꽤 많이 사용되므로 기억해두시면 좋겠습니다.
(1) 최소값(min), 최대값(max): np.min(), np.max() |
x.min(), np.min(x), min(x) 모두 동일한 결과를 반환합니다.
In [1]: import numpy as np In [2]: x = np.array([5, 4, 3, 2, 1, 0]) In [3]: x.min() Out[3]: 0 In [4]: np.min(x) Out[4]: 0 In [5]: x.max() Out[5]: 5 In [6]: np.max(x) Out[6]: 5
|
(2) 최소값, 최대값의 색인 위치: np.argmin(), np.argmax() |
In [7]: x.argmin() Out[7]: 5 In [8]: np.argmin(x) Out[8]: 5 In [9]: x.argmax() Out[9]: 0 In [10]: np.argmax(x) Out[10]: 0
|
(3) 조건에 맞는 값의 색인 위치: np.where() |
배열에서 3과 같거나 큰 값을 가지는 색인의 위치를 알고 싶을 때,
In [11]: np.where(x >= 3) Out[11]: (array([0, 1, 2], dtype=int64),) |
(4) 조건에 맞는 값을 indexing 하기: x[np.where()] |
배열에서 3과 같거나 큰 값을 indexing 하고 싶을 때,
In [12]: x[np.where(x >= 3)] Out[12]: array([5, 4, 3])
|
(5) 조건에 맞는 값을 특정 다른 값으로 변환하기 : np.where(조건, 조건에 맞을 때 값, 조건과 다를 때 값) |
배열의 값이 3과 같거나 크면 3으로 변환하고, 3보다 작으면 그대로 값을 유지하고 싶을 때,
(for loop & if else 조건문을 사용하는 것보다 수십배 빠르므로 매우 유용함)
In [13]: np.where(x >= 3, 3, x) Out[13]: array([3, 3, 3, 2, 1, 0])
|
참고로, 위의 np.where를 사용한 배열 값 변환을 for loop & if else 조건문을 사용해서 써보면 아래와 같습니다. for loop은 데이터 사이즈가 커질 경우 속도가 매우 느려지므로, 위의 대용량 데이터는 벡터화된 연산을 하는 np.where() 함수 사용을 권합니다. .
In [14]: x_2 = [] ...: for i in list(x): ...: if i >= 3: ...: x_2.append(3) ...: else: ...: x_2.append(i) ...: ...: In [15]: x_2 = np.asarray(x_2) In [16]: type(x_2) Out[16]: numpy.ndarray In [17]: x_2 Out[17]: array([3, 3, 3, 2, 1, 0])
|
많은 도움이 되었기를 바랍니다.