다차원 배열의 계산

AI / / 2020. 10. 23. 18:49
728x90
반응형

다차원 배열

  • 숫자의 집합
  • 숫자가 한 줄로 늘어선 것이나 직사각형으로 늘어놓은 것
  • 3차원으로 늘어놓은 것 N차원으로 나열하는 것을 통틀어 다차원 배열

 

1차원 배열

 

파이썬 코드

# 1차원 배열
import numpy as np

a = np.array([1,2,3,4,5])
print(a)

print(np.ndim(a))
print(a.shape)
print(a.shape[0])

[그림1] 1차원 배열 실행 결과

 

np.ndim() - 배열의 차원 수를 알려주는 함수 

shape - 튜플을 반환

 

 

 

2차원 배열

 

파이썬 코드

# 2차원 배열
import numpy as np

b = np.array([[1,2],[3,4],[5,6]])
print(b)

print(np.ndim(b)) # 몇차원인지 출력
print(b.shape)

[그림2] 2차원 배열 실행 결과

 

3*2 배열인 b를 작성했다. 

2차원 배열은 행렬이락호 부르고

배열의 가로 방향을 행, 세로 방향을 열이라고 한다.

 

 

 

 

행렬의 내적(행렬 곱)

 

2*2 행렬 계산 예제

 

파이썬 코드

# 행렬 연산

a = np.array([[1,2],[3,4]])
b = np.array([[5,6],[7,8]])
print("a : ",a.shape)
print("b : ",b.shape)

print('a,b : ',np.dot(a,b))
print('b,a : ',np.dot(b,a))

[그림3] 행렬 연산 파이썬 코드

 

np.dot()함수는 넘파이 배열 2개를 인수로 받아 그 내적을 반환한다.

주의할 점은 np.dot(a,b)와 np.dot(b,a) 값이 다를 수 있다는 점이다. 

+와 *등의 일반적인 연산과 달리 행렬의 곱에서는 피연산자의 순서가 다르면 결과도 다르게 나온다.

 

 

3*2행렬과 2*3행렬 계산 예제

 

파이썬 코드

# 3*2, 2*3

a = np.array([[1,2,3],[4,5,6]])
b = np.array([[1,2],[3,4],[5,6]])
print(a.shape)
print(b.shape)

print('a,b : ',np.dot(a,b))
print('b,a : ',np.dot(b,a))

[그림4] 3*2, 2*3 행렬 계산

 

행렬의 형상에 주의할 것.

 a의 1번째 차원의 원소 수(열의 수)와 행렬 b의 0번째 차원의 원소 수 (행의 수)가 같아야 한다.

둘 모두 원소가 3개씩이라 에러가 안났지만 

 

다음과 같이 2*2, 2*3을 곱하면 에러가 난다.

 

파이썬 코드

import numpy as np

# 행렬의 형상 에러


a = np.array([[1,2,3],[4,5,6]])
c = np.array([[1,2],[3,4]])
print(c.shape)
print(a.shape)
np.dot(a,c)

[그림5] 2*2 행렬과 2*3행렬 곱셈 연산 에러

 

오류 내용이 1 번째 차원과 0번째 차원의 원소 수가 다르다고 나온다.

 

 

아래 그림과 같이 일치시켜야 한다.

[그림6] 출처 : https://taepseon.tistory.com/12

 

 

위의 그림 파이썬 코드

a = np.array([[1,2],[3,4],[5,6]])
print(a.shape)
b = np.array([[7,8,9,10],[11,12,13,14]])
print(b.shape)

print(np.dot(a,b))

[그림7] 3*2 행렬과 2*4 행렬 연산 결과

 

 

 

 

출처 : 밑바닥부터 시작하는 딥러닝

https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198

 

밑바닥부터 시작하는 딥러닝

직접 구현하고 움직여보며 익히는 가장 쉬운 딥러닝 입문서

www.hanbit.co.kr

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기