<
Numpy 많이쓰는 함수 정리
>
上一篇

Selfie : Self-supervised Pretraining for Image Embedding
下一篇

강화학습 기초정리

Numpy 란

다들 아시다시피 파이썬에서 행렬관련 계산을 빠르게 해주는 패키지죠
모르던 시절에 넘피라고 읽었었는데 넘파이였… 아직도 습관적으로 튀어나오는
항상 쓰던 패키지지만 정리겸 복습겸 한번 남겨봐요

Numpy는 ndarray 라는 넘파이 전용 리스트를 사용하는데 쉽게 행렬이라 생각하시면 됩니다. Tensorflow 나 pytorch, keras 등의 프레임웍도 전부 이 ndarray를 사용하니 익혀두면 매우 유용합니다.
한가지 타입의 정보만 저장이 가능하지만 연산속도에서 엄청난 이점이!
반복문을 행렬로 변화시키는걸 Vectorization 기법이라 하죠.
ndarray의 앞의 nd 는 n 차원을 의미… 그냥 그렇다구요

편한 점이라면 파이썬 리스트에서 사용하던 : 를 이용한 슬라이싱도 가능하고 브로드캐스팅이란 기능덕에 차원이 맞지 않는 행렬끼리도 연산이 가능해요. 물론 아얘 이상한거끼린 안되고 (3,5) 과 (2,3,5) 이런 행렬은 앞에행렬을 2번 반복해서 (2,3,5)로 만들어 연산해 줍니다. 좋은 기능이긴 하나 의도하지 않은 계산이 될수도 있으니 주의를…

일단 불러옵시다

> import numpy as np

그럼 시작해볼게요

생성 함수

> li = [1,2,3,4,5,6]
> arr = np.array(li)     # ndarray로 변환
> display(arr)
array([1, 2, 3, 4, 5, 6])
> np.arange(1,7)  
array([1, 2, 3, 4, 5, 6])
> np.zeros((2,3))
array([[0., 0.],
       [0., 0.],
       [0., 0.]])

> np.full((2,3), 55)  # 자매품 0대신 다른값 넣는 함수
array([[55, 55, 55],
       [55, 55, 55]])

> np.eye(2)   # 단위행렬(주대각성분이 1이고 나머진 0) 생성 함수
array([[1., 0.],
        0., 1.])

연산 함수

연산에 사용하는 함수들이죠. 대부분 함수들은 전체단위로 계산을하며 행별 혹은 열별로 사용하고 싶을때는 axis 변수를 이용해 주면 됩니다

형상 관련 함수

> data = np.arange(1,7)
> data.shape
(6,)
> data = np.arange(1,7)
> data.reshape((2,3))   # 2,3 행렬로 변경
> # np.reshape(data, (2,3))   이렇게도 가능 
array([[1, 2, 3],
       [4, 5, 6]])

> data.reshape(-1)      # 쭉 필때
array([1, 2, 3, 4, 5, 6])

> data.reshape((3,-1))    # 3행으로(열은 알아서)
array([[1, 2],
       [3, 4],
       [5, 6]])

> data = np.arange(1,7)
> data = data.reshape((2,3,1))
> print(data.shape)
> data = data.transpose((0,2,1)) # 두번째와 세번째의 순서 변경
> print(data.shape)
(2, 3, 1)
(2, 1, 3)

난수 발생 함수들

np.random.seed(42)

np.random.randn()
표준 정규분포에 따른 n 개의 무작위 숫자 생성

> np.random.randn(5) # 5개의 숫자 생성
array([ 0.69406812, -1.15425813,  0.98864607,  0.73682549, -0.57181785])
> np.random.randint(0, 10, 5)  # 0 이상 10 미만의 숫자 5개 랜덤 생성
array([7, 0, 7, 7, 2])

마치며

여러가지 더있지만 일단 자주 쓰던것으로 뽑아봤습니다 당연히 넘파이엔 엄청나게 많은기능이 있지만 실제로 사용하는 것은 조금 적은편… Tensorflow 나 pytorch 의 함수를 사용하게 되므로 ㅠㅠ 중요한게 생각나면 또 업데이트 할께요 저도 까먹으면 가끔씩 보려고 정리한거라 ㅠ

Top
Foot