Numpy(Numerical Python)

윤수환·2025년 3월 29일

Numpy 라이브러리의 이해

1. Numpy (Numerical Python)이란?

  • NumPy는 Numerical Python의 줄임말이야. 파이썬에서 과학적 계산을 할 때 사용되는 핵심 패키지
  • 다차원 배열과 행렬 연산을 지원하고, 고성능 수학 함수를 제공
  • 파이썬의 기본 리스트보다 효율적이고 강력한 연산을 수행할 수 있게 도움

2. Numpy 활용

  • NumPy는 파이썬에서 숫자를 다루는 데 매우 효율적
  • 데이터 과학, 머신 러닝, 이미지 처리 등에 널리 사용되는 이유
  • NumPy 배열은 매우 큰 데이터 집합을 빠르게 처리할 수 있고, 다양한 수학 연산을 손쉽게 수행

3. 배열의 기초

NumPy 배열 생성

Numpy 배열(ndarray)은 다차원 데이터를 처리할 수 있는 기본적인 데이터 구조

import numpy as np

# 1차원 배열 생성
a = np.array([1, 2, 3])

# 2차원 배열 생성
b = np.array([[1, 2, 3], [4, 5, 6]])

# 3차원 배열 생성
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

NumPy 배열의 크기를 확인하는 방법 -> shape 속성을 사용

print(a.shape)  # (3,)
print(b.shape)  # (2, 3)
print(c.shape)  # (2, 2, 2)

4. 배열의 슬라이싱

NumPy 배열 인덱싱과 슬라이싱

NumPy 배열은 다른 배열 또는 스칼라와의 연산을 지원합니다. NumPy 배열의 연산은 배열의 원소별(element-wise)로 이루어집니다.

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 원소별 덧셈
c = a + b  # [5, 7, 9]

# 원소별 곱셈
d = a * b  # [4, 10, 18]

# 스칼라와의 연산
e = a + 1  # [2, 3, 4]

5. 배열의 연산

NumPy 배열의 연산에는 다양한 함수와 메소드가 있습니다. 가장 기본적인 연산은 sum, mean, min, max입니다.

a = np.array([1, 2, 3])

# 합계
b = np.sum(a)  # 6

# 평균
c = np.mean(a)  # 2.0

# 최소값
d = np.min(a)  # 1

# 최대값
e = np.max(a)  # 3

6. 넘파이 함수

주요 함수

  • np.zeros(): 모든 원소가 0인 배열을 생성합니다.
  • np.ones(): 모든 원소가 1인 배열을 생성합니다.
  • np.arange(): 범위 내의 일정 간격을 가진 배열을 생성합니다.
  • np.linspace(): 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성합니다.
  • np.random.random(): 0부터 1사이의 난수를 가지는 배열을 생성합니다.
  • np.random.randn(): 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수를 가지는 배열을 생성합니다.

np.zeros()

np.zeros() 함수는 모든 원소가 0인 배열을 생성합니다. 함수의 인수로는 생성할 배열의 크기를 지정합니다. 예를 들어, 크기가 2x3인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.zeros((2, 3))
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[[0. 0. 0.]
 [0. 0. 0.]]

위의 출력 결과에서 보듯이 np.zeros() 함수는 모든 원소가 0인 배열을 생성합니다.

np.ones()

np.ones() 함수는 모든 원소가 1인 배열을 생성합니다. 함수의 인수로는 생성할 배열의 크기를 지정합니다. 예를 들어, 크기가 2x4인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.ones((2, 4))
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[[1. 1. 1. 1.]
 [1. 1. 1. 1.]]

위의 출력 결과에서 보듯이 np.ones() 함수는 모든 원소가 1인 배열을 생성합니다.

np.arange()

np.arange() 함수는 범위 내의 일정 간격을 가진 배열을 생성합니다. 함수의 인수로는 생성할 배열의 범위와 간격을 지정합니다. 예를 들어, 범위가 1에서 10까지이고 간격이 2인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.arange(1, 10, 2)
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[1 3 5 7 9]

