- 출처: https://www.tutorialspoint.com/numpy/images/array.jpg
import numpy as np
x = np.zeros((3, 3))
print(x)
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]]
x + 1 # -, *, **, % 등등이 사용가능
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
y = x + 10
y % 2 == 0 #boolean도 가능
array([[ True, True, True],
[ True, True, True],
[ True, True, True]])
위의 브로드 캐스팅 Rule에 shape이 다를경우 어떠한 경우에서 연산이 가능한지 설명했는데 이를 에시를 통해서 알아보도록 하겠다.
{: width="80%" height="80%"}
코드를 통해서 해당하는 결과가 나오는지 확인해보도록하겟다.
a = np.zeros((3, 3, 4))
b = np.arange(3).reshape(3, 1)
c = np.arange(12).reshape(3, 4)
d = np.arange(4).reshape(1, 4)
#1
print(a.shape)
print(b.shape)
a + b
(3, 3, 4)
(3, 1)
array([[[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.]],
[[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.]],
[[0., 0., 0., 0.],
[1., 1., 1., 1.],
[2., 2., 2., 2.]]])
#2
print(a.shape)
print(c.shape)
a + c
(3, 3, 4)
(3, 4)
array([[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]],
[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]],
[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]]])
print(a.shape)
print(d.shape)
a + d
(3, 3, 4)
(1, 4)
array([[[0., 1., 2., 3.],
[0., 1., 2., 3.],
[0., 1., 2., 3.]],
[[0., 1., 2., 3.],
[0., 1., 2., 3.],
[0., 1., 2., 3.]],
[[0., 1., 2., 3.],
[0., 1., 2., 3.],
[0., 1., 2., 3.]]])
조건문을 이용하여 True or False로 인덱싱 하는 기법
x = np.random.randint(1, 100, size=10)
print(x)
[74 38 61 35 6 41 53 97 38 9]
even_mask = x % 2 == 0
print(even_mask) #bool list 를 마스크로 이름을 많이 지음
[ True True False False True False False False True False]
x[even_mask] #True인 값만 뽑아낸다
array([74, 38, 6, 38])
x[x % 2 == 0]
array([74, 38, 6, 38])
x[(x % 2 == 0) & (x > 30)] #짝수이고 30을 넘는 것들만 인덱싱
array([74, 38, 38])