0Pricing
Python Academy · 강의

배열 연산과 브로드캐스팅

벡터화된 산술 연산을 수행하고 브로드캐스팅 규칙을 이해합니다.

배열 연산과 브로드캐스팅은(는) CoddyKit의 무료 Python Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Python Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

벡터화된 산술 연산

NumPy는 Python 반복문 없이 전체 배열에 대해 요소별로 산술 연산을 적용합니다. 연산은 최적화된 C 코드로 실행됩니다.

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)    # [5 7 9]
print(a * b)    # [4 10 18]
print(a ** 2)   # [1 4 9]

범용 함수(ufunc)

NumPy의 ufunc는 요소별 C 수준 함수를 적용합니다. 예로 np.sqrt, np.exp, np.log, np.sin 등이 있습니다.

import numpy as np

x = np.linspace(0, np.pi, 5)
print(np.sin(x))   # [0. 0.707 1. 0.707 0.]
print(np.exp([1.0, 2.0, 3.0]))   # [2.718 7.389 20.086]

축약 연산

np.sum, np.mean, np.max, np.min, np.std를 사용하면 배열을 스칼라 또는 더 낮은 차원의 배열로 축약할 수 있습니다.

import numpy as np

m = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(m))          # 21
print(np.sum(m, axis=0))  # [5 7 9]  — sum each column
print(np.sum(m, axis=1))  # [6 15]   — sum each row

브로드캐스팅 규칙

브로드캐스팅은 데이터를 복사하지 않고 작은 배열을 큰 배열에 맞게 확장합니다. 규칙은 차원을 오른쪽부터 맞추고, 크기가 1인 차원을 확장하는 것입니다.

import numpy as np

a = np.array([[1], [2], [3]])  # shape (3,1)
b = np.array([10, 20, 30])     # shape (3,)

print(a + b)
# [[11 21 31]
#  [12 22 32]
#  [13 23 33]]

스칼라 연산 브로드캐스팅

스칼라는 배열의 모든 요소에 브로드캐스팅됩니다.

import numpy as np

arr = np.arange(6).reshape(2, 3)
print(arr + 10)
# [[10 11 12]
#  [13 14 15]]
print(arr * 0.5)
# [[0.  0.5 1. ]
#  [1.5 2.  2.5]]

비교와 불리언 연산

비교 연산은 불리언 배열을 생성합니다. &, |, ~와 결합하여 사용하며, Python의 and/or/not은 사용하지 않습니다.

import numpy as np

arr = np.array([1, 5, 3, 8, 2])
print(arr > 3)           # [False  True False  True False]
print(arr[(arr > 2) & (arr < 7)])  # [5 3]

where()

np.where(condition, x, y)는 condition이 True인 위치에서는 x의 요소를, False인 위치에서는 y의 요소를 반환합니다.

import numpy as np

arr = np.array([-2, 3, -1, 4, 0])
result = np.where(arr >= 0, arr, 0)  # clip negatives to 0
print(result)   # [0 3 0 4 0]

축을 따른 집계

다차원 배열의 특정 차원을 따라 축약하려면 axis=를 지정합니다.

import numpy as np

data = np.arange(12).reshape(3, 4)
print(data.mean(axis=0))   # mean of each column → shape (4,)
print(data.mean(axis=1))   # mean of each row → shape (3,)

cumsum과 diff

np.cumsum은 누적 합을 계산하고, np.diff는 연속된 요소 사이의 차이를 계산합니다.

import numpy as np

prices = np.array([100, 110, 105, 115])
print(np.cumsum(prices))          # [100 210 315 430]
print(np.diff(prices))            # [10 -5 10] (daily changes)

벡터화된 문자열 연산

np.char는 문자열 배열에 벡터화된 문자열 연산을 제공합니다.

import numpy as np

words = np.array(["apple", "banana", "cherry"])
print(np.char.upper(words))       # ['APPLE' 'BANANA' 'CHERRY']
print(np.char.startswith(words, "a"))  # [True False False]

Python 리스트와의 성능 비교

NumPy는 수치 연산에서 동일한 작업을 수행하는 Python 반복문보다 10~100배 빠릅니다. Python 인터프리터의 오버헤드 없이 C에서 실행되기 때문입니다.

import numpy as np, time

n = 1_000_000

start = time.perf_counter()
python_sum = sum(i**2 for i in range(n))
print(f"Python: {time.perf_counter()-start:.3f}s")

arr = np.arange(n)
start = time.perf_counter()
numpy_sum = (arr**2).sum()
print(f"NumPy:  {time.perf_counter()-start:.3f}s")

빠른 확인

shape-(3,1) 배열을 shape-(3,) 배열에 더하면 결과의 형태는 어떻게 되나요?

복습

NumPy 연산은 Python 반복문 없이 C에서 요소별로 실행됩니다. 브로드캐스팅은 복사하지 않고 호환되는 형태를 확장합니다. 특정 차원을 따라 축약하려면 axis=를 사용합니다. ufunc(np.sin, np.exp 등)는 C 속도로 요소별 연산을 적용합니다.

자주 묻는 질문

“배열 연산과 브로드캐스팅” 강의는 무료인가요?

네 — “배열 연산과 브로드캐스팅” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Python Academy 강의 전체를 잠금 해제할 수 있습니다. Python Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“배열 연산과 브로드캐스팅”에서 뭘 배우나요?

벡터화된 산술 연산을 수행하고 브로드캐스팅 규칙을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Python Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Python Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Python Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“배열 연산과 브로드캐스팅” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Python Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Python Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. NumPy 배열과 dtypes
  2. 배열 연산과 브로드캐스팅
  3. 인덱싱, 슬라이싱 및 고급 인덱싱
  4. NumPy를 활용한 선형대수
← Python Academy(으)로 돌아가기