
*day2์ ํ๋ ๋ด์ฉ๋ค์ ์ ์ธํ๊ณ ์์ฑํ์ต๋๋ค.
numpy์ randomํจ์๋ฅผ ์ด์ฉํ์ฌ ๋๋ค ๋ฐฐ์ด์ ์์ฑํด๋ดค์ต๋๋ค.
randn()์ ๋ชจ์์ ์ธ์๋ก ์ฃผ์ด ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค. ์ด๋, randn()์ ๋ค์ด๊ฐ ์ธ์์ ์์๋๋ก ์ฐจ์์ ํฌ๊ธฐ๊ฐ ์ ํด์ง๋๋ค.
normal()์ ์ ๊ท ๋ถํฌ์ ๋ง๊ฒ ์์ฑํ๋ ํจ์๋ก์ ๋ชจ์์ size ์ธ์๋ฅผ ํตํด ์ ๋ฌํ์ฌ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค. ์ด๋ ํ๊ท (mean)๊ณผ ํ์คํธ์ฐจ(std)๊ฐ์ ๊ฐ๊ฐ loc, scale ์ธ์๋ฅผ ํตํด ์ง์ ํ ์ ์์ต๋๋ค.
randint(start, end, size)๋ ์์์ ์ ์๋ค๋ก ์ฑ์์ง ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค. ์ด๋ ์ ์ ๋ฒ์๋ start ์ด์ end ๋ฏธ๋ง์ผ๋ก, size์ ๋ชจ์์ ์ธ์๋ก ์ ๋ฌํฉ๋๋ค.
#์ค์ต์ฝ๋
import numpy as np
# 3 x 2์ ๋ชจ์์ ๊ฐ์ง ๋ฐฐ์ด์ ๊ฐ์ฐ์์ ๋ถํฌ์ ๋ฐ๋ผ ๋๋คํ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
randn_arr = np.random.randn(3,2)
print(randn_arr)
>>>[[0.13877501 -1.02584702]
[0.88228595 -0.08836542]
[-1.21212413 0.54791626]]
# 3 x 2์ ๋ชจ์์ ๊ฐ์ง ๋ฐฐ์ด์ ๋๋คํ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
rand_arr = np.random.normal(size=(3, 2))
print(rand_arr)
>>>[[-1.25582381 -0.03418971]
[-0.6234516 0.34737055]
[ 0.79151938 1.63548097]]
# 3 x 2์ ๋ชจ์์ ๊ฐ์ง ๋ฐฐ์ด์ ์ ๊ท ๋ถํฌ์ ๋ฐ๋ผ ๋๋คํ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
rand_normal_arr = np.random.normal(loc = 3, scale = 0.25, size=(3, 2))
print(rand_normal_arr)
>>>[[2.87919609 2.95184 ]
[2.97402801 3.44054116]
[2.77450037 3.24502051]]
# 3 x 2์ ๋ชจ์์ ๊ฐ์ง๊ณ , 1๋ถํฐ 9๊น์ง ์์์ ์ ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ๋ง๋ค์ด์ค๋๋ค.
rand_int_arr = np.random.randint(1, 10, size=(3, 2))
print(rand_normal_arr)
>>>[[2 6]
[3 3]
[9 2]]
list์ ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ numpy.ndarray์ ๋ฐฐ์ด์ ์ฌ๋ผ์ด์ฑํ์ฌ ๊ฐ์ ๋ณ๊ฒฝํ ๋, ํฌ๊ธฐ ๋๋ ๋ชจ์์ด ๋ง์ง ์์ผ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์ํฉ๋๋ค. ์ฆ, ์ฌ๋ผ์ด์ฑ์ ์ด์ฉํ์ฌ ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ ๋์ ํ ๋ฐฐ์ด์ ๋ชจ์์ด ์ฌ๋ผ์ด์ฑ์ ํ ๊ตฌ๊ฐ๊ณผ ์ผ์นํด์ผ ํฉ๋๋ค.
#์ค์ต์์
import numpy as np
arr= np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr[3:7] = np.array([100, 45, 60, 75])
print(arr)
>>>[ 1 2 3 100 45 60 75 8 9 10]
์์ฒ๋ผ ๋์ผํ ๋ชจ์์ ๋ฐฐ์ด์ ๋์ ํจ์ผ๋ก์จ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ๋ธ๋ก๋์บ์คํ ์ ์ด์ฉํ์ฌ ์ฌ๋ผ์ด์ฑ ๊ตฌ๊ฐ์ ์๋์ผ๋ก ๋ชจ์์ ๋ง์ถฐ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ๋ ์์ต๋๋ค.
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
arr[3:7] = 100#๋ธ๋ก๋์บ์คํ
์ด ์ ์ฉ๋์ด 100์ ํฌ๊ธฐ๊ฐ 4์ธ 1์ฐจ์ ๋ฐฐ์ด๋ก ํ์ฅ์ํจ ํ arr์ ๋์
print(arr)
>>>[ 1 2 3 100 100 100 100 8 9 10]
2์ฐจ์ ์ฌ๋ผ์ด์ฑ๋ 1์ฐจ์ ์ฌ๋ผ์ด์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ฐ์ ๋ณ๊ฒฝํ ๋๋ ๋์ผํ ๋ชจ์์ ๋ฐฐ์ด๋ก ๋์ ํด์ผ ํฉ๋๋ค.
#์ค์ต ์์
import numpy as np
arr = np.array([
[1, 2, 3, 4, 5],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9],
[10, 11, 14, 15, 17]
])
arr[1:3, 1:3] = np.array([[10, 20], [30, 40]])
print(arr)
>>>[[ 1 2 3 4 5]
[ 4 10 20 7 8]
[ 5 30 40 8 9]
[10 11 14 15 17]]
๋ธ๋ก๋์บ์คํ ์ฌ๋ผ์ด์ฑ์ ์ด์ฉํ ๊ฐ ๋ณ๊ฒฝ
arr = np.array([
[1, 2, 3, 4, 5],
[4, 5, 6, 7, 8],
[5, 6, 7, 8, 9],
[10, 11, 14, 15, 17]
])
arr[1:3, 1:3] = 10
print(arr)
>>>[[ 1 2 3 4 5]
[ 4 10 10 7 8]
[ 5 10 10 8 9]
[10 11 14 15 17]]

