In [1]:
from IPython.display import display, HTML
display(HTML("<style>.container { width:90% !important; }</style>"))
# 코드 셀의 너비를 조정하는 코드입니다. 신경쓰지 마세요
넘파이의 Boolean indexing¶
In [3]:
import numpy as np
In [4]:
X = np.array([[13, 22, 49, 42, 80],
[91, 63, 58, 20, 34],
[60, 40, 16, 37, 66],
[ 2, 44, 16, 87, 84]])
In [9]:
# 80보다 큰 데이터는 몇개인가?
In [6]:
X > 80
Out[6]:
array([[False, False, False, False, False], [ True, False, False, False, False], [False, False, False, False, False], [False, False, False, True, True]])
In [7]:
np.sum(X > 80)
Out[7]:
3
In [8]:
(X > 80).sum()
Out[8]:
3
In [11]:
# 80보다 큰 데이터를 가져오세요
X[X > 80]
Out[11]:
array([91, 87, 84])
In [12]:
# 50보다 크고 80보다 작은 데이터를 가져오세요
(X > 50) and (X < 80)
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In [12], line 2 1 # 50보다 크고 80보다 작은 데이터를 가져오세요 ----> 2 (X > 50) and (X < 80) ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
and, or 연산자는 조건문에서만 사용하는 것!!!¶
In [ ]:
# 데이터를 가져오는 데이터 억세스에서는
# and, or를 사용하지 않고,
# &, | 를 사용한다.
In [13]:
(X > 50) & (X < 80)
Out[13]:
array([[False, False, False, False, False], [False, True, True, False, False], [ True, False, False, False, True], [False, False, False, False, False]])
In [14]:
X[ (X > 50) & (X < 80) ]
Out[14]:
array([63, 58, 60, 66])
In [15]:
# X의 데이터 중에서 30보다 작거나 90보다 큰 데이터만 가져오시오
X[ (X < 30) | (X > 90)]
Out[15]:
array([13, 22, 91, 20, 16, 2, 16])
In [ ]:
In [ ]:
# 1부터 25까지 순차적으로 들어있는 배열 X를 만들고
# boolean indexing을 이용해서 그 중 홀수만으로 이루어진 배열 Y를 만드시오
In [16]:
X = np.arange(1, 25+1).reshape(5, 5)
In [17]:
X
Out[17]:
array([[ 1, 2, 3, 4, 5], [ 6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25]])
In [18]:
X % 2 == 1
Out[18]:
array([[ True, False, True, False, True], [False, True, False, True, False], [ True, False, True, False, True], [False, True, False, True, False], [ True, False, True, False, True]])
In [19]:
Y = X[X % 2 == 1]
In [20]:
Y
Out[20]:
array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25])
'Python > Numpy' 카테고리의 다른 글
Numpy의 연산 - 브로드캐스팅(Broadcasting) (0) | 2022.11.24 |
---|---|
Numpy ndarray의 데이터 accessing, slicing (0) | 2022.11.24 |
Numpy의 축(axis) 연산 (0) | 2022.11.23 |
Numpy의 난수 배열 생성 random, randint (0) | 2022.11.23 |
Numpy의 배열 생성 arange, linspace, reshape (0) | 2022.11.23 |