(*이 시리즈의 내용은 모두 '인공지능 100점을 위한 파이썬 수학' 서적의 내용을 정리한 것입니다. 사진과 같은 자료들 또한 출처가 위 책임을 밝힙니다.)
import numpy as np
a = np.array([1, 2, 3, 4]) #1
print(a)
print(type(a))
#1
리스트의 경우,
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
print(a+b)
[실행결과]
[1, 2, 3, 4, 1, 2, 3, 4]
리스트 끼리의 덧셈을 하면 끝 부분에 뒤 리스트를 덧붙인다.
반면 numpy 배열은,
a = np.array([1, 2, 3, 4])
b = np.array([1, 2, 3, 4])
print(a+b)
[실행결과]
[2, 4, 6, 8]
numpy의 배열은 요소 별로 산술 연산을 한 후 출력한다.
즉, 리스트와 리스트의 덧셈은 두 개의 리스트의 크기가 달라도 관계없지만, 배열과 배역의 덧셈은 크기(배열 요소의 개수)가 달라지면 오류를 출력한다.
np.array([[1, 2], [3, 4]])
행렬 요소의 사칙연산 중 요소들의 곱과 행렬의 곱은 의미가 다르다.
c1 = a1b1+a2b2
c2 = a1b2+a2b4
c3 = a3b1+a4b3
c4 = a3b2+a4b4
행 번호와 열 번호에 해당하는 요소들을 순서대로 곱한 다음 전체를 더해서 결과를 도출한다.
행렬의 곱은 첫 번째 행렬의 열의 크기와 두 번째 행렬의 행의 크기가 같아야 한다.
즉, (2x2)행렬과 (2x3) 행렬은 곱할 수 있지만, (2x3)과 (2x2)행렬을 곱할 수 없다.
행렬의 곱은 numpy의 dot() 함수로 계산할 수 있다.
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[1, 2], [3, 4]])
print(np.dot(A, B))
[실행 결과]
[[7 10]
[15 22]]
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[1, 2], [3, 4]])
print(A+B)
B = np.array([[1, 2]])
print(A+B)
B = np.array([[1], [2]])
print(A+B)
B = 2
print(A+B)
[실행 결과]
[[2 4]
[6 8]]
[[2 4]
[4 6]]
[[2 3]
[5 6]]
[[3 4]
[5 6]]