Python
[Python] Numpy 사용
챈박
2021. 7. 27. 19:08
Numpy는 Python에서 벡터, 행렬 등 수치 연산을 수행하는 선형대수 라이브러리이다.
Numpy에서는 모든 배열의 값이 기본적으로 같은 타입이어야 한다. 때문에 서로 다른 데이터들로 구성되어있는 array 일 경우 같은 자료형의 데이터로 맞추거나 자료형 맞추는것이 불가능 한 경우는 오류가 발생한다
(Numpy에서 array를 행렬로 봐야함)
list를 array로 변경
import numpy as np
data1 = [0,1,2,3,4,5]
a1 = np.array(data1)
a1
->
array([0, 1, 2, 3, 4, 5])
data2 = [0.1, 5, 4, 12, 0.5]
a2 = np.array(data2)
a2
->
array([ 0.1, 5. , 4. , 12. , 0.5])
a1.dtype
->
dtype('int32')
#int형 32비트
a2.dtype
->
dtype('float64')
arange() - 특정 범위 내에서 일정한 간격의 데이터 배열 생성
arange(start, stop, step, dtype) -> start, step, dtype 생략 가능 (dtype 생략 시 다른 매개변수로부터 type을 추론한다)
np.arange(0, 10, 2)
->
array([0, 2, 4, 6, 8])
np.arange(1, 10)
->
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.arange(5)
->
array([0, 1, 2, 3, 4])
reshape() - 다차원 변환
np.arange(12).reshape(4,3)
->
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]])
#shape -> 배열 각 축의 크기
b1 = np.arange(12).reshape(4,3)
b1.shape
->
(4, 3)
#4행3열의 배열
b2 = np.arange(5)
np.arange(5)
->
array([0, 1, 2, 3, 4])
b2.shape
->
(5,)
# 5개의 열을 가지는 배열
linspace() - 일정한 간격의 데이터를 가지는 배열 만들기
np.linspace(start, stop, num, endpoint=True) -> 마지막 endpoint=True 또는 False로 줄 수 있는데 Default는 True이다. True일 경우 stop값을 포함하고 False일 경우는 포함하지 않는다는 옵션이다.
np.linspace(1, 10, 10)
->
array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
np.linspace(1, 10, 10, endpoint=False)
->
array([1. , 1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1])
np.linspace(0, np.pi, 20)
->
array([0. , 0.16534698, 0.33069396, 0.49604095, 0.66138793,
0.82673491, 0.99208189, 1.15742887, 1.32277585, 1.48812284,
1.65346982, 1.8188168 , 1.98416378, 2.14951076, 2.31485774,
2.48020473, 2.64555171, 2.81089869, 2.97624567, 3.14159265])
eye() - 단위 행렬 만들기
np.eye(3) #단위 행렬(특수 배열)
->
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
zeros() - 모두 0으로 된 배열 생성
np.zeros(10)
->
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])
np.zeros((3,4))
->
array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])
astype() - 데이터프레임 타입 바꾸기
str_a1 = np.array(['1.567', '0.123', '5.123', '9', '8'])
num_a1 = str_a1.astype(float)
num_a1
->
array([1.567, 0.123, 5.123, 9. , 8. ])
sum() - 합계, mean() - 평균, std() - 표준편차, var() - 분산
arr3 = np.arange(5)
arr3
->
array([0, 1, 2, 3, 4])
[arr3.sum(), arr3.mean(), arr3.std(), arr3.var()]
->
[10, 2.0, 1.4142135623730951, 2.0]
cumsum(), cumprod()
반응형