십대를 위한 코딩/십대를 위한 파이썬

NumPy 소개

forSilver 2025. 3. 4. 09:06
반응형

NumPy 소개

NumPy(넘파이)는 Numerical Python의 약자로, 파이썬에서 수치 계산을 수행할 때 가장 많이 사용되는 라이브러리 중 하나입니다. 특히, **다차원 배열(array)**과 선형 대수 연산, 고속 연산을 지원하여 데이터 과학, 머신러닝, 과학 계산 등에 널리 활용됩니다.


1. NumPy의 특징

다차원 배열 지원
빠른 연산 속도 (C로 구현되어 있어서 파이썬 리스트보다 훨씬 빠름)
벡터 연산 및 행렬 연산 지원
다양한 수학 및 통계 함수 내장
메모리 효율적인 데이터 처리 가능


2. NumPy 설치 및 가져오기

NumPy가 설치되어 있지 않다면 먼저 설치해야 합니다.

pip install numpy

이후 파이썬 코드에서 numpy를 가져올 수 있습니다.

import numpy as np

3. NumPy 배열 (ndarray) 생성

NumPy의 핵심은 ndarray(N-dimensional array, 다차원 배열) 입니다.

(1) 리스트로부터 배열 생성

import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))  # <class 'numpy.ndarray'>

(2) 다차원 배열 생성

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d)

출력:

[[1 2 3]
 [4 5 6]]

(3) 특정 값으로 배열 생성

np.zeros((2, 3))    # 2x3 배열, 모든 요소 0
np.ones((3, 3))     # 3x3 배열, 모든 요소 1
np.full((2, 2), 7)  # 2x2 배열, 모든 요소 7
np.eye(3)           # 3x3 단위 행렬 (Identity Matrix)

(4) 연속적인 숫자로 배열 생성

np.arange(1, 10, 2)   # [1 3 5 7 9] (1부터 10 전까지, 2씩 증가)
np.linspace(0, 10, 5) # [ 0.  2.5  5.  7.5 10.] (0~10 사이 5개 숫자 균등 분포)

4. 배열 속성 조회

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

print(arr.shape)  # (2, 3)  (2행 3열)
print(arr.ndim)   # 2  (차원의 개수)
print(arr.size)   # 6  (전체 요소 개수)
print(arr.dtype)  # int32 또는 int64 (데이터 타입)

5. 배열 연산 (벡터 연산)

NumPy는 기본적으로 벡터 연산을 지원하여 매우 빠른 계산이 가능합니다.

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

print(a + b)  # [5 7 9]
print(a - b)  # [-3 -3 -3]
print(a * b)  # [4 10 18] (요소별 곱셈)
print(a / b)  # [0.25 0.4  0.5] (요소별 나눗셈)
print(a ** 2) # [1 4 9] (요소별 제곱)

행렬 곱 연산 (dot product)

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

print(np.dot(A, B))

출력:

[[19 22]
 [43 50]]

6. 인덱싱과 슬라이싱

(1) 1차원 배열 인덱싱

arr = np.array([10, 20, 30, 40, 50])
print(arr[0])  # 10
print(arr[-1]) # 50

(2) 2차원 배열 인덱싱

arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d[0, 1])  # 2 (0번째 행, 1번째 열)

(3) 배열 슬라이싱

arr = np.array([10, 20, 30, 40, 50])
print(arr[1:4])  # [20 30 40]
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2d[:, 1])  # 모든 행에서 1열의 값 추출 => [2 5]

7. 유용한 NumPy 함수

(1) 랜덤 값 생성

np.random.rand(3, 3)  # 0~1 사이의 난수 (3x3 배열)
np.random.randint(1, 100, (2, 3))  # 1~100 사이의 정수 난수 (2x3 배열)

(2) 최소, 최대, 평균, 합계

arr = np.array([1, 2, 3, 4, 5])
print(arr.min())  # 1
print(arr.max())  # 5
print(arr.sum())  # 15
print(arr.mean()) # 3.0

(3) 배열 재구성

arr = np.arange(1, 10)  # [1 2 3 4 5 6 7 8 9]
arr = arr.reshape(3, 3)  # 3x3 배열로 변경
print(arr)

8. 실습 문제

문제 1: NumPy 배열 생성

  1. 1부터 20까지의 숫자로 구성된 1차원 배열을 생성하세요.
  2. 위 배열을 4x5의 2차원 배열로 변환하세요.
  3. 2차원 배열에서 3번째 행을 출력하세요.

문제 2: NumPy 연산

  1. np.arange(1, 10)로 만든 배열을 제곱한 결과를 출력하세요.
  2. 두 개의 3x3 랜덤 배열을 생성하고 행렬 곱을 계산하세요.

👉 답을 코드로 작성해보고 실행해보세요!


NumPy는 데이터 분석과 머신러닝에서 기본이 되는 라이브러리입니다. 기본적인 연산만 익혀도 많은 데이터 처리를 쉽게 할 수 있습니다. 더 깊이 공부하고 싶다면, 다양한 실습을 해보는 것이 중요합니다! 🚀