NumPy
는 강력한 수치 계산 라이브러리로, 다양한 기능을 제공합니다. 여기서는 NumPy
의 주요 메서드와 기능들을 정리하였습니다. NumPy
는 주로 배열 생성, 배열 조작, 수학적 연산 및 선형 대수, 통계, 그리고 파일 입출력 관련 메서드를 포함하고 있습니다.
1. 배열 생성
numpy.array()
: 배열 생성.numpy.zeros()
: 모든 요소가 0인 배열 생성.numpy.ones()
: 모든 요소가 1인 배열 생성.numpy.empty()
: 초기화되지 않은 배열 생성.numpy.arange()
: 주어진 범위의 값으로 배열 생성.numpy.linspace()
: 주어진 구간을 등간격으로 나누어 배열 생성.numpy.eye()
: 단위 행렬 생성.numpy.random.rand()
: 균등 분포에서 랜덤 배열 생성.numpy.random.randn()
: 정규 분포에서 랜덤 배열 생성.
2. 배열 조작
numpy.reshape()
: 배열의 형태를 변경.numpy.ravel()
: 다차원 배열을 1차원 배열로 변환.numpy.flatten()
: 다차원 배열을 1차원 배열로 변환.numpy.transpose()
: 배열의 차원을 뒤집음.numpy.concatenate()
: 배열 연결.numpy.vstack()
: 수직으로 배열 쌓기.numpy.hstack()
: 수평으로 배열 쌓기.numpy.split()
: 배열 나누기.numpy.delete()
: 배열에서 요소 삭제.numpy.insert()
: 배열에 요소 삽입.
3. 배열 연산
numpy.add()
: 배열 요소 덧셈.numpy.subtract()
: 배열 요소 뺄셈.numpy.multiply()
: 배열 요소 곱셈.numpy.divide()
: 배열 요소 나눗셈.numpy.power()
: 배열의 거듭제곱.numpy.dot()
: 두 배열의 내적 계산.numpy.sum()
: 배열의 합계.numpy.mean()
: 배열의 평균.numpy.median()
: 배열의 중앙값.numpy.std()
: 배열의 표준편차.
4. 선형 대수
numpy.linalg.inv()
: 행렬의 역행렬.numpy.linalg.det()
: 행렬의 행렬식.numpy.linalg.eig()
: 고유값 및 고유벡터.numpy.linalg.solve()
: 선형 방정식 풀이.
5. 통계
numpy.min()
: 최소값.numpy.max()
: 최대값.numpy.argmin()
: 최소값의 인덱스.numpy.argmax()
: 최대값의 인덱스.numpy.percentile()
: 백분위 수.
6. 브로드캐스팅
numpy.newaxis
: 차원 추가.numpy.where()
: 조건에 따라 배열 생성.
7. 파일 입출력
numpy.save()
: 배열을 .npy 파일로 저장.numpy.load()
: .npy 파일에서 배열 로드.numpy.savetxt()
: 텍스트 파일로 배열 저장.numpy.loadtxt()
: 텍스트 파일에서 배열 로드.
8. 기타
numpy.unique()
: 배열에서 고유한 요소 찾기.numpy.sort()
: 배열 정렬.numpy.argsort()
: 정렬된 배열의 인덱스 반환.
요약
NumPy
는 다양한 기능을 제공하여 과학적 계산과 데이터 분석에 매우 유용합니다. 위에 나열된 메서드는 NumPy
의 주요 기능을 포함하고 있으며, 각각의 메서드에 대한 자세한 사용법은 NumPy 공식 문서에서 확인할 수 있습니다. 필요에 따라 특정 메서드를 선택하여 사용하면 됩니다!
NumPy의 심화 메서드 및 기능에 대해 좀 더 자세히 설명하겠습니다. 여기서는 일반적인 배열 조작 및 수학적 계산 외에도 고급 기능을 포함하여 설명하겠습니다.
1. 고급 배열 생성
numpy.fromfunction(function, shape)
: 주어진 함수에 따라 배열 생성.def func(i, j): return i + j arr = np.fromfunction(func, (3, 3))
numpy.fromiter(iterable, dtype)
: 반복 가능한 객체에서 배열 생성.arr = np.fromiter(range(5), dtype=float) # [0. 1. 2. 3. 4.]
2. 고급 배열 조작
numpy.roll(a, shift)
: 배열의 요소를 지정한 축을 따라 회전.arr = np.array([1, 2, 3, 4]) rolled = np.roll(arr, 1) # [4, 1, 2, 3]
numpy.tile(A, reps)
: 배열을 반복하여 새로운 배열 생성.arr = np.array([1, 2, 3]) tiled = np.tile(arr, 2) # [1, 2, 3, 1, 2, 3]
3. 고급 수학적 연산
numpy.clip(a, a_min, a_max)
: 배열의 값을 주어진 최소값과 최대값으로 제한.arr = np.array([1, 2, 3, 4, 5]) clipped = np.clip(arr, 2, 4) # [2, 2, 3, 4, 4]
numpy.meshgrid(*xi)
: 입력 좌표를 기반으로 격자 배열 생성.x = np.array([1, 2, 3]) y = np.array([4, 5]) X, Y = np.meshgrid(x, y)
4. 고급 선형 대수
numpy.linalg.norm(x)
: 벡터 또는 행렬의 노름 계산.vec = np.array([3, 4]) norm = np.linalg.norm(vec) # 5.0
numpy.linalg.qr(a)
: QR 분해.A = np.array([[1, 2], [3, 4]]) Q, R = np.linalg.qr(A)
5. 고급 통계
numpy.histogram(a, bins)
: 데이터의 히스토그램을 계산.data = np.random.randn(1000) hist, bin_edges = np.histogram(data, bins=30)
numpy.corrcoef(x)
: 상관 계수 행렬 계산.a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) corr = np.corrcoef(a, b) # 상관 계수
6. 고급 브로드캐스팅
numpy.broadcast_to(array, shape)
: 배열을 주어진 형상으로 브로드캐스팅.arr = np.array([1, 2, 3]) broadcasted = np.broadcast_to(arr, (3, 3)) # 3x3 배열
7. 고급 파일 입출력
numpy.loadz()
:.npz
파일에서 배열 로드 (압축된 파일).data = np.load('data.npz') arr1 = data['arr_0'] # 배열 이름으로 접근
8. 고급 마스킹 및 필터링
numpy.ma.masked_array(data, mask)
: 마스킹된 배열 생성.data = np.array([1, 2, 3, 4, 5]) masked = np.ma.masked_array(data, mask=[0, 1, 0, 0, 1]) # [1, --, 3, 4, --]
9. 고급 기능
numpy.polyfit(x, y, deg)
: 다항식 회귀를 위한 다항식 계수 계산.x = np.array([1, 2, 3, 4]) y = np.array([2.2, 2.8, 3.6, 4.5]) coeffs = np.polyfit(x, y, 1) # 직선 회귀
numpy.unique()
: 배열의 고유 값 및 해당 인덱스 반환.arr = np.array([1, 2, 2, 3, 3, 3]) unique, counts = np.unique(arr, return_counts=True)
이 기능들은 NumPy
의 강력함을 더욱 끌어올려 데이터 분석, 과학적 계산 및 기타 복잡한 작업을 수행하는 데 매우 유용합니다. 각 메서드에 대한 더 자세한 설명은 NumPy 공식 문서에서 확인할 수 있습니다. 필요에 따라 적절한 메서드를 선택하여 사용하세요!
코딩 테스트에서 자주 출제되는 문제 중 NumPy를 사용하면 더 쉽게 풀 수 있는 문제들을 몇 가지 소개하겠습니다. 각 문제와 함께 NumPy를 활용한 예시 코드를 제공하겠습니다.
1. 배열의 합과 평균 구하기
문제: 주어진 배열의 모든 요소의 합과 평균을 구하라.
NumPy 활용 예시:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
total_sum = np.sum(arr)
mean_value = np.mean(arr)
print("Sum:", total_sum) # Sum: 15
print("Mean:", mean_value) # Mean: 3.0
2. 최대값과 최소값의 차이
문제: 주어진 배열에서 최대값과 최소값의 차이를 구하라.
NumPy 활용 예시:
arr = np.array([10, 5, 7, 12, 3])
difference = np.max(arr) - np.min(arr)
print("Difference:", difference) # Difference: 9
3. 특정 값의 인덱스 찾기
문제: 주어진 배열에서 특정 값의 인덱스를 모두 찾으라.
NumPy 활용 예시:
arr = np.array([1, 2, 3, 2, 4])
value = 2
indices = np.where(arr == value)[0]
print("Indices of", value, ":", indices) # Indices of 2 : [1 3]
4. 배열에서 중복 값 제거하기
문제: 주어진 배열에서 중복된 값을 제거하고 고유한 값만 포함하는 배열을 반환하라.
NumPy 활용 예시:
arr = np.array([1, 2, 2, 3, 4, 4, 5])
unique_values = np.unique(arr)
print("Unique values:", unique_values) # Unique values: [1 2 3 4 5]
5. 두 배열의 교집합 구하기
문제: 두 배열에서 공통적으로 존재하는 요소들을 찾으라.
NumPy 활용 예시:
arr1 = np.array([1, 2, 3, 4])
arr2 = np.array([3, 4, 5, 6])
intersection = np.intersect1d(arr1, arr2)
print("Intersection:", intersection) # Intersection: [3 4]
6. 배열의 중앙값 구하기
문제: 주어진 배열의 중앙값을 구하라.
NumPy 활용 예시:
arr = np.array([1, 2, 3, 4, 5])
median_value = np.median(arr)
print("Median:", median_value) # Median: 3.0
7. 행렬의 전치
문제: 주어진 2차원 배열(행렬)을 전치(transpose)하라.
NumPy 활용 예시:
matrix = np.array([[1, 2, 3], [4, 5, 6]])
transposed = np.transpose(matrix)
print("Transposed matrix:\n", transposed)
# Transposed matrix:
# [[1 4]
# [2 5]
# [3 6]]
8. 조건에 따른 필터링
문제: 주어진 배열에서 특정 조건을 만족하는 요소들만 추출하라.
NumPy 활용 예시:
arr = np.array([1, 2, 3, 4, 5])
filtered = arr[arr > 3]
print("Filtered values:", filtered) # Filtered values: [4 5]
9. 배열의 회전
문제: 주어진 배열을 오른쪽으로 k번 회전하라.
NumPy 활용 예시:
arr = np.array([1, 2, 3, 4, 5])
k = 2
rotated = np.roll(arr, k)
print("Rotated array:", rotated) # Rotated array: [4 5 1 2 3]
이러한 문제들은 NumPy의 기능을 활용하여 효율적으로 해결할 수 있으며, 코딩 테스트에서 자주 출제되는 유형들입니다. NumPy를 통해 코드의 간결함과 가독성을 높일 수 있습니다!
'Programming > Python' 카테고리의 다른 글
파이썬 알고리즘 (2) | 2024.10.05 |
---|---|
[파이썬] 프로그램의 입력과 출력 정리 (0) | 2021.02.16 |
[파이썬] 15. 파일 읽고 쓰기 (0) | 2021.02.15 |
[파이썬] 14. 사용자 입력과 출력 (0) | 2021.02.15 |
[파이썬] 13. 함수 (0) | 2021.02.14 |