๋ฌธ์ ํ์ด
2์ฐจ์ ๋ฐฐ์ด์ ์ฌ๋ผ์ด์ฑ์ ํตํด ๋ณ๊ฒฝํ๋ ค๋ ๊ตฌ๊ฐ์ ์ ๊ทผํฉ๋๋ค.
๊ทธ ํ ๋ธ๋ก๋์บ์คํ
์ ํตํด ๊ณฑํ๊ธฐ2๋ฅผ ํ ํ ๊ฐ์ ๋์
ํฉ๋๋ค.
ํ์ด ์ฝ๋
def solution(arr, y1, x1, y2, x2):
arr[y1:y2+1,x1:x2+1] = arr[y1:y2+1,x1:x2+1] *2
return arr
*์์ผ๋ก์ ๋ชจ๋ ๋ฌธ์ ์์ import numpy as np๋ ์๋ตํ๊ฒ ์ต๋๋ค.

๋ฌธ์ ํ์ด
np.dot()์ ์ด์ฉํด ๋ ๋ฐฐ์ด๋ฆ ๊ณฑ์ ๊ตฌํ ํ ๋ธ๋ก๋์บ์คํ
์ ํตํด b๋ฅผ ๋ํด์ค๋๋ค.
ํ์ด ์ฝ๋
def solution(x, w, b):
answer = 0
answer = np.dot(x,w) + b
return answer

๋ฌธ์ ํ์ด
๋ฐฐ์ด์ ์ธ๋ฑ์ฑ์ ํ์ฉํ์ฌ ํค์ ๋ชธ๋ฌด๊ฒ์ ์ ๊ทผํ ํ if๋ฌธ์ ํตํด ํ์น ๋ถ๊ฐํ ์ธ๋ฑ์ค๋ฅผ answer๋ฐฐ์ด์ appendํฉ๋๋ค.
ํ์ด ์ฝ๋
def solution(info):
answer = []
for i in range(len(info[0])):
if info[0, i] <= 150 or info [0, i] >= 195 or info[1,i] >= 140:
answer.append(i)
return answer

