티스토리 뷰
넘파이(Numpy)는 파이썬에서 과학적 계산을 위한 강력한 라이브러리로, 수치 데이터를 효율적으로 처리할 수 있는 기능을 제공합니다. 그 중에서도 **브로드캐스팅(Broadcasting)**은 넘파이 배열 간의 연산을 단순화하고 효율적으로 만들어주는 중요한 개념입니다. 이 글에서는 브로드캐스팅의 개념, 작동 원리, 그리고 사용 예제를 자세히 살펴보겠습니다.
1. 브로드캐스팅의 개념
브로드캐스팅은 두 개의 배열이 서로 다른 형태(shape)를 가질 때, 작은 배열을 자동으로 확장하여 큰 배열의 형태에 맞춰 연산을 수행하는 기법입니다. 이를 통해 개발자는 배열의 크기를 맞추기 위해 수동으로 반복할 필요 없이 간편하게 연산을 수행할 수 있습니다.
2. 브로드캐스팅의 규칙
브로드캐스트가 가능하려면 다음의 규칙을 따라야 합니다:
차원이 같을 때: 두 배열의 차원이 같으면 직접적으로 연산할 수 있습니다.
차원이 다를 때: 두 배열 중 하나의 차원이 1인 경우, 그 차원을 확장하여 다른 배열의 차원에 맞출 수 있습니다.
차원이 1이 아닌 경우: 두 배열의 차원 수가 다르다면, 작은 배열의 차원 수가 큰 배열의 차원 수에 맞춰 1로 패딩됩니다.
3. 예제
다음 예제를 통해 브로드캐스팅이 어떻게 작동하는지 알아보겠습니다.
예제 1: 기본적인 브로드캐스팅
import numpy as np
# 1차원 배열
a = np.array([1, 2, 3])
# 2차원 배열
b = np.array([[10], [20], [30]])
# 브로드캐스팅을 통한 덧셈
result = a + b
print(result)
위 코드에서 a는 (3,) 형태를 가지고, b는 (3, 1) 형태입니다. 브로드캐스팅을 통해 a가 (3, 3) 형태로 확장되어 b와 더해집니다. 결과는 다음과 같습니다:
[[11 12 13]
[21 22 23]
[31 32 33]]
예제 2: 다차원 배열의 브로드캐스팅
import numpy as np
# 2차원 배열
x = np.array([[1, 2, 3], [4, 5, 6]])
# 1차원 배열
y = np.array([10, 20, 30])
# 브로드캐스팅을 통한 덧셈
result = x + y
print(result)
여기서 x는 (2, 3) 형태, y는 (3,) 형태입니다. y는 (1, 3)으로 확장되어 x와 더해지며, 결과는 다음과 같습니다:
[[11 22 33]
[14 25 36]]
예제 1: 기본적인 곱셈
import numpy as np
# 1차원 배열
a = np.array([1, 2, 3])
# 2차원 배열
b = np.array([[10], [20], [30]])
# 브로드캐스팅을 통한 곱셈
result = a * b
print(result)
위 코드에서 a는 (3,) 형태를 가지고, b는 (3, 1) 형태입니다. a는 (3, 3) 형태로 확장되어 b와 곱해집니다. 결과는 다음과 같습니다:
[[10 20 30]
[40 50 60]
[60 70 90]]
예제 2: 다차원 배열의 곱셈
import numpy as np
# 2차원 배열
x = np.array([[1, 2, 3], [4, 5, 6]])
# 1차원 배열
y = np.array([10, 20, 30])
# 브로드캐스팅을 통한 곱셈
result = x * y
print(result)
여기서 x는 (2, 3) 형태, y는 (3,) 형태입니다. y는 (1, 3)으로 확장되어 x와 곱해지며, 결과는 다음과 같습니다:
[[10 40 90]
[40 100 180]]
예제 3: 3차원 배열과의 곱셈
브로드캐스팅은 더 높은 차원에서도 가능합니다.
import numpy as np
# 3차원 배열
x = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
# 1차원 배열
y = np.array([1, 2, 3])
# 브로드캐스팅을 통한 곱셈
result = x * y
print(result)
여기서 x는 (2, 2, 3) 형태를 가지고, y는 (3,) 형태입니다. y는 (1, 1, 3)으로 확장되어 x와 곱해지며, 결과는 다음과 같습니다:
[[[ 1 4 9]
[ 4 10 18]]
[[ 7 16 27]
[10 22 36]]]
4. 브로드캐스팅의 장점
코드 간결성: 배열의 크기를 맞추기 위해 반복문을 사용할 필요가 없어 코드가 간결해집니다.
성능 향상: 넘파이는 배열 연산을 최적화하여 성능을 향상시킵니다. 브로드캐스팅을 사용하면 메모리 사용량을 줄이면서도 빠른 계산이 가능합니다.
※주의사항 ※
넘파이의 브로드캐스팅이 항상 가능한 것은 아닙니다.
배열의 형태가 호환되지 않는 경우에는 ValueError가 발생합니다.
따라서 브로드캐스팅을 사용할 때는 배열의 형태를 잘 확인해야 합니다.
'Python > Python Library' 카테고리의 다른 글
- Total
- Today
- Yesterday
- python 문자열 슬라이싱
- 1164회 로또
- 케라스
- 로또 ai
- TorchVision
- f-string
- 클래스형 뷰
- 텍스트 전처리
- chat gpt 모델별 예산
- chat gpt 모델 별 가격
- Python
- Numpy
- chat gpt 한국어 가격
- 장고 orm sql문 비교
- chat gpt 모델 api 가격 예측
- chat gpt 4o 예산
- 1165회 로또
- python import
- Django
- 텍스트 마이닝
- 티스토리챌린지
- postgre
- GitHub
- chat gpt api 비용 계산
- 인공지능 로또 예측
- 로또 1164회 당첨
- 토치비전
- 오블완
- chat gpt 가격 예상
- github action
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |