내가 보려고 만든 NumPy 정리

1. NumPy 개요

NumPy는 파이썬에서 수치 계산을 수행하기 위해 사용되는 대표적인 라이브러리이다.
주로 다차원 배열을 기반으로 빠른 수치 연산을 수행하는 데 목적이 있다.

NumPy 배열은 내부적으로 C 언어로 구현되어 있어 일반적인 파이썬 리스트보다 연산 속도가 빠르고 메모리 사용이 효율적이다.

다음과 같은 분야에서 널리 사용된다.

  • 데이터 분석
  • 머신러닝
  • 딥러닝
  • 과학 계산
  • 통계 처리

설치

pip install numpy

기본 사용

import numpy as np

2. NumPy 핵심 구조

2.1 ndarray (N-dimensional array)

NumPy의 핵심 자료구조는 ndarray이다.

ndarray는 동일한 데이터 타입을 가지는 값들이 연속된 메모리 공간에 저장된 다차원 배열 객체이다.

지원하는 차원

  • 1차원 배열 (Vector)
  • 2차원 배열 (Matrix)
  • 3차원 이상 배열 (Tensor)

리스트와 배열 비교

list1 = [1, 2, 3, 4]

print(type(list1))
print(type(list1[0]))

# 결과
# <class 'list'>
# <class 'int'>
ndarr1 = np.array([1,2,3,4])

print(type(ndarr1))
print(type(ndarr1[0]))

# 결과
# <class 'numpy.ndarray'>
# <class 'numpy.int64'>

2차원 배열 생성

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

print(ndarr2)

# 결과
# [[1 2 3]
#  [4 5 6]]

ai가 추천하는 심화 예제

다차원 배열을 이용한 간단한 행렬 연산

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

B = np.array([
    [5,6],
    [7,8]
])

C = np.dot(A, B)

print(C)

# 결과
# [[19 22]
#  [43 50]]

3. 리스트와 ndarray 변환

3.1 리스트 → NumPy 배열

리스트를 ndarray로 변환할 때 np.array()를 사용한다.

list1 = [1,2,3,4]

ndarr = np.array(list1)

print(ndarr)

# 결과
# [1 2 3 4]

3.2 NumPy 배열 → 리스트

배열을 리스트로 변환할 때 tolist() 메서드를 사용한다.

list2 = ndarr.tolist()

print(list2)

# 결과
# [1, 2, 3, 4]

ai가 추천하는 심화 예제

데이터 분석에서 리스트 데이터를 NumPy로 변환한 뒤 통계 계산

scores = [75, 82, 90, 66, 88]

scores_np = np.array(scores)

mean_score = np.mean(scores_np)
std_score = np.std(scores_np)

print(mean_score)
print(std_score)

# 결과
# 80.2
# 8.419...

4. ndarray 데이터 타입

NumPy 배열은 모든 원소가 동일한 데이터 타입을 가져야 한다.

리스트는 서로 다른 타입을 동시에 가질 수 있다.

list1 = [1, 3.14, "Python", True]

print(list1)

# 결과
# [1, 3.14, 'Python', True]

NumPy에서는 하나의 타입으로 변환된다.

예시

arr = np.array([1,2,3.14])

print(arr.dtype)

# 결과
# float64

dtype 확인

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

print(arr.dtype)

# 결과
# int64

ai가 추천하는 심화 예제

dtype을 직접 지정하여 메모리 효율을 관리

arr = np.array([1,2,3,4], dtype=np.int8)

print(arr)
print(arr.dtype)

# 결과
# [1 2 3 4]
# int8

5. 배열의 주요 속성

shape

배열의 구조 (차원 크기)

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

print(arr.shape)

# 결과
# (2, 3)

ndim

배열의 차원 수

print(arr.ndim)

# 결과
# 2

size

전체 원소 개수

print(arr.size)

# 결과
# 6

dtype

데이터 타입

print(arr.dtype)

# 결과
# int64

ai가 추천하는 심화 예제

배열 구조를 이용한 데이터셋 정보 확인

data = np.random.rand(100, 10)

print(data.shape)
print(data.ndim)
print(data.size)

# 결과
# (100, 10)
# 2
# 1000

6. 배열 생성 방법

array()

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

print(arr)

# 결과
# [1 2 3]

zeros()

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

print(arr)

# 결과
# [[0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]

ones()

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

print(arr)

# 결과
# [[1. 1. 1. 1.]
#  [1. 1. 1. 1.]]

arange()

arr = np.arange(0,10)

print(arr)

# 결과
# [0 1 2 3 4 5 6 7 8 9]

step 지정

arr = np.arange(0,10,2)

print(arr)

# 결과
# [0 2 4 6 8]

reshape()

arr = np.arange(6)

new_arr = arr.reshape(2,3)

print(new_arr)

# 결과
# [[0 1 2]
#  [3 4 5]]

ai가 추천하는 심화 예제

머신러닝 데이터셋 형태 변환

data = np.arange(100)

data = data.reshape(20,5)

print(data.shape)

# 결과
# (20, 5)

7. 배열 인덱싱

1차원 배열

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

print(arr[0])

# 결과
# 1

2차원 배열

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

print(arr[0,1])

# 결과
# 2

ai가 추천하는 심화 예제

행 단위 데이터 접근

dataset = np.array([
    [170, 65],
    [180, 80],
    [160, 55]
])

height = dataset[:,0]
weight = dataset[:,1]

print(height)
print(weight)

# 결과
# [170 180 160]
# [65 80 55]

8. 배열 슬라이싱

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

print(arr[1:4])

# 결과
# [2 3 4]

2차원 배열 슬라이싱

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

print(arr[:,1])

# 결과
# [2 5 8]

ai가 추천하는 심화 예제

이미지 데이터 일부 영역 추출

image = np.random.randint(0,255,(100,100))

crop = image[20:50, 30:60]

print(crop.shape)

# 결과
# (30, 30)

9. NumPy 사용 이유

벡터 연산 예제

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

print(arr * 2)

# 결과
# [2 4 6]

ai가 추천하는 심화 예제

유클리드 거리 계산

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

distance = np.sqrt(np.sum((a-b)**2))

print(distance)

# 결과
# 5.196152...

10. 정리

NumPy는 파이썬에서 수치 계산을 수행하기 위한 핵심 라이브러리이다.

핵심 개념

  • ndarray (다차원 배열)
  • dtype (데이터 타입)
  • shape (배열 구조)
  • reshape (배열 변형)
  • slicing / indexing (데이터 접근)

NumPy는 머신러닝과 데이터 분석의 기반이 되는 라이브러리이기 때문에 배열 구조와 기본 연산 방식을 이해하는 것이 중요하다.