numpy
Numpy 패키지와 배열(ndarray) 객체
numpy 를 사용해보자
import numpy as np
: 이렇게 불러와서 사용하면 된다
리스트에 있는 애들은 아무 애들이나 들어갈 수 있기 때문에 넘파이에 형식화 시켜서 집어 넣자
np.array([1,2,3,4,5])
comprhension으로 집어넣을 수 도 있다
np.array([range(i,i+3) for i in [1,3,5])
: array([1,2,3],[3,4,5],[5,6,7])
: 2차원 구조 생성 했음
초기화를 해보자
np.zeros(10)
np.ones((2,4,))
np.full((3,4,),5))
range는 리스트를 생성하고
arange는 배열을 생성한다
np.arange(0,10,2)
np.linspace(0,100,5, dtype=int)
난수 관련
np.random.random((3,3))
: 사이즈를 준다, 0~1 사이의 값으로 구성
np.random.randint(0,10,(3,3))
np.random.normal(0,1,(3,3))
: 정규 분포를 갖는다, 0은 평균, 1은 표준편차
랜덤 값은 재현성이 중요, seed를 사용
np.random.seed(0)
arr - ndim(차원 정보) - shape(행/열, 원소의 구조 정보) - size(원소의 개수) - dtype(data type)
shape이 제일 중요하다
인덱싱, 단일 원소 접근
슬라이싱, end는 반드시 있어야 함
형태 변환
np.arange(12),reshape(-1,4)
arr[:,:]
: 전체 표현
배열 객체의 연결
np.concatenate([list1, list2], axis=0)
: 리스트 안에 연결, 첫번쨰 축이라서 0
np.vstack([arr1,arr1])
np.hstack([arr1,arr1])
내장 함수(vectorize function)
python이 가지고 있는 loop는 느리다
np에서는 ufunction(universal function) 사용 권장
np.sum(arr2), arr2.sum()
np.sum(arr2,axis=0), arr2,sum(axis=0)
np.min()
브로드캐스팅
매트릭스 행렬 연산을 위해서는 shape이 맞아야 한다
행열 구조를 동일하게 맞춰주는 것이 브로드캐스팅이다
Xmean=X.mean(axis=0)
부울 배열과 마스킹 연산
X=np.random.randint(1,10, size=3,4)
(X>5) & (X<8)
X[(X>5)&(X<8)]
팬시 인덱싱
객체의 정렬
np.sort(x)
: 원본은 유지
x.sort()
: 원본이 정렬
argsort 함수, sort된 인덱스를 전달
https://www.youtube.com/watch?v=rfTin5JeAas