NumPy란?

다차원 행렬과 연산을 지원하며 수학적 연산을 빠르게 수행하도록 설계된 라이브러리

 

리스트 vs NumPy

항목 리스트 NumPy
속도 느림 빠름
메모리 사용 사용량 높음 비교적 낮음
데이터 형식 여러 자료형 혼합 동일한 하나의 자료형만 허용
연산 방식 반복문 등 외부 문법 필요 벡터화된 연산 지원

 

※ NumPy는 기본적으로 대량의 데이터를 다루는 데에 특화되어 있음

 

배열 생성 및 배열 상태 확인

import numpy as np
arr = np.array([2025, 9, 8, 18, 21])

print(arr.shape)    # 형태
print(arr.ndim)     # 깊이(차원)
print(arr.size)     # 요소 개수
print(arr.dtype)    # 요소의 데이터 타입

위 코드 결과

⚠️ 주의
1차원 배열은 (5, )와 같이 [차수] 없이 [요소의 개수]만 출력됨
(1, 5)라는 표기는 나오지 않음

 

arr_int = np.array([2025, 9, 8])
print(arr_int.dtype)    # int64 (8byte)

arr_float = np.array([1.234, 3.456, 9.876])
print(arr_float.dtype)  # float64

arr_bool = np.array([True, False, True, False])
print(arr_bool.dtype)   # bool

arr_str = np.array(['hello', 'world', 'numpy-lib', 'great'])
print(arr_str.dtype)    # <U9 : U(유니코드) + 요소 중 가장 긴 문자열 길이

위 코드 결과

 

특정 값으로 초기화된 배열

# zeros
arr_z = np.zeros((3, 3))
print(arr_z, arr_z.dtype)

# ones
arr_o = np.ones((5, 2))
print(arr_o, arr_o.dtype)

# full
arr_f = np.full((4, 2), 7)
print(arr_f, arr_f.dtype)

 

임의의 특정 배열과 같은 형태(like)로 새 배열 생성

# 원본 행렬을 넣고 '그와 같은 형태'로 생성하기
arr = np.array([[10, 20], [30, 40]])
print(arr.shape)

# zeros_like
print(np.zeros_like(arr))

# ones_like
print(np.ones_like(arr))

# full_like
print(np.full_like(arr, 9))

 

수열 생성

  • arange : 특정 범위 내 숫자들
  • linspace : 특정 범위 내 숫자들을 균등한 간격으로
  • logspace : linspace의 로그 버전
# np.arange(start, end, step)
# range와 사용법 동일
arr = np.arange(1, 10)
arr = np.arange(10)

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

---
# np.linspace(start, end, num=50)
# 양 끝값을 포함하는(이상/이하) 범위에서 num개의 개수만큼 분할된 수열
arr = np.linspace(1, 10, 5)

# 결과
# [ 0.   2.5  5.   7.5 10. ]

---
# np.logspace(시작지수, 끝지수, num, base=10)
arr = np.logspace(1, 3, 4)

# 결과
# [  10.           46.41588834  215.443469   1000.        ]

 

+ Recent posts