본문 바로가기
데이터 분석/Python, R 문법

Numpy (넘파이) 기본 함수 정리

by 장찐 2022. 1. 26.

 

📚 넘파이 기본 설명 

 

 넘파이는 다양한 머신러닝 및 딥러닝 모델의 행렬 연산에 주로 사용된다. 처음 데이터 분석을 배울 때에는 주로 판다스를 사용해서 넘파이가 왜 중요한 라이브러리인지 잘 몰랐는데, 본격적으로 딥러닝과 추천시스템을 배우다보니 넘파이의 중요성을 알게 되었다. 

넘파이의 기본 단위는 numpy.ndarray 라고 불리는 넘파이 배열이다. 넘파이 array는 다양한 차원을 가지고 있다. 

 

 


기본 함수 및 문법 

 

✅ numpy array 생성 

# 행, 열
np.zeros((2,3))

# 차원, 행, 열
np.ones((4,3,2))

np.zeros 나 np.ones 함수에 인자 두개를 입력할 경우 : 행, 열

인자를 3개 입력할 경우 : 차원, 행, 열

 

# range 함수와 동일 (마지막 숫자는 포함 안 됨) 
np.arange(10)

# 등차수열 (처음, 끝, 원소 수)
np.linspace(0,10,5)

# 랜덤 
np.random.randint(2,10,5)

arange 함수는 range 함수와 동일하게 마지막 숫자는 생략된다는 것 주의 

linspace는 등차수열을 생성하는 함수. start / end / number of element 순서대로 입력 

 

 

✅ 차원 확인 및 변환 

temp = np.ones((3,4,5))

#전체 형태 확인 
temp.shape
#첫 번째 배열 크기 확인 = 차원 
len(temp)
temp.shape[0]

#차원 확인 
temp.ndim

shape 함수로 전체 차원을 확인할 수 있다. len(temp)와 temp.shape[0]의 결과는 동일함. 

 

temp2 = np.ones((2,3))
temp2

#다른 차원이면 에러 
temp2.reshape(1,4)
#1차원 
temp2.reshape(6)
#2차원 
temp2.reshape(1,6)

넘파이 배열의 차원 변환을 할 때에는 원래 배열인 2x3 행렬로 만들수 있는 형태로만 변경이 가능하다. 

따라서 (1,4) 형태로 변경하면 에러 발생한다. 

 

또한 라인7은 1차원, 라인9는 2차원이라서 계산 속도에 차이가 있으니까 유의해야 함. 

 

 

d = np.arange(0,10)
d

#기본적으로 앞 부분부터 자른다 
d1 = d.reshape(2,5)
d1

#다시 행 단위로 붙기이 
d1.ravel()

ravel 함수를 사용하면  reshape 한 넘파이 배열을 다시 rowwise로 붙일 수 있다.  

 

 

 

✅ 조건문을 이용한 인덱스 검색 

arr = np.random.normal(0, 1, (5,3))
arr

np.where(abs(arr) > 1,'out','in')

if 문과 유사하게 조건을 통해서 인덱싱이 가능하다. 

 

 

 

✅ 배열 병합 

import numpy as np
a=np.array([[1,3],[0,-1]])
b=np.random.randint(0, 10,4).reshape(2,2)

#row 방향으로 붙이기 
np.concatenate([a,b], axis=0)
np.vstack((a,b))

#column 방향으로 붙이기 
np.concatenate([a,b], axis=1)
np.hstack((a,b))

concatenate 할 때, axis =0 이면 행 방향으로, axis =1 이면 열 방향으로 결합한다. 

vstack() 과 hstack() 함수도 사용할 수 있으니 참고. 

 

 

댓글