give_me_true 2021. 8. 17. 23:15

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