갈루아의 반서재

728x90

Comparison operators and value testing


동일한 사이즈의 배열에서 원소 단위로 비교 가능

반환값은 True/False 이며, 결과값은 배열은 저장가능

>>> a=np.array([1,3,0], float)
>>> b=np.array([0,3,2], float)
>>> a > b
array([ True, False, False], dtype=bool)

>>> a == b
array([False,  True, False], dtype=bool)
>>> a <= b
array([False,  True,  True], dtype=bool)

# 결과값 배열로 저장

>>> c = a>b
>>> c
array([ True, False, False], dtype=bool)
>>>


broadcasting 을 통해 단일값과도 비교 가능

>>> a = np.array([1,3,0], float)
>>> a > 2
array([False,  True, False], dtype=bool)
>>>


any / all 연산자 사용 가능

>>> c = np.array ([True, False, False], bool)

# 하나라도 True 인지 결과값 반환 

>>> any(c)
True

# 전부 True 인지 결과값 반환

>>> all(c)
False
>>>


logical_and, logical_or, and logical_not 와 같은 특수 함수 

# 두 개의 조건을 모두 만족하는지에 대한 결과값 반환

>>> a = np.array([1,3,0], float)
>>> np.logical_and(a>0, a<3)
array([ True, False, False], dtype=bool)


>>> b = np.array([True, False, True], bool)
>>> np.logical_not(b)
array([False,  True, False], dtype=bool)

>>> c=np.array([False, True, False], bool)


# b, c 각각의 원소에 대해 or 연산 수행

>>> np.logical_or(b,c)
array([ True,  True,  True], dtype=bool)
>>>


# logical_or 결합연산의 예

>>> x = np.array([True, True, False, False])
>>> y = np.array([True, False, True, False])
>>> z = np.array([False, False, False, False])
>>> np.logical_or(np.logical_or(x, y), z)
array([ True,  True,  True,  False], dtype=bool)


where 연산자

# a != 0 이라는 조건에 맞으면 (즉, True) 이면 1/a 연산 수행

# a != 0 이라는 조건에 맞지 않는 경우에는 a 연산 수행

>>> a=np.array([1,3,0], float)
>>> np.where(a != 0, 1 / a, a)
array([ 1.        ,  0.33333333,  0.        ])
>>> np.where(a > 0, 3, 2)
array([3, 3, 2])



nonzero()

# 0이 아닌 원소의 tuple of indices 반환  

>>> a = np.array([[0,1],[3,0]], float)

>>> a.nonzero()
(array([0, 1]), array([1, 0]))



isnan() / isfinite()

#  isnan()는 NaN ("not a number"), 말 그대로 number가 아니면 True

# isfinite()는 유한한 값이면 True
>>> a = np.array([1, np.NaN, np.Inf], float)
>>> a
array([  1.,  nan,  inf])
>>> np.isnan(a)
array([False,  True, False], dtype=bool)
>>> np.isfinite(a)
array([ True, False, False], dtype=bool)
>>>





728x90