728x90
반응형
넘파이의 기반 데이터 타입은 'ndarray'이다.
아래는 간단한 ndarray의 사용법들이다.
import numpy as np # 넘파이 모듈 임포트 , np로 간단히 사용
list1 = [1,2,3] # 리스트 선언
array1 = np.array(list1) # 리스트를 ndarray형으로 변환
print(type(array1)) # 타입 출력 -> <class 'numpy.ndarray'>
print(array1.shape) # 차원의 크기를 튜플로 나타냄 -> (3, )
print(array1.ndim) # 차원의 차수 출력 -> 1
만약 서로 다른 데이터 유형이 섞인 리스트를 ndarry로 변환하면?
list2 = [1, 2, 'hi'] # 데이터형이 서로 다른 리스트 선언
array2 = np.array(list2) # list2를 ndarry형으로 변환
print(array2, array2.dtype) # 데이터와 데이터형을 출력 -> ['1', '2', 'hi'] <U11
위와 같이 실행을 시켜보면 서로 다른 데이터 유형이
ndarry형으로 변환될 때 데이터 크기가 더 큰 데이터 타입으로 형 변환이 됨.
astype() 메서드를 이용해 데이터 타입을 수동으로 바꾸기도 가능하다.
arry_int = np.array([1, 2, 3]) # ndarray 선언
array_float = array_int.astype('float64') # 데이터 타입을 float64로 변환
print(array_float, array_float.dtype) # 확인 -> [1. 2. 3. ] float64
ndarray를 편리하게 생성하기 위해 arrange(), zeros(), ones()등을 사용하자
array1 = np.arange(1, 10) # 1부터 9까지의 연속된 숫자로 ndarray생성
array2 = np.zeros((3,2), dtype='int32') # (3,2)의 shape값을 가진 모든 값이 0인 ndarray생성
arrat3 = np.ones((3,2)) # (3,2)의 shape값을 가진 모든 값이 1인 ndarray생성
print(array1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(array2) # [[0 0] [0 0] [0 0]]
print(array3) # [[1 1] [1 1] [1 1]]
ndarray의 차원과 크기를 변경 reshape()
array1 = np.range(10) # 0부터 9까지의 수로 ndarray생성
array2 = array1.reshape(2, 5) # 2raw x 5colume으로 변환
array3 = array1.reshape(5, 2) # 5raw x 2colume으로 변환
print(array1) # [0 1 2 3 4 5 6 7 8 9]
print(array2) # [[0 1 2 3 4] [5 6 7 8 9]]
print(array3) # [[0 1] [2 3] [4 5] [6 7] [8 9]]
당연히 지정된 사이즈로 변경 불가하면 오류가 발생한다.
이를 조금이라도 방지하기 위해 -1값을 인자로 사용한다.
array1 = np.range(10) # 0부터 9까지의 수로 ndarray생성
array2 = array1.reshape(-1, 5) # 2raw x 5colume으로 변환
array3 = array1.reshape(5, -1) # 5raw x 2colume으로 변환
print(array1) # [0 1 2 3 4 5 6 7 8 9]
print(array2) # [[0 1 2 3 4] [5 6 7 8 9]]
print(array3) # [[0 1] [2 3] [4 5] [6 7] [8 9]]
이러면 자동으로 -1을 맞는 인자로 찾아 적용해 실행한다.
그래도 역시 변경 불가하면 오류가 발생한다. 이를 잘 고려해 코드를 짜자
-1 인자는 reshape(-1, 1)형태로 자주 사용됨
이는 원본 ndarray가 어떤 형태여도 2차원이고 1개의 colume을 가진 형태로 변환됨
이렇게 간단한 ndarray의 사용법을 알아봤다
다음에는 인덱싱(indexing), 정렬 그리고 선형대수 연산을 다뤄보자
728x90
반응형
'Python > [파이썬] Numpy (Numerical python)' 카테고리의 다른 글
[파이썬] 넘파이(Numpy) #1 Numpy(Numerical Python) (0) | 2021.09.16 |
---|