실제 선형대수 계산에서는 벡터나 행렬의 크기가 다르면 연산이 불가하다
하지만 numpy에서는 특정 조건을 만족한다면 크기가 달라도 연산이 가능해진다
특정 조건은
1. 열과 행 중 하나(축들 중 하나)가 1이면 가능 (하나의 축을 확장시킬 수 있음)
2. 차원의 짝이 맞아야 가능
예시를 보면 이해가 빠르다
첫 번째 예시는 1번을 만족한다. 이 때 사진처럼 확장되어 계산되는 것과 동일함
두 번째 예시도 1번을 만족한다 (1x3)
세 번째 예시는 1번을 만족하고 두 배열에서 모두 확장이 이루어졌다.
import numpy as np
a = np.array([0,1,2])
b = np.array([5])
print(a+b) # [5,6,7]
a2 = np.array([[1,1,1],[1,1,1],[1,1,1]])
b2 = np.array([0,1,2])
print(a2 + b2) # [[1,2,3],[1,2,3],[1,2,3]]
a3 = np.array([0,1,2])
b3 = np.array([[0],[1],[2]])
print(a3 + b3) # [[0,1,2],[1,2,3],[2,3,4]]
불가능, 가능 예시를 살펴보자면
2x2 배열과 2x3 배열의 경우 가능한가? -> 가능하지 않음 각 배열의 끝자리가 2와 3으로 짝이 맞지 않음
2x3 과 3x3의 경우 가능한가? -> 가능하지 않음 끝자리는 같지만 다음 자리가 2와 3으로 짝이 맞지 않음
1x3과 3x3의 경우 가능? -> 가능하다 끝자리의 짝이 맞고 1이기 때문에 확장이 가능하다
이렇게 모양이 달라도 특정 조건에 만족된다면 "브로드캐스팅"을 통해 연산이 가능해진다.
'AI > programming' 카테고리의 다른 글
[numpy] numpy array와 list의 차이 (0) | 2024.06.07 |
---|