📚 넘파이 기본 설명
넘파이는 다양한 머신러닝 및 딥러닝 모델의 행렬 연산에 주로 사용된다. 처음 데이터 분석을 배울 때에는 주로 판다스를 사용해서 넘파이가 왜 중요한 라이브러리인지 잘 몰랐는데, 본격적으로 딥러닝과 추천시스템을 배우다보니 넘파이의 중요성을 알게 되었다.
넘파이의 기본 단위는 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() 함수도 사용할 수 있으니 참고.
'데이터 분석 > Python, R 문법' 카테고리의 다른 글
[코테] 그리디 알고리즘 (0) | 2022.08.13 |
---|---|
for, if 문 한 줄로 작성하기 (0) | 2022.03.08 |
Python - 리스트, 딕셔너리, 세트 (0) | 2021.11.20 |
[Python] 주피터 노트북 셀 여백 조정 (0) | 2021.11.12 |
윈도우에서 아나콘다 가상환경 설정 (0) | 2021.10.25 |
댓글