numpy

혜쿰·2023년 11월 1일
0
post-thumbnail

NumPy는 파이썬에서 수치 연산을 위한 라이브러리로, 다차원 배열과 행렬 연산을 지원한다. NumPy는 데이터 과학, 공학, 기계 학습 및 과학 연구 분야에서 널리 사용되며, 파이썬의 기본 리스트보다 효율적인 수치 계산을 제공한다.

1. 다차원 배열

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]는 [행,열]을 의미한다. 이 부분이 헷갈리니 주의하도록 하자.

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는 각 원소의 위치별로 덧셈을 수행한 결과를 담고 있다.

3. 브로드캐스팅

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가 브로드캐스팅을 자동으로 처리하여 배열 간의 연산이 가능해진다.

4. 효율적인 수치 계산

NumPy는 C나 포트란과 같은 저수준 언어로 구현되어 있어 수치 계산이 매우 효율적이다. 또한, 메모리 사용을 최적화하여 대용량 데이터를 다루는 데 적합하다.

5. 선형 대수와 통계 연산

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)

위는 통계 연산에 대한 코드 예시이다.(선형 대수는 아직 잘 모름)

6. 풍부한 함수 및 메서드

NumPy는 다양한 수학 함수, 배열 조작 메서드, 정렬, 필터링, 검색 및 변환 함수를 제공하여 데이터 처리 및 분석을 지원한다.

7. 상호 운용성

NumPy는 다른 데이터 과학 및 기계 학습 라이브러리와의 통합이 용이하며, 데이터 프레임과 그래프 표현을 위한 라이브러리와도 연동이 잘 된다.

NumPy는 데이터 과학 및 수학적 계산을 수행하는 파이썬 기반 응용 프로그램의 핵심 요소 중 하나이며, 많은 다른 라이브러리와 프레임워크에서 사용된다. NumPy를 사용하면 고성능 수치 계산 및 데이터 분석 작업을 더 쉽고 효율적으로 수행할 수 있다.






이미지 출처 : https://elice.io/newsroom/data_analysis

0개의 댓글