코딩하는 해맑은 거북이
[Numpy] Numpy란, Numpy 특징, ndarray 본문
본 게시물의 내용은 'Numpy(부스트캠프 AI Tech)' 강의를 듣고 작성하였다.
Numpy, Numerical Python
- 파이썬의 고성능 과학 계산용 패키지
- Matrix와 Vector와 같은 Array 연산의 사실상의 표준
Numpy의 특징
- 일반 List에 비해 빠르고, 메모리 효율적
- 반복문 없이 데이터 배열에 대한 처리를 지원함
- 선형대수와 관련된 다양한 기능을 제공함
- C, C++, 포트란 등의 언어와 통합 가능
ndarray
import numpy as np
- numpy의 호출 방법
- 일반적으로 numpy는 np라는 alias(별칭) 이용해서 호출함 → 특별한 이유는 없음, 세계적인 약속 같은 것
test_array = np.array([1, 4, 5, 8], float)
print(test_array)
type(test_array[3])
type(test_array)
[1. 4. 5. 8.]
numpy.float64
numpy.ndarray
- numpy는 np.array 함수를 활용하여 배열을 생성함 → 이렇게 생성된 배열을 ndarray 객체라 부른다.
- numpy는 하나의 데이터 type만 배열에 넣을 수 있음
- list와 가장 큰 차이점 → dynamic typing not supported
- C의 array를 사용하여 배열을 생성함
cf) Numpy Array vs Python List
numpy array는 메모리의 어떤 공간에 데이터의 값들이 차례대로 저장된다.
그러나 Python list는 메모리의 주소값이 리스트에 차례대로 저장된다.
즉, 데이터의 값을 찾기 위해서는 한단계 더 가야한다.
그래서 numpy array는 메모리의 접근성이 좋고, 메모리의 크기가 일정하기 때문에 연산이 유용하다.
a = [1, 2, 3, 4, 5]
b = [5, 4, 3, 2, 1]
a[0] is b[-1]
True
a = np.array(a)
b = np.array(b)
a[0] is b[-1]
False
test_array = np.array([1, 4, 5, "8"], float)
print(test_array)
print(type(test_array[3]))
print(test_array.dtype)
print(test_array.shape)
[1. 4. 5. 8.]
<class 'numpy.float64'>
float64
(4,)
- shape : numpy array의 dimension 구성(array의 크기, 형태 등에 대한 정보)을 반환함
* ndim - number of dimensions = rank
* size - data의 개수 = element 갯수
test_tensor = [[[1,2,3,4], [1,2,5,8]], [[1,2,3,4], [1,2,5,8]]]
np.array(test_tensor).shape
(2, 2, 4)
np.array(test_tensor).ndim
3
np.array(test_tensor).size
16
- dtype : numpy array의 데이터 type을 반환함
ndarray의 single element가 가지는 data type
각 element가 차지하는 memory의 크기가 결정됨
C의 data type과 compatible(호환 가능)
- nbytes - ndarray object의 메모리 크기를 반환함
np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.float32).nbytes
# 32 bits = 4 bytes >> 6 * 4 bytes
24
np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.int8).nbytes
# 8 bits = 1 bytes >> 6 * 1 bytes
6
np.array([[1, 2, 3], [4.5, "5", "6"]], dtype=np.float64).nbytes
# 64 bits = 8 bytes >> 6 * 8 bytes
48
'Python > Numpy | Pandas' 카테고리의 다른 글
[Numpy] array를 list로 변환 (0) | 2023.01.02 |
---|---|
[Numpy] comparisons, boolean&fancy index, numpy data i/o (0) | 2022.12.27 |
[Numpy] shape, creation, operation 관련 함수 (0) | 2022.12.27 |
[Numpy] Numpy 배열 생성 방법 (0) | 2021.01.07 |
[Numpy] Numpy 정의, 설치, 라이브러리 선언 (0) | 2021.01.05 |