NumPy는 파이썬에서 수치 연산을 위한 라이브러리로, 다차원 배열과 행렬 연산을 지원한다. NumPy는 데이터 과학, 공학, 기계 학습 및 과학 연구 분야에서 널리 사용되며, 파이썬의 기본 리스트보다 효율적인 수치 계산을 제공한다.
NumPy의 핵심 객체는 NumPy 배열(ndarray)이다. 이 배열은 N차원의 다차원 배열을 다루는 데 사용되며, 숫자 데이터를 효율적으로 저장하고 다룰 수 있다.
import numpy as np
# 1차원 배열 생성
arr1d = np.array([1, 2, 3, 4, 5])
print("1차원 배열:")
print(arr1d)
# 2차원 배열 생성
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print("\n2차원 배열:")
print(arr2d)
# 배열 모양(shape) 확인
print("\n1차원 배열의 모양:", arr1d.shape)
print("2차원 배열의 모양:", arr2d.shape)
# 배열 요소 접근
print("\n1차원 배열 요소:", arr1d[2]) # 인덱스 2의 요소에 접근
print("2차원 배열 요소:", arr2d[1, 2]) # 2차원 배열의 1행 2열 위치 요소에 접근
# 배열 슬라이싱
print("\n1차원 배열 슬라이싱:", arr1d[1:4]) # 인덱스 1부터 3까지의 요소 슬라이싱
print("2차원 배열 슬라이싱:")
print(arr2d[0:2, 1:3]) # 행은 0부터 1까지, 열은 1부터 2까지의 요소 슬라이싱
2차원 배열에서 [1,2]는 [행,열]을 의미한다. 이 부분이 헷갈리니 주의하도록 하자.
NumPy는 배열의 각 요소에 대한 연산을 반복문 없이 한 번에 처리할 수 있는 벡터화된 연산을 지원한다. 이는 수치 연산을 빠르게 수행하고 코드를 간결하게 작성할 수 있게 한다.
import numpy as np
# 두 개의 NumPy 배열 생성
array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([10, 20, 30, 40, 50])
# 벡터화 연산으로 배열 덧셈 수행
result = array1 + array2
print("배열 1:", array1)
print("배열 2:", array2)
print("두 배열의 덧셈 결과:", result)
이 코드는 두 개의 NumPy 배열 array1과 array2를 생성하고, 이 두 배열을 더하는 데 벡터화 연산을 사용한다. 결과 배열 result는 각 원소의 위치별로 덧셈을 수행한 결과를 담고 있다.
NumPy는 다른 모양(shape)의 배열 간에 자동으로 연산을 수행할 수 있는 브로드캐스팅 기능을 제공한다. 이를 통해 모양이 다른 배열 간에 연산을 수행할 수 있어 코드를 간결하게 만든다.
import numpy as np
# 스칼라(단일 값)와 배열 간의 브로드캐스팅
scalar_value = 10
array = np.array([1, 2, 3, 4, 5])
result = scalar_value * array
print("스칼라와 배열 간의 곱셈 결과:")
print(result)
# 배열 간의 브로드캐스팅
array1 = np.array([[1, 2, 3], [4, 5, 6]])
array2 = np.array([10, 20, 30])
result = array1 + array2
print("\n배열 간의 덧셈 결과:")
print(result)
이 코드에서는 먼저 스칼라(10)와 배열 array 간의 곱셈을 수행하고, 그 결과를 출력한다. 브로드캐스팅을 통해 스칼라가 배열의 모든 원소에 자동으로 곱해진다.
그 다음으로, 배열 array1과 배열 array2 간의 덧셈을 수행하고, 그 결과를 출력한다. 두 배열의 모양이 다르지만 NumPy가 브로드캐스팅을 자동으로 처리하여 배열 간의 연산이 가능해진다.
NumPy는 C나 포트란과 같은 저수준 언어로 구현되어 있어 수치 계산이 매우 효율적이다. 또한, 메모리 사용을 최적화하여 대용량 데이터를 다루는 데 적합하다.
NumPy는 선형 대수, 통계 분석, 난수 생성 및 푸리에 변환과 같은 수학적 함수와 라이브러리를 제공한다.
import numpy as np
# 데이터 배열 생성
data = np.array([10, 15, 20, 25, 30])
# 평균 계산
mean = np.mean(data)
# 중앙값 계산
median = np.median(data)
# 표준편차 계산
std_deviation = np.std(data)
# 분산 계산
variance = np.var(data)
print("평균:", mean)
print("중앙값:", median)
print("표준편차:", std_deviation)
print("분산:", variance)
위는 통계 연산에 대한 코드 예시이다.(선형 대수는 아직 잘 모름)
NumPy는 다양한 수학 함수, 배열 조작 메서드, 정렬, 필터링, 검색 및 변환 함수를 제공하여 데이터 처리 및 분석을 지원한다.
NumPy는 다른 데이터 과학 및 기계 학습 라이브러리와의 통합이 용이하며, 데이터 프레임과 그래프 표현을 위한 라이브러리와도 연동이 잘 된다.
NumPy는 데이터 과학 및 수학적 계산을 수행하는 파이썬 기반 응용 프로그램의 핵심 요소 중 하나이며, 많은 다른 라이브러리와 프레임워크에서 사용된다. NumPy를 사용하면 고성능 수치 계산 및 데이터 분석 작업을 더 쉽고 효율적으로 수행할 수 있다.