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])
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)
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))
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))
행렬의 형상에 주의할 것.
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)
오류 내용이 1 번째 차원과 0번째 차원의 원소 수가 다르다고 나온다.
아래 그림과 같이 일치시켜야 한다.
위의 그림 파이썬 코드
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))
출처 : 밑바닥부터 시작하는 딥러닝
https://www.hanbit.co.kr/store/books/look.php?p_code=B8475831198
728x90
반응형
최근댓글