-ํ์ด ์ฝ๋
def solution(arr_list):
A = np.array([[0]])
for arr in arr_list:
if len(A[0]) == len(arr):
A = np.dot(A + 1, arr * 2)
answer = A
return answer

๋ฌธ์ ํ์ด
3์ฐจ์๋ฐฐ์ด ์ฌ๋ผ์ด์ฑ์ ํตํด ๊ฐ๊ฐ R,G,B๊ตฌ๊ฐ์ ์ค์ ํ๊ณ ๋ธ๋ก๋์บ์คํ
์ ํตํด ๊ฐ ๊ตฌ๊ฐ์ ๋ํ ์ฐ์ฐ์ ์งํํ ํ ํ๋ฐฑ์ด๋ฏธ์ง๋ฅผ ๋ํ๋ด๋ 2์ฐจ์ ๋ฐฐ์ด๋ก ์ ์ฅํ๋ค.
ํ์ด ์ฝ๋
def solution(img):
H = len(img)
W = len(img[0])
R = img[:,:,0]
G = img[:,:,1]
B = img[:,:,2]
answer = R * 0.3 + G * 0.5 + B * 0.2
return answer
ํ์ด์ฌ ๊ฐ์ฒด ์ฌ์ด์ >, <, ==๋ฑ ๊ด๊ณ ์ฐ์ฐ์๋ค์ ์ฌ์ฉํ๋ฉด ์ฐ์ฐ ๊ฒฐ๊ณผ๋ก True, False๊ฐ ๋์ต๋๋ค. ๊ทธ๋ฌ๋ numpy.ndarrayํ์
์ ๋ฐฐ์ด์ ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ด๊ณ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ํ๋์ boolํ์
์ ๊ฐ์ด ์๋ ๋ฐฐ์ด๋ก ๋์ต๋๋ค.
๋ค์์ ๊ด๊ณ์ฐ์ฐ์ ์ค์ต ์ฝ๋์
๋๋ค.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
B = (A >= 4)
print(B)
>>>[False False False True True True False False False]
A์ ๊ด๊ณ ์ฐ์ฐ์ >=๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ B์ ๋ฃ์ด์ค ๊ฒฐ๊ณผ A์์ 4 ์ด์์ ๊ฐ์ ๊ฐ์ง ์์๋ True, 4 ๋ฏธ๋ง์ ๊ฐ์ ๊ฐ์ง ์์๋ False๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด B๊ฐ ์์ฑ๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ฆ, ๋ฐฐ์ด์ ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด์์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์๋ True, ๋ง์กฑํ์ง ์๋ค๋ฉด False์ธ numpy.ndarray ํ์ ์ ๋ฐฐ์ด๋ก ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค.
Numpy์์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ์กฐ๊ฑด์์ ๊ฒฐํฉํ ๋, and ๋ฐ or๊ฐ ์๋ & ๋ฐ |๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์์ ์ค์ต ์ฝ๋์ ๋๋ค.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
print((A > 1) & (A <= 3))
>>>[False True True False False False True True False]
print((A > 3) | (A < 2))
>>>[ True False False True True True False False True]
๊ด๊ณ ์ฐ์ฐ์๋ฅผ ํตํด ์ป์ bool ์์๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์์ ํน์ ๊ฐ๋ค์ ์ถ์ถํด๋ณด์์ต๋๋ค.
๋ค์์ ์ค์ต ์ฝ๋์ ๋๋ค.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
B = (A >= 4)
print(A[B])
>>>[4 5 4]
A์์ ๊ด๊ณ ์ฐ์ฐ์๋ฅผ ํตํด 4 ์ด์์ ์์๋ True, 4 ๋ฏธ๋ง์ ์์๋ False์ธ bool ๋ฐฐ์ด B๋ฅผ ์์ฑํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ B๋ฅผ A์ ์ธ๋ฑ์ค๋ก ๋ฃ์ด์ค๋ค๋ฉด True์ธ ์์๋ค(4, 5, 4)๋ง ์ถ์ถํฉ๋๋ค.
ํน์ ๊ตฌ๊ฐ์ ํด๋นํ๋ ์์ ๊ฐ๋ค์ ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.
A = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1])
A[(A > 1) & (A <= 3)] = 0
print(A)
>>>[1 0 0 4 5 4 0 0 1]
bool ๋ฐฐ์ด ๋ด True ์์์ ๋์ผํ ์์น์ ์๋ A ๋ด ์์์ ๊ฐ๋ค์ 0์ผ๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
์ด์ ์๋ np.dot()๋ฅผ ์ด์ฉํ์ฌ ํ๋ ฌ๊ณฑ ์ฐ์ฐ์ ์คํํ์ต๋๋ค. ํ์ง๋ง 3์ฐจ์์ด์์ ๋ฐฐ์ด์์ ํ๋ ฌ๊ณฑ ์ฐ์ฐ์ ์คํํ ๋ np.dot()์ ์ฌ์ฉํ๋ฉด ์๋ํ ๊ฒ๊ณผ๋ ๋ค๋ฅธ ๋ต์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๊ณ ์ฐจ์ ๋ฐฐ์ด์์ Numpy์ np.dot()์ np.matmul()๋ฉ์๋๋ฅผ ์ดํด๋ณด๊ณ ๋์ ์ฐจ์ด์ ์ ๋ํด ์์๋ณด์์ต๋๋ค.
2 x 2 x 2 ๋ชจ์์ ๊ฐ์ง 3์ฐจ์ ๋ ๋ฐฐ์ด์ ์์ฑํ๊ณ np.dot()๊ณผ np.matmul()๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐํด๋ณด๊ฒ ์ต๋๋ค.
A = np.array([
[[3, 1],
[3, 3]],
[[1, 1],
[3, 2]]])
B = np.array([
[[3, 3],
[3, 3]],
[[1, 3],
[2, 1]]])
print(np.dot(A, B))
>>>[[[[12 12]
[ 5 10]]
[[18 18]
[ 9 12]]]
[[[ 6 6]
[ 3 4]]
[[15 15]
[ 7 11]]]]
print(np.matmul(A, B))
>>>[[[12 12]
[18 18]]
[[ 3 4]
[ 7 11]]]
np.dot()์ ์ฐ์ฐ๊ณผ์

