- 수업 내용 리마인드 및 아카이빙 목적의 업로드
1. Numpy란 무엇인가요?
Numpy는 "Numerical Python"의 줄임말로, 파이썬에서 수치 연산을 위해 만들어진 라이브러리예요. 주로 행렬 연산, 다차원 배열 처리, 그리고 선형대수와 통계와 관련된 다양한 내장 함수를 제공합니다. Numpy를 사용하면 파이썬의 기본 리스트에 비해 더 빠르고 메모리를 적게 사용하는 배열 연산을 할 수 있어요.
2. Numpy의 주요 기능
- 배열(array) 연산: Numpy는 배열을 기본 데이터 구조로 사용해, 벡터와 행렬 연산을 손쉽게 할 수 있습니다. 특히, 파이썬의 기본 리스트보다 훨씬 빠르고 효율적으로 연산이 가능해요.
# 두 개의 2x2 행렬을 더하는 간단한 연산
import numpy as np
matrix_1 = np.array([[1, 2], [3, 4]])
matrix_2 = np.array([[5, 6], [7, 8]])
matrix_sum = matrix_1 + matrix_2
print(matrix_sum)
- 브로드캐스트: Numpy의 강력한 기능 중 하나인 브로드캐스트는 서로 다른 형태(차원)의 배열끼리 연산할 수 있도록 해줍니다.
# 2차원 행렬과 1차원 벡터를 더하는데, Numpy가 자동으로 차원을 맞춰 연산을 수행
matrix = np.array([[1, 2, 3], [4, 5, 6]])
vector = np.array([1, 2, 3])
result = matrix + vector
print(result)
- 고성능 연산: Numpy는 대규모 데이터 연산을 매우 빠르게 처리합니다. 파이썬의 기본 리스트와 Numpy 배열을 비교한 결과를 보면, Numpy가 훨씬 더 빠르다는 것을 확인할 수 있어요.
# Numpy를 사용하면 대용량 데이터를 빠르게 연산
import time
size = 10000000
x = np.arange(size)
y = np.arange(size)
start_time = time.time()
z = x + y
print("Numpy 걸린 시간:", time.time() - start_time)
3. Numpy 배열의 다양한 활용
- ndarray 생성 및 조작: Numpy에서 배열(ndarray)을 생성하고, 다양한 방식으로 조작할 수 있어요. Numpy 배열은 파이썬 리스트와 달리 모든 원소가 같은 자료형을 가져야 하며, 다양한 형변환 기능을 제공합니다.
# float32 형식의 배열을 생성하고, 그 자료형을 확인
x = np.array([1, 2, 3, 4], dtype=np.float32)
print(x.dtype) # float32
- 다차원 배열: Numpy는 0차원에서부터 다차원 배열까지 지원합니다. 배열의 차원을 확인하고 조작할 수 있는 다양한 방법을 제공합니다.
# 2차원 배열의 모양(행렬 구조)과 차원을 확인
x = np.array([[1, 2, 3], [4, 5, 6]])
print(x.shape) # (2, 3)
print(x.ndim) # 2
- 배열 생성 함수: Numpy는 다양한 방법으로 배열을 생성할 수 있는 함수를 제공합니다. arange, linspace, ones, zeros, eye 등을 사용해 필요한 배열을 쉽게 만들 수 있어요.
# 여러 가지 배열 생성 방법
x = np.arange(10)
y = np.linspace(1, 20, 5)
z = np.zeros((3, 3))
4. Numpy를 활용한 데이터 처리
- 슬라이싱 및 인덱싱: Numpy 배열의 특정 부분을 선택하거나 수정할 때 슬라이싱과 인덱싱을 사용합니다. 다차원 배열에서도 손쉽게 부분 배열을 선택할 수 있어요.
# 2차원 배열에서 슬라이싱을 통해 부분 배열을 선택
x = np.arange(20).reshape(4, 5)
print(x[1:3, 1:3])
- 연산 및 집계 함수: Numpy는 다양한 수학적 연산 및 집계 함수를 내장하고 있습니다. 평균, 중앙값, 표준편차, 합계, 행렬 곱셈 등 다양한 연산을 손쉽게 처리할 수 있어요.
# Numpy를 사용한 기본적인 수학 연산
x = np.arange(4).reshape(2, 2)
print(np.mean(x)) # 평균
print(np.dot(x, x)) # 행렬 곱셈
'+ 개발' 카테고리의 다른 글
블로그 크롤링(#네이버 블로그)_코드 설명 (2) | 2024.08.30 |
---|---|
Pandas로 데이터 분석하기 (0) | 2024.08.29 |
데이터 시각화 기초 (1) | 2024.08.26 |
MySQL을 활용한 크롤링 데이터 저장(ft.Python) (0) | 2024.08.23 |
데이터베이스 기초 (1) | 2024.08.21 |