본문 바로가기
Python 파이썬/numpy

numpy ) 배열 array 연산

by 하이방가루 2022. 3. 19.
728x90
반응형

브로드캐스팅 (Broadcasting)

  일정 조건을 부합하는 다른 형태의 배열끼리 연산을 수행하는 것

  요소를 흩뿌리듯이 계산된다.

x1 = np.array([1.0, 2.0, 3.0])
y1 = np.array([5.0, 10.0, 15.0])
x2 = np.array([[1.0, 2.0],
               [3.0, 4.0]])
y2 = np.array([[5.0, 10.0],
               [15.0, 20.0]])
z1 = np.array([-1.0, -2.0])
z2 = np.array([[5.0],
               [10.0],
               [15.0]])

# x1과 상수
print(x1 + 2) # [ 3. 4. 5.]

# x1과 y1
print(x1 + y1) # [ 6. 12. 18.]

# x2과 y2
print(x2 - y2)
# [[ -4.  -8.]
#  [-12. -16.]]

# x2과 z1
print(x2 * z1)
# [[-1. -4.]
#  [-3. -8.]]

# x1과 z2
print(x1 / z2)
#[[0.2        0.4        0.6       ]
# [0.1        0.2        0.3       ]
# [0.06666667 0.13333333 0.2       ]]

x2(2x2)과 z1(2x1) 브로드캐스팅

x2[0] * z1 = [1.0,2.0] * [-1.0,-2.0] = [-1. -4.]

x2[1] * z1 = [3.0,4.0] * [-1.0,-2.0] = [-3. -8.]

x1(3x1)과 z2(1x3) 브로드캐스팅

x1 / z2[0] = [1.0,2.0,3.0] / [5.0]  = [0.2        0.4        0.6       ]

x1 / z2[1] = [1.0,2.0,3.0] / [10.0] = [0.1        0.2        0.3       ]

x1 / z2[2] = [1.0,2.0,3.0] / [15.0] = [0.06666667 0.13333333 0.2       ]

 

벡터의 내적 (행렬 곱)

  변수1@변수2, np.dot(변수1,변수2), 변수1.dot(변수2)

  이를 이용해서 신경망 계산을 수행한다.

y1 = 1*x1 + 2*x2

y2 = 3*x1 + 4*x2

y3 = 5*x1 + 6*x2

x1 = np.array([1.0,2.0,3.0])
y1 = np.array([5.0,10.0,15.0])
x2 = np.array([[1.0,2.0],[3.0,4.0]])
y2 = np.array([[5.0,10.0],[15.0,20.0]])
z1 = np.array([-1.0,-2.0])
z2 = np.array([[5.0],[10.0],[15.0]])

print(x1@z2) # [70.]
print(np.dot(z1,x2)) # [ -7. -10.]
print(z1.dot(y2)) # [-35. -50.]

 

 

728x90
반응형

'Python 파이썬 > numpy' 카테고리의 다른 글

numpy ) 함수  (0) 2022.03.19
numpy ) 배열 array 인덱싱, 슬라이싱, 반복  (0) 2022.03.19
numpy ) 배열 array 형 변환  (0) 2022.03.19
numpy ) 배열 array 생성  (0) 2022.03.18
numpy ) 넘파이 개요  (0) 2022.03.18

댓글