개발공부

[Python] Numpy 조건을 만족하는 데이터 구하기 본문

Python/Numpy

[Python] Numpy 조건을 만족하는 데이터 구하기

mscha 2022. 4. 28. 18:01

아래와 같은 2차원 배열 X 가있을 때 다음과 같은 조건을 만족하는 값을 구할 수 있다.

조건을 X[조건]에 넣으면 그에 맞는 값으로 이루어진 넘파이 어레이를 생성한다.

>>>X
array([[36, 66, 62, 17, 50],
       [58, 47,  6, 45, 72],
       [11,  1,  2, 85, 97],
       [12, 64, 21,  3, 33]])

 

1. X 에 70보다 큰 데이터는 몇개가 있나요?

>>> X > 70
array([[False, False, False, False, False],
       [False, False, False, False,  True],
       [False, False, False,  True,  True],
       [False, False, False, False, False]])

>>> (X > 70).sum()
3

 

2. X의 데이터 중에서 70보다 큰 데이터만 가져오시오

>>> X > 70
(X > 70)
(X > 70)
array([[False, False, False, False, False],
       [False, False, False, False,  True],
       [False, False, False,  True,  True],
       [False, False, False, False, False]])
>>> X[X > 70]
array([72, 85, 97])

 

3.

# 넘파이에서의 데이터 억세스를 할때는 
# 조건문에서 사용하는 그리고(and)와 또는(or)를
# 사용하지 않고 & 와 | 로 사용한다.


# X 의 데이터 중에서 50보다 크고 80보다 작은 데이터만 가져오시오
>>> X
array([[ 48,  86,  42,   3, 100],
       [ 52,   2,  20,  14,  85],
       [ 27,  63,  40,  83,  29],
       [ 61,  53,  52,  40,  39]])

>>> (X > 50) & (X < 80)
array([[False, False, False, False, False],
       [ True, False, False, False, False],
       [False,  True, False, False, False],
       [ True,  True,  True, False, False]])
>>> X[(X > 50) & (X < 80)]
array([52, 63, 61, 53, 52])

# X의 데이터 중에서, 30보다 작거나 90보다 큰 데이터만 가져오시오.
>>> (X < 30) | (X > 90)
array([[False, False, False,  True,  True],
       [False,  True,  True,  True, False],
       [ True, False, False, False,  True],
       [False, False, False, False, False]])
>>> X[(X < 30) | (X > 90) ]
array([  3, 100,   2,  20,  14,  27,  29])