본문 바로가기
Data Science/Pandas, Numpy

[Numpy] 넘파이 개념 및 필수 함수 정리

by Queen2 2022. 9. 27.
728x90
반응형

 Numpy 란?

  • 다차원배열(ndarray)의 효과적 처리를 도와주는 라이브러리
  • [[ ]] 대괄호 2개는 2차원, [[[ 3개는 3차원으로 차원 
  • 벡터와 행렬 선형대수 계산에 주로 사용
  • 차원의 수(ndim), 차원의 모양은 shape 기능이용
  • 벡터 연산이 가능해서 연산속도가 매우 빠름

 

√ Numpy 특징

  • numpy 의 배열은 반드시 동일한 데이터 타입으로 자동 변환/저장된다.
x = [1,2,'K']

a = np. array(x)

print(a)

>>> ['1'  '2'  'K'] 

#전체 데이터 타입을 string으로 자동으로 통일시킴

 

√ Numpy 필수 함수

 

1차원 배열 형성

x = np.array(리스트 or 튜플) ---------------<class 'numpy.ndarray'>

차원의 크기 = x.ndim

총 요소 갯수 = x.size

각 차원의 크기 = x.shape

데이터타입 = x.dtype

각 요소의  byte 수 = x.itemsize

 

[ Random 값 생성 ]

랜덤값 고정 = np.random.seed()

0과 1사이에서 임의의 float값 추출 = np.random.random(n)

균등분포에서n개의 표본 추출 = np.random.rand(n)

정규분포에서n개의 표본 추출 = np.random.randn(n)

최소 최대에서 n개의 표본 추출 = np.ramdom.randint(min,max,n)

지정된 리스트에서 랜덤값 추출 = np.random.choice(리스트)

기존 array의 순서가 섞임  = np.random.shuffle(array)

 

[ 배열 생성 함수 ]

np.zeros(shape)   >  [0 0 0 0 ...]

np.ones(shape)    >  [1 1 1 1 ...]

np.empty(shape)  >  임의의 float64 값으로 채움

np.full(shape, n개)  > 지정된 n개 개수만큼 값으로 채움

np.linspace(start,stop,n) > start과 stop 사이의 값 n개 생성

 

[ 배열 삭제/추가/삽입 ]

np.delete(array, 삭제 index)

np.append(array, 추가value, 추가 위치index)

np.insert(array, 추가 위치index, 삽입value)

 

[ 배열 변환 ]

np.arrange(n).reshape((행,열)) > 행*열의 모양으로 변환해라

이렇게 reshape한 배열을 순회하고 싶다면

 

for x in np.nditer(array): print(x)

: 이런식으로 nditer을 사용 가능

 

 

[ 데이터 타입 변환 ]

x = np.array(리스트 or 튜플)

x.astype(타입)

예시) np.int64, np.string_, np.str_, np.float64 등

 

 

[ 벡터연산 (Vectorized Operation) ]

▷ 파이썬과 달리, 요소간의 (사칙)연산을 지원한다는 차이점 존재

 

arr1 = np.array([1,2,3])

arr2 = np.array([4,5,6])

 

arr1 + arr2  >> [5,7,9]

arr1 - arr2 >> [-3,-3,-3]

arr1 * arr2 >> [4,10,18]

arr1 / arr2 >> [1/4,2/5,3/6]

 

 

▷ 벡터 + 스칼라 연산에서 자동으로 스칼라가 Broadcasting되어 연산됨

 

k =2

arr1 + k >> [1+2, 2+2, 3+2]

arr1 -k >> [1-2, 2-2, 3-2]

 

Source: https://www.researchgate.net/figure/Broadcasting-in-NumPy_fig1_326377197

위 그림처럼 배열shape가 다른 array 혹은 스칼라와 연산을 할 때 numpy에서는 자동으로 shape를 채워넣어서 계산이

된다는 거죠!

 

 

▷ 비교연산을 실행할 때도 벡터화가 가능합니다

 

arr1 == 0 >> [ False, False, False]

arr1 >= 0 >> [True, True, True]

arr1 >1  >> [False, True, True]

 

 

 

728x90
반응형

댓글