๐Ÿ“•Week3 day2(Numpy ์‹ค์Šต์˜ˆ์ œ1)

๋ฐ•์ค€ํฌยท2023๋…„ 9์›” 5์ผ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
14/28
post-thumbnail

Numpy ์‹ค์Šต ์˜ˆ์ œ1


*day2์— ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์€ ์ œ์™ธํ•˜๊ณ  ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ŒNumpy ๋žœ๋ค ๋ฐฐ์—ด ์ƒ์„ฑ


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]]

๐Ÿ“Œ๋ฐฐ์—ด์˜ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•œ ๊ฐ’ ๋ณ€๊ฒฝ


1์ฐจ์› ๋ฐฐ์—ด์˜ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•œ ๊ฐ’ ๋ณ€๊ฒฝ

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์ฐจ์› ๋ฐฐ์—ด์˜ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•œ ๊ฐ’ ๋ณ€๊ฒฝ

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]]

๐Ÿ“Œ๊ธฐ์ดˆ๋ฌธ์ œ

๐Ÿ“๊ธฐ์ดˆ๋ฌธ์ œ1 - 2์ฐจ์› ๋ฐฐ์—ด ์Šฌ๋ผ์ด์‹ฑ ์—ฐ์Šต 1

  • ๋ฌธ์ œํ’€์ด
    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๋Š” ์ƒ๋žตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ“๊ธฐ์ดˆ๋ฌธ์ œ2 - y = w^T + b

  • ๋ฌธ์ œํ’€์ด
    np.dot()์„ ์ด์šฉํ•ด ๋‘ ๋ฐฐ์—ด๋ฆ ๊ณฑ์„ ๊ตฌํ•œ ํ›„ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ํ†ตํ•ด b๋ฅผ ๋”ํ•ด์ค๋‹ˆ๋‹ค.

  • ํ’€์ด ์ฝ”๋“œ

def solution(x, w, b):
    answer = 0
    answer = np.dot(x,w) + b
    return answer

๐Ÿ“๊ธฐ์ดˆ๋ฌธ์ œ3 - ๋กค๋Ÿฌ์ฝ”์Šคํ„ฐ

  • ๋ฌธ์ œํ’€์ด
    ๋ฐฐ์—ด์˜ ์ธ๋ฑ์‹ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ์— ์ ‘๊ทผํ•œ ํ›„ 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

๐Ÿ“๊ธฐ์ดˆ๋ฌธ์ œ4 - ํ–‰๋ ฌ ๊ณฑ ์‹ค์Šต๋ฌธ์ œ

  • ๋ฌธ์ œํ’€์ด
    A์™€ arr์˜ ํ–‰๋ ฌ๊ณฑ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•  ๋•Œ๋Š” A์˜ ์—ด์˜ ๊ธธ์ด์™€ arr์˜ ํ–‰์˜ ๊ธธ์ด๊ฐ€ ๊ฐ™์„ ๋•Œ์ด๋ฏ€๋กœ ์กฐ๊ฑด๋ฌธ์— ์ด ์กฐ๊ฑด์„ ๋„ฃ๊ณ  np.dot()์™€ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…์„ ์ด์šฉํ•˜์—ฌ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

-ํ’€์ด ์ฝ”๋“œ

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

๐Ÿ“๊ธฐ์ดˆ๋ฌธ์ œ5 - ์ด๋ฏธ์ง€ ๋ณ€ํ™˜

  • ๋ฌธ์ œํ’€์ด
    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

๐Ÿ“ŒNumpy์˜ ํŠน๋ณ„ํ•œ ๊ด€๊ณ„์—ฐ์‚ฐ

๊ด€๊ณ„์—ฐ์‚ฐ

ํŒŒ์ด์ฌ ๊ฐ์ฒด ์‚ฌ์ด์— >, <, ==๋“ฑ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ 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 ํƒ€์ž…์˜ ๋ฐฐ์—ด๋กœ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

2๊ฐœ ์ด์ƒ์˜ ์กฐ๊ฑด์‹

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 indexing

๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ์–ป์€ 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.matmul()

์ด์ „์—๋Š” np.dot()๋ฅผ ์ด์šฉํ•˜์—ฌ ํ–‰๋ ฌ๊ณฑ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 3์ฐจ์›์ด์ƒ์˜ ๋ฐฐ์—ด์—์„œ ํ–‰๋ ฌ๊ณฑ ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ๋•Œ np.dot()์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜๋„ํ•œ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅธ ๋‹ต์ด ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.
๊ณ ์ฐจ์› ๋ฐฐ์—ด์—์„œ Numpy์˜ np.dot()์™€ np.matmul()๋ฉ”์†Œ๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋‘˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

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() ๋Œ€์‹  @ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


profile
๊ฒŒ์„๋ €๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€

0๊ฐœ์˜ ๋Œ“๊ธ€