본문 바로가기

Programming/Python

Numpy

반응형

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