다차원 배열도 그 기본은 '숫자의 집합'
A = np.array([1,2,3,4,5])
print(A)
print(np.ndim(A))
print(A.shape)
print(A.shape[0])
[1 2 3 4 5]
1
(5,)
5
B = np.array([[1,2], [2,3], [3,4]])
print(B)
print(np.ndim(B))
print(B.shape)
[[1 2]
[2 3]
[3 4]]
2
(3, 2)
차원의 수는 np.ndim()함수로 알 수 있고, 배열의 ㅎ여상은 인스턴스 변수인 shape으로 알 수 있다.
1차원 배열에서 shape이 튜플로 반환하는 것은 다차원 배열일 때와 통일된 형태로 결과를 반환하기 위한 것임을 기억!
2차원 배열 코드는 3x2 행렬로 가로방향을 '행' 세로방향을 '열' 이라함
A = np.array([[1,2], [3,4]])
print(A.shape)
B = np.array([[5,6], [7,8]])
print(B.shape)
print(np.dot(A, B))
numpy의 np.dot()함수를 통해 두 행렬의 곱을 할 수 있다.
np.dot()은 입력이 1차원 배열이면 벡터를, 2차원 배열이면 행렬 곱을 계산한다.
여기서 주의해야 할 점은 np.dot(A,B)와 np.dot(B,A)의 값이 다르다는 점!
행렬 곱을 할 때 '행렬의 형상'에 주의해야한다. 행렬 A의 1번째 차원의 원소 수(열수)와 행렬 B의 0번째 차원의 원소 수(행 수)가 같아야한다.
그렇지 않은 경우 오류를 출력한다.
X = np.array([1, 2])
print(X.shape)
W = np.array([[1,3,5], [2,4,6]])
print(W.shape)
Y = np.dot(X, W)
print(Y)
X와 W의 형상이 같아 행렬 곱셈 연산 후 Y를 통해 결과값을 얻었다.
np.dot()함수를 사용면 이처럼 단번에 결과(Y)를 얻을 수 있지만, 이를 사용하지 않고, Y의 원소가 100이든 1000이라면 그 수만큼 하나씩 계산을 하게된다.(for문 사용해서 한 원소씩 돌아가며 계산..)