위의 출력 결과에서 보듯이 np.arange() 함수는 범위 내의 일정 간격을 가진 배열을 생성합니다.

np.linspace()

np.linspace() 함수는 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성합니다. 함수의 인수로는 생성할 배열의 범위와 원하는 개수를 지정합니다. 예를 들어, 범위가 0에서 1까지이고 원하는 개수가 5개인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.linspace(0, 1, 5)
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[0.   0.25 0.5  0.75 1.  ]

위의 출력 결과에서 보듯이 np.linspace() 함수는 범위 내에서 균등 간격으로 원하는 개수의 배열을 생성합니다.

np.random.random()

np.random.random() 함수는 0과 1사이의 균등 분포에서 난수를 생성하여 배열을 만듭니다. 함수의 인수로는 생성할 배열의 크기를 지정할 수 있습니다. 예를 들어, 크기가 3x3인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.random.random((3, 3))
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[[0.8139928  0.79544491 0.43146849]
 [0.30136094 0.77515306 0.64259144]
 [0.02956163 0.74888294 0.56169272]]

위의 출력 결과에서 보듯이 np.random.random() 함수는 지정된 크기의 배열을 생성하며, 배열의 각 원소는 0과 1 사이의 난수로 채워집니다.

np.random.randn()

np.random.randn() 함수는 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수를 생성하여 배열을 만듭니다. 함수의 인수로는 생성할 배열의 크기를 지정할 수 있습니다. 예를 들어, 크기가 2x4인 배열을 생성하려면 다음과 같이 코드를 작성합니다.

import numpy as np

arr = np.random.randn(2, 4)
print(arr)

위 코드의 출력 결과는 다음과 같습니다.

[[ 0.52346546  0.30785207  0.63301317 -0.03108197]
 [ 1.37352221 -1.26632616 -1.15567608 -0.52687134]]

위의 출력 결과에서 보듯이 np.random.randn() 함수는 지정된 크기의 배열을 생성하며, 배열의 각 원소는 평균이 0이고 표준편차가 1인 정규 분포를 따르는 난수로 채워집니다.

NumPy 기타 함수

그 외에도 Numpy에는 많은 유용한 함수들이 내장되어 있는데 대표적인 몇가지 함수들을 소개해드리려고 합니다.

Numpy 수학 함수

  • sum(), mean() : 배열 전체 합, 평균
  • cumsum(), cumprod() : 배열 누적 합, 누적 곱
  • std(), var() : 표준편차, 분산
  • min(), max() : 최소값, 최대값
  • argmin(), argmax(): 최소 원소의 색인 값, 최대 원소의 색인 값

Numpy 난수 함수

NumPy 모듈의 랜덤 함수를 사용하여 다양한 분포에서 난수를 생성할 수 있습니다. 이를 통해 데이터의 모의 실험을 수행하거나 시뮬레이션을 구현할 수 있습니다. numpy.random 모듈의 경우는 다양한 종류의 확률분포로부터 효과적으로 표본 값을 생성하는데 사용됩니다.

  • seed() : 난수 발생기의 seed를 지정한다.
  • permutation() : 임의의 순열을 반환한다.
  • shuffle() : 리스트나 배열의 순서를 뒤섞는다.
  • rand() : 균등분포에서 표본을 추출한다.
  • randint() : 주어진 최소/최대 범위 안에서 임의의 난수를 추출한다.
  • randn() : 표준편차가 1이고 평균값이 0인 정규분포에서 표본을 추출한다.
  • binomial() : 이항분포에서 표본을 추출한다.
  • normal() : 정규분포(가우시안)에서 표본을 추출한다.
  • beta() : 베타분포에서 표본을 추출한다.
  • chisquare() : 카이제곱분포에서 표본을 추출한다.
  • gamma() : 감마분포에서 표본을 추출한다.
  • uniform() : 균등(0,1)에서 표본을 추출한다.

0개의 댓글