데이터를 수집하고 가공하는 작업이 선행되어야 하는데, 우리가 얻는 데이터의 대부분은 raw data로 분석에 바로 사용할 수 없다.
분석에 사용할 수 있는 형태로 가공이 필요하다.
가공에는 pandas module이 필요하고
pandas의 데이터 타입을 구성하고 있는 모듈이 numpy module이다.
numpy는 ndarray라는 자료구조를 제공한다.
Numpy(Numerical Python)
수치계산을 용이하게 하기 위한 python module로
대용량의 다차원 배열과 matrix(행렬) 연산을 쉽게 하기 위한 python module이다.
ndarray는 n-dimensional array. 차원의 개념이 존재하는 배열이다.
파이썬의 기본 데이터 타입인 list는 여러 다른 타입의 데이터를 함께 저장할 수 있지만
ndarray는 같은 데이터 타입만 저장가능하다.
사용법
import numpy as np
설치되어 있지 않다면
conda 환경에서는 conda install을 사용할 수 있고
conda install numpy
pip install으로도 설치가 가능하다.
pip install numpy
기본 ndarray 생성법
array1 = np.array([1, 2, 3])
np.array(list)에 리스트를 이용하셔 ndarray를 생성할 수 있다.
ndarray 속성
- shape : ndarray의 형태를 튜플로 나타냄
- dtype : ndarray에 저장된 데이터의 타입을 알려줌
- ndim : ndarray의 차원을 알려줌
list1 = [1, 2, 3]
array1 = np.array(list1)
print(array1)
print(array1.shape)
print(type(array1))
print(array1.dtype)
print(array1.ndim)
# 결과
[1 2 3]
(3,)
<class 'numpy.ndarray'>
int32
1
list2 = [[1, 2, 3],
[4, 5, 6]] # 중첩리스트
array2 = np.array(list2)
print(array2)
print(array2.shape)
print(array2.dtype)
print(array2.ndim)
# 결과값
[[1 2 3]
[4 5 6]]
(2, 3)
int32
2
array2에서 2에 접근하기 위해서 리스트처럼
array2[0][1]을 사용할 수도 있지만 행렬의 개념이므로 array2[0, 1]로 나타내는 것이 더 일반적이다.
타입이 다른 데이터들을 넣어서 생성하면?
앞서 ndarray와 list의 차이점으로 사용되는 데이터 타입에 대해서 말했다.
ndarray에는 같은 타입의 데이터만 저장이 가능한데 만약 여러 종류의 데이터를 넣으면 어떻게 될까?
list3 = [[1, 2],
[3, 4],
[True, 'test']]
array3 = np.array(list3)
print(array3)
print(array3.shape, array3.ndim)
print(array3.dtype)
정답은 '캐스팅이 일어난다'이다!
# 결과값
[['1' '2']
['3' '4']
['True' 'test']]
(3, 2) 2
<U11
모두 문자열 타입으로 변환된 것을 확인 할 수 있다.
(U는 unicode이다)
서로 다른 데이터 타입들이 존재할 때, ndarray는 큰 데이터 타입에 맞추어 생성된다.
int와 float이 섞여있다면 모두 float으로 저장된다.
데이터 타입 변환 astype()
astype()을 이용해서 ndarray내 데이터들의 타입을 변경할 수 있다.
list4 = [1, 2, 3]
array4_int = np.array(list4)
print(array4_int, array4_int.dtype)
array4_float = array4_int.astype('float64')
print(array4_float, array4_float.dtype)
list5 = [1.1, 2.2, 3.3]
array5_int = np.array(list5).astype('int32')
print(array5_int, array5_int.dtype)
arr = np.array([[1,2,3], [4,5,6]], dtype=np.float64)
print(arr, arr.dtype)
[1 2 3] int32
[1. 2. 3.] float64
[1 2 3] int32
[[1. 2. 3.]
[4. 5. 6.]] float64
'Programming > Numpy' 카테고리의 다른 글
[numpy][pandas] np.histogram()으로 도수분포표 만들기 (0) | 2022.03.23 |
---|---|
[numpy] ndarray의 indexing과 slicing (0) | 2022.03.15 |
[numpy] ndarray의 shape과 관련된 함수들 (0) | 2022.03.15 |
[numpy] ndarray를 생성하는 여러가지 방법 2 - random (0) | 2022.03.15 |
[numpy] ndarray를 생성하는 여러가지 방법 1 (0) | 2022.03.15 |