[Python NumPy] 범용 함수(Universal Functions) : (1-6) 단일 배열 unary ufuncs : 논리형 함수(Logical function)
Python 분석과 프로그래밍/Python 데이터 전처리 2017. 3. 22. 00:14이전 포스팅에서는
- 범용함수(universal function, ufuncs)의 정의 및 유형
(1) 1개의 배열에 대한 ufuncs (Unary universal functions) 중에서
- (1-1) 올림 및 내림 범용 함수 (rounding ufuncs)
- (1-2) 합(sums), 곱(products), 차분(difference), 기울기(gradient) 범용함수
- (1-3) 지수함수(exponential function), 로그함수 (logarithmic function)
- (1-4) 삼각함수(trigonometric functions)
- (1-5) 절대값(absolute), 제곱근(square root), 제곱값(square), 정수와 소수점 값 분리(integral and fractional parts), 부호(sign) 판별 함수
등에 대해서 알아보겠습니다.
이번 포스팅에서는 (1-6) 1개 배열 대상의 논리 범용 함수(Logic Unary ufuncs) 에 대해서 알아보겠습니다. 논리 함수(logic functions)는 참(True) 또는 거짓(False)의 boolean 값을 반환합니다.
(1-6-1) 배열의 원소에 대한 논리 함수 (logic functions for array contents) |
(1-6-1-1) 배열에 NaN(Not a Number) 포함 여부 확인 함수 : np.isnan(x) |
# isnan : Test element-wise for NaN(Not a Number) and return result as a boolean array
In [1]: import numpy as np In [2]: a = np.array([0, 1, 2, np.nan, 4, np.inf, np.NINF, np.PINF]) In [3]: a Out[3]: array([ 0., 1., 2., nan, 4., inf, -inf, inf]) In [4]: np.isnan(a) Out[4]: array([False, False, False, True, False, False, False, False], dtype=bool)
|
(1-6-1-2) 배열에 유한수(finite number) 포함 여부 확인 함수 : np.isfinite(x) |
# isfinite : Test element-wise for finiteness (not infinity or not Not a Number)
In [5]: a Out[5]: array([ 0., 1., 2., nan, 4., inf, -inf, inf]) In [6]: np.isfinite(a) Out[6]: array([ True, True, True, False, True, False, False, False], dtype=bool)
|
(1-6-1-3) 배열에 무한수(infinite number) 포함 여부 확인 함수 : np.isinf(x) |
# isinf : Test element-wise for positive or negative infinity
In [7]: a Out[7]: array([ 0., 1., 2., nan, 4., inf, -inf, inf])
In [8]: np.isinf(a) Out[8]: array([False, False, False, False, False, True, True, True], dtype=bool)
|
(1-6-1-4) 배열에 음의 무한수 포함 여부 : np.isneginf(x) |
# isneginf : Test element-wise for negative infinity, return result as bool array
In [9]: a Out[9]: array([ 0., 1., 2., nan, 4., inf, -inf, inf])
In [10]: np.isneginf(a) Out[10]: array([False, False, False, False, False, False, True, False], dtype=bool)
|
(1-6-1-5) 배열에 양의 무한수 포함 여부 확인 함수 : np.isposinf(x) |
# isposinf : Test element-wise for positive infinity, return result as bool arry In [11]: a Out[11]: array([ 0., 1., 2., nan, 4., inf, -inf, inf])
In [12]: np.isposinf(a) Out[12]: array([False, False, False, False, False, True, False, True], dtype=bool)
|
(1-6-2) 참 확인 논리 함수 (Logic functions for truth value testing) |
(1-6-2-1) 배열의 모든 원소가 참(True) 인지 평가하는 함수 : np.all() |
축(no axis, axis=0, axis=1) 에 따라서 어떻게 참(True) 여부를 평가하는지 유심히 보시기 바랍니다.
# np.all() : Test whether all array elements along a given axis evaluate to True
In [13]: np.all([[True,False],[True,True]]) Out[13]: False In [14]: np.all([[True,False],[True,True]], axis=0) Out[14]: array([ True, False], dtype=bool)
In [15]: np.all([[True,False],[True,True]], axis=1) Out[15]: array([False, True], dtype=bool)
|
(1-6-2-2) 배열의 1개 이상의 원소가 참(True) 인지 평가하는 함수 : np.any() |
# np.any() : Test whether any array elements along a given axis evaluate to True
In [16]: np.any([[True,False],[True,True]]) Out[16]: True In [17]: np.any([[True,False],[True,True]], axis=0) Out[17]: array([ True, True], dtype=bool) In [18]: np.any([[True,False],[True,True]], axis=1) Out[18]: array([ True, True], dtype=bool)
In [21]: np.any([[False,False],[True,True]], axis=0) Out[21]: array([ True, True], dtype=bool)
In [22]: np.any([[False,False],[True,True]], axis=1) Out[22]: array([False, True], dtype=bool)
|
(1-6-3) 단일 배열 원소에 대한 논리 연산(Logical operations)을 위한 논리 함수 |
(1-6-3-1) 배열 원소가 조건을 만족하지 않는 경우 참 반환 : np.logical_not(condition) |
# logical_not : Compute the truth value of NOT x element-wise, equivalent to -x
In [23]: b = np.array([0, 1, 2, 3, 4]) In [24]: np.logical_not( b <= 2 ) Out[24]: array([False, False, False, True, True], dtype=bool)
|
2개 배열 간 함수인 Binary Universal Unfctions(Ufuncs) 소개는 http://rfriend.tistory.com/286 를 참고하시기 바랍니다.
많은 도움 되었기를 바랍니다.