데이터 분석
[Numpy] ndarray
프로그린
2024. 4. 29. 15:47
Numpy란
- 과학 컴퓨팅을 위한 기본 패키지
- 다차원 배열 객체, 이로부터 유도한 마스크된 배열 및 행렬 등과 같은 객체, 논리, 배열 형태 조작, 정렬, 선택, I/O를 비롯한 배열에 대한 빠른 작업을 위한 다양한 루틴을 제공
- 이산 푸리에 변환, 기본 선형 대수학, 기본 통계 연산, 무작위 시뮬레이션 등등 다양한 기능 제공
ndarray 자료형의 개념과 생성
- 벡터 연산과 브로드캐스팅을 지원
- list, tuple 같은 시퀀스 자료형으로부터 생성
- list, tuple 등의 시퀀스 자료형과는 다르게 같은 데이터 타입 만을 요소로 가질 수 있고, 크기도 고정되어 있음.
import numpy as np
a_list = [1, 2, 3, 4]
a_array = np.array(a_list)
a_array
>>> array([1, 2, 3, 4])
ndarray의 중요 속성
- shape : 배열의 형태
- dtype : 요소의 데이터 타입
- ndim : 차원수. len(x.shape) 와 동일
- size : 요소의 개수. shape의 모든 값의 곱
- itemsize : 요소 데이터 타입의 크기(byte 단위)
- data : 실제 데이터. 직접 사용자가 접근할 필요는 없음
import numpy as np
b_list = [[1, 2, 3],[4, 5, 6], [7, 8, 9]]
b_array = np.array(b_list)
print(b_array)
>>> [[1 2 3]
[4 5 6]
[7 8 9]]
b_array.shape
>>> (3, 3)
b_array.dtype
>>> dtype('int32')
b_array.ndim
>>> 2
len(b_array.shape)
>>> 2
b_array.size
>>> 9
b_array.itemsize
>>> 4
초기화 관련 함수
- zeros() : 모든 성분을 0으로 생성
- ones() : 모든 성분을 1로 생성
- empty() : 값을 초기화하지 않고(메모리 상태에 따라 다른 값이 들어감) 생성
- dtype은 디폴트가 float64이고, 변경을 원하면 지정해야 함.
np.zeros((3, 3))
>>> array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
np.ones((3, 3))
>>> array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
- arange(from, to, step) : 시작점부터 끝점(미포함)까지 step만큼의 간격으로 나열
- linspace(from, to, npoints) : 시작점부터 끝점(포함)까지 n개로 분할
- eye(n) : n by n 의 단위행렬 생성
np.arange(1, 2, 0.1)
>>> array([1. , 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9])
np.linspace(0, 1, 9)
>>> array([0. , 0.125, 0.25 , 0.375, 0.5 , 0.625, 0.75 , 0.875, 1. ])
np.eye(3)
>>> array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
shape과 dtype 변경
- reshape() : 함수 또는 메서드 형태로 제공, 고정된 크기를 유지하면서 shap
X = np.arange(0, 9, 1.)
X
>>> array([0., 1., 2., 3., 4., 5., 6., 7., 8.])
np.reshape(X, (3,3))
>>> array([[0., 1., 2.],
[3., 4., 5.],
[6., 7., 8.]])
X.reshape(3,3)
>>> array([[0., 1., 2.],
[3., 4., 5.],
[6., 7., 8.]])
- astype() : 배열에서 dtype을 변경
a = np.arange(3)
a
>>> array([0, 1, 2])
a.dtype
>>> dtype('int32')
a = a.astype(float)
a.dtype
>>> dtype('float64')