파이썬 기초문법 정리2 Numpy에 대해서(1)
Numpy는 파이썬의 서브 패키지 개념의 라이브러리로서 별도 설치가 필요하다.
주로 배열과 행열을 효과적으로 다룰 수 있도록 되어있다.
Numpy에는 배열용 데이터형 ndarray와 행열용 데이터형 matrix가 있다.
이것들의 배열과 행렬의 요소 데이터형은 한종류로 종합해야하는 경우가 있는데
이 경우는 int16이나 float32등의 numpy에서 유래된 데이터 형태가 있다.
numpy는 전용 계산 메소드가 있어서 고속으로 배열이나 행열의 계산이 가능하다.
numpy를 활용하기 위해서 먼저 설치와 import가 필요하다.
설치는 pip install numpy를 치면 자동으로 진행할 수 있다.
주로 코딩상단에 import 구문을 먼저 써준다.
IN
import numpy as np
a = np.array([1, 2, 3]) #1차원배열
a
OUT
array([1, 2, 3])
IN
print(a)
type(a)
OUT
[1 2 3]
numpy.ndarray
#프린트해보면 리스트랑 비슷하지만 데이터형은 numpy.ndarray다
IN
a.shape
OUT
(3,)
#1차원배열에 3개의 요소가 들어가있는걸 확인할 수 있다.
2차원배열도 넣오보고 확인해보자.
IN
b = np.array([[1, 2, 3], [4, 5, 6]])
b.shape
OUT
(2, 3)
차원의변환 - reshape
IN
c1=np.array([0, 1, 2, 3, 4, 5])
c2=c1.reshape((2, 3))
OUT
array([[0, 1, 2], [3, 4, 5]])
차원의변환 - reshape
IN
c1=np.array([0, 1, 2, 3, 4, 5])
c2=c1.reshape((2, 3))
OUT
array([[0, 1, 2], [3, 4, 5]])
2행3열의 행렬에 순서대로 숫자가 들어간것을 볼 수 있다. reshape는 사용시 요소수가 중요하게된다.
만약 요소수가 3, 4가 들어가면 요소가 부족해져서 에러가 나온다.
다차원행렬 1차원화하여 참조 - ravel()
IN
c3 = c2.ravel()
c3
OUT
array([0, 1, 2, 3, 4, 5])
다차원행렬 1차원화하여 복사 - flatten()
IN
c4 = c2.ravel()
c4
OUT
array([0, 1, 2, 3, 4, 5])
값은 ravel과 같다.
numpy배열의 요소들의 데이터형 확인 - 변수.dtype
기본적으로 int64가 할당되고 변경 가능하다.
IN
d= np.array([1, 2], dtype=np.int16)
d.dtype
OUT
dtype('int16')
numpy배열의 요소들의 데이터형 변경 - 변수.astype
부동소수점은 np.float16을이용한다.
IN
d.astype(np.float16)
OUT
array([1., 2.], dtype=float16)
인덱스와 슬라이스
배열로부터 부부적인 데이터를 취득할 때 간단히 하는법이 인덱스와 슬라이스가있다.
IN
print(a)
a[0]
OUT
[1 2 3]
1
표준의 리스트배열과 마찬가지로 범위지정이 가능하다.
IN
a[1:] #배열은 0번부터 시작하기때문에 1번째부터는 2부터 표시가된다.
OUT
array([2, 3])
2차원일때 인덱스
IN
b[1, 0] #파이썬은 0번째부터이기 때문에
#실재로는2번째행의 1번째열이 표시됨
#위의 정의내린 b = ([[1, 2, 3], [4, 5, 6]])
OUT
4
2차원일때 슬라이스
IN
b[:, 2] #행방향전부와 열방항 3번째값 표시
OUT
array([3, 6])
IN
b[:, [0, 2]] #행방향전부와 열방항 1번째와 3번째값 표시
OUT
array([[1, 3], [4, 6]])