np.dot()์ ๊ฐ A์ ํ ๋ฒกํฐ์ B์ ์ด ๋ฒกํฐ๋ผ๋ฆฌ ๋ชจ๋ ๋ด์ ์ฐ์ฐ์ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด, A์ ์ฒซ ๋ฒ์งธ ํ๋ ฌ [[3 1][3 3]]์์ ํ ๋ฒกํฐ [3 1]์ B์ ์ฒซ ๋ฒ์งธ ํ๋ ฌ๊ณผ ๋ ๋ฒ์งธ ํ๋ ฌ์ ์๋ ๋ชจ๋ ์ด ๋ฒกํฐ [3 3], [3 3], [1 2], [3 1]์ ๋ด์ ์ฐ์ฐ์ ํ์ฌ 2์ฐจ์ ๋ฐฐ์ด [[12 12][5 10]]์ ๋์ถํฉ๋๋ค.
np.matmul()์ ์ฐ์ฐ๊ณผ์

np.matmul()์ ๋ค์์ 2๊ฐ์ ์ฐจ์์ ํด๋นํ๋ ๋ฐฐ์ด๋ผ๋ฆฌ ํ๋ ฌ ๊ณฑ ์ฐ์ฐ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, A์ ์ฒซ ๋ฒ์งธ ํ๋ ฌ [[3 1][3 3]]๊ณผ B์ ์ฒซ ๋ฒ์งธ ํ๋ ฌ[[3 3][3 3]]๋ผ๋ฆฌ ์ฐ์ฐํ์ฌ 2์ฐจ์ ๋ฐฐ์ด [[12 12][18 18]]์ ๋์ถํฉ๋๋ค.
*np.matmul() ๋์ @ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.