Numpy 기본 연산 및 고급 기능
NumPy는 단순한 배열 연산을 넘어, 데이터 분석과 머신러닝에서 필수적인 다양한 기능을 제공합니다.
이번 수업에서는 배열 기본 연산, 브로드캐스팅, 난수 생성에 대해 알아보겠습니다.
배열 기본 연산
NumPy 배열은 기본적인 사칙연산을 지원하며, 다음과 같이 연산이 수행됩니다.
배열 연산 예시
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(arr1 + arr2) # [5 7 9]
print(arr1 * arr2) # [ 4 10 18]
print(arr1 - arr2) # [-3 -3 -3]
print(arr1 / arr2) # [0.25 0.4 0.5 ]
파이썬 리스트는 요소별 연산이 되지 않지만, NumPy 배열은 자동으로 요소별 연산을 수행합니다.
2. 배열의 모양(shape) 변경
NumPy는 배열의 형태를 쉽게 변경할 수 있습니다.
배열 형태 변경
arr = np.array([1, 2, 3, 4, 5, 6])
# 2x3 행렬로 변환
reshaped_arr = arr.reshape(2, 3)
print(reshaped_arr)
배열의 크기를 동적으로 변경할 수 있어, 데이터 전처리 과정에서 유용하게 활용됩니다.
3. 배열의 인덱싱과 슬라이싱
NumPy 배열에서도 리스트처럼 특정 요소를 선택할 수 있습니다.
배열 인덱싱
arr = np.array([10, 20, 30, 40, 50])
print(arr[0]) # 10
print(arr[1:4]) # [20 30 40]
다차원 배열에서도 특정 행과 열을 선택할 수 있습니다.
2차원 배열 인덱싱
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(matrix[0, 1]) # 2 (첫 번째 행의 두 번째 요소)
print(matrix[:, 1]) # [2 5] (모든 행의 두 번째 열)
4. 브로드캐스팅(Broadcasting)
브로드캐스팅
은 크기가 다른 배열 간의 연산을 가능하게 하는 NumPy의 주요 기능입니다.
브로드캐스팅 예제
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])
# 자동으로 arr2가 각 행에 확장됨
result = arr1 + arr2
print(result)
위 예제에서 arr2
는 (1,3)
형태이지만, NumPy는 이를 자동으로 (2,3)
형태로 확장하여 연산을 수행합니다.
이처럼 배열의 크기가 맞지 않더라도 브로드캐스팅을 활용하면 효율적인 연산이 가능합니다.
5. 조건에 따른 필터링
NumPy에서는 조건을 활용하여 원하는 데이터를 쉽게 추출할 수 있습니다.
조건을 활용한 데이터 필터링
arr = np.array([10, 20, 30, 40, 50])
# 30보다 큰 값만 선택
filtered = arr[arr > 30]
print(filtered)
6. 난수 생성 및 샘플링
NumPy는 난수 생성 기능을 제공하여 데이터 샘플링 및 시뮬레이션에 활용할 수 있습니다.
난수 배열 생성
# 0~1 사이의 난수 5개 생성
random_arr = np.random.rand(5)
print(random_arr)
NumPy는 AI 및 데이터 과학에서 필수적으로 사용되는 범용적인 라이브러리입니다.
배열을 빠르게 생성하고 연산을 수행할 수 있으며, 수학적 연산을 쉽게 적용할 수 있습니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!