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()

 

반응형