이전 포스팅에서는
 
 - 범용함수(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 를 참고하시기 바랍니다.

 

많은 도움 되었기를 바랍니다.

 

 

 

728x90
반응형
Posted by Rfriend
,