반응형
Numpy 란?
- 수치 계산을 하기위한 파이썬 라이브러리
- 딥러닝에서 사용되는 텐서와 매우유사
- 백터와 행렬 단위의 대용량 수치 연상을 빠르게 진행
- 병렬 연산한다
- 백처(vector)
- 1차원 데이터(1차원 배열)
- 스칼라가 연속적으로 여러개 모여 있는것
- 스칼라(scalar) : 단순하게 측정한 하나의 값
- 행렬(Matrix)
- 2차원 데이터(2차원 배열)
- 1 차원 데이터가 여러개 모여 있는것
import numpy as np
백터
lst = [1,2,3,4,5,6]
arr = np.array(lst)
arr
# 출력
array([1, 2, 3, 4, 5, 6])
행렬
lst =[
[1,2,3],
[4,5,6]
]
arr = np.array(lst)
arr
# 출력
array([[1, 2, 3],
[4, 5, 6]])
lst = [
[
[1,2,3],
[4,5,6],
[1,1,1]
],
[
[7,8,9],
[10,11,12],
[1,1,1]
]
]
arr = np.array(lst)
arr
# 출력
array([[[ 1, 2, 3],
[ 4, 5, 6],
[ 1, 1, 1]],
[[ 7, 8, 9],
[10, 11, 12],
[ 1, 1, 1]]])
type(arr)
# 출력
numpy.ndarray
인덱싱과 슬라이싱
- 기본적으로 파이썬에서 사용되는 인덱싱과 슬라이싱을 그대로 따라간다.
arr[1:3]
# 출력
array([2, 3])
- 다차원 슬라이싱
arr = np.array([
[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]
])
arr
# 출력
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[10, 11, 12]])
arr[0::3,0::2]
# 출력
array([[ 1, 3],
[10, 12]])
arr[::2,::2]
# 출력
array([[1, 3],
[7, 9]])
arr.shape[0] # 행 갯수
#출력
4
arr.shape[1] # 열 갯수
#출력
3
자주쓰는 numpy 데이터 타입
np.array([1,2,3],dtype = np.int32) # 4 바이트 크기의 정수 1 바이트 =8
np.array([1,2,3],dtype = np.int64) # 8 바이트 크기의 정수
np.array([1,2,3],dtype = np.uint8) # 1바이트 크기의 부호 없는 정수(0~255)
np.array([1,2,3],dtype = np.float32) # 4바이트 크기의 실수
np.array([1,2,3],dtype = np.float64) # 8바이트 크기의 실수
np.array([1,0,1],dtype = np.bool_) # 불 자료형
마스킹(masking)
- boll 배열을 마스크로 사용하여 데이터의 특정 부분을 선택하수 있다.
mask_list = [True,False,True,False]
arr[mask_list]
# 출력
array([[1, 2, 3],
[7, 8, 9]])
mask_list = [True,False,True]
arr[:,mask_list]
#출력
array([[ 1, 3],
[ 4, 6],
[ 7, 9],
[10, 12]])
mask = arr > 2
mask
# 출력
array([[False, False, True],
[ True, True, True],
[ True, True, True],
[ True, True, True]])
arr[mask] # 모든 스칼라에 마스킹을 할경우 백터로 반환된다.
# 출력
array([ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
- 여러개의 인덱스 값들을 이용해서 가져오기
index_list = [0,2]
arr[index_list]
# 출력
array([[1, 2, 3],
[7, 8, 9]])
numpy 함수
- 배열의 각 요소별로 연산
arr1 = np.array([1,5,1])
arr2 = np.array([3,2,7])
np.add(arr1,arr2)# (+)
# 출력
array([4, 7, 8])
arr * 2
# 출력
array([[ 2, 4, 6],
[ 8, 10, 12],
[14, 16, 18],
[20, 22, 24]])
arr * np.array([
[1],
[2],
[3],
[4],
])
# 출력
array([[ 1, 2, 3],
[ 8, 10, 12],
[21, 24, 27],
[40, 44, 48]])
- Norm
- 백터의 크기를 측정하는 함수
np.linalg.norm([-1,2,3])
# 출력
3.7416573867739413
- 내적(dot product)
- 두벡터의 각요소끼리의 곱의합
- 결과값은 스칼라
a = np.array([1,2,3]) # 사과 딸기 참외
b = np.array([4,5,6])
np.dot(a,b)
# 출력
32
- 행렬곱
- 2차원 공간에서 내적을 한다.
- 앞에 행렬의 열개수와 뒤에 행렬의 행개수가 동일해야한다.
- 연산결과의 shape 앞에 핼렬의 행개수와 뒤에 행렬의 열개수가 나온다.
x = np.array([
[80,90,70],
[81,93,72],
[71,73,62],
[61,70,72] # 한행은 한학생 과거 모의고사 점수
])
w = ([
[0.4],
[0.2],
[0.3]
])
x @ w
# 출력
array([[71. ],
[72.6],
[61.6],
[60. ]])
배열만들기
- np.arange
- range 함수와 비슷하지만 ndarray 가 반환된다.
q = np.arange(10)
q[1::2]
# 출력
array([1, 3, 5, 7, 9])
np.zeros
- 0으로 채워진 배열 만들기
np.zeros([4,1,3])
# 출력
array([[[0., 0., 0.]],
[[0., 0., 0.]],
[[0., 0., 0.]],
[[0., 0., 0.]]])
np.ones : -1로 채워진 배열
반응형
'python' 카테고리의 다른 글
ChatGPT 에게 물어보다 - 주니어,취준 개발자의 전망 (0) | 2023.02.20 |
---|---|
[python]파이썬 - numpy_차원 (0) | 2023.02.10 |
[pypthon]파이썬 - pandas 를 이용한 eda (0) | 2023.02.02 |
[python]파이썬 - pandas (0) | 2023.01.31 |
[python]파이썬 - open API (2) | 2023.01.30 |
댓글