파이썬 기초 04 numpy and array

파이썬 기초 04 numpy and array

preface 이번 포스트에서는 파이썬을 이용하여 데이터분석을 할 수 있게 해주는 numpy 패키지에 대해 알아보겠습니다. numpy 패키지는 행렬 연산에 특화되어있어 matlab 과 유사하다는 인상을 받았습니다.

참고: Python 에서 중요한 라이브러리

행렬의 입력: array, matrix

import numpy as np

x=np.arange(10)
x           # array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
np.ones(10) # array([ 1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.])



# 리스트를 array로
income = [50000, 50000, 100000, 25000, 32100, 30000]
income # [50000, 50000, 100000, 25000, 32100, 30000]

income2 = np.array(income)
income2          # array([ 50000,  50000, 100000,  25000,  32100,  30000])
income2[0]       # 50000
income2[2:]      # array([100000,  25000,  32100,  30000])
income2[:2]      # array([50000, 50000])
income2[[2,3,5]] # array([100000,  25000,  30000])

# matrix 를 사용할 수도 있습니다
np.matrix([[1,2],[3,4]])

행렬의 연산

# 행렬 matrix 연산
data1 = [1,2,3,4]
data2 = [5,6,7,8]
A = np.array(data1).reshape(2,2)
B = np.array(data2).reshape(2,2)

A   # array([[1, 2],[3, 4]])
B   # array([[5, 6],[7, 8]])

A+B # array([[ 6,  8],[10, 12]])
A-B # array([[-4, -4],[-4, -4]])
A*B # array([[ 5, 12],[21, 32]]) 행렬 곱이 아니라 같은 위치의 원소들끼리의 곱
A/B # array([[ 0.2       ,  0.33333333],[ 0.42857143,  0.5       ]])

np.dot(A,B) # array([[19, 22],[43, 50]]) 행렬 곱
np.dot(B,A) # array([[23, 34],[31, 46]]) 행렬 곱

# numpy array의 주요 속성: shape, dtype, ndi,
A.ndim  # 2
A.shape # (2, 2)
A.dtype # dtype('int32')

A.T              # array([[1, 3],[2, 4]]) 전치행렬 transpose
np.diag(A)       # array([1, 4]) 대각행렬 diagonal matrix
np.linalg.inv(A) # array([[-2. ,  1. ],[ 1.5, -0.5]]) 역행렬 inverse matrix
np.linalg.eig(A) # (array([-0.37228132,  5.37228132]), array([[-0.82456484, -0.41597356],[ 0.56576746, -0.90937671]])) eigen value, eigen vector


# 참고: array 대신 list 로도 다음과 같이 사용할 수 있습니다.
x=[[4,2],[3,5]] # array가 아니라 list
x               # [[4, 2], [3, 5]]
np.diag(x)      # array([4, 5])

numpy 를 이용한 기술통계량

income = [50000, 50000, 100000, 25000, 32100, 30000]
income2 = np.array(income)

income2 # array([ 50000,  50000, 100000,  25000,  32100,  30000])

np.mean(income2) # 평균     47850.0
np.std(income2)  # 표준편차  25224.574657794859
np.min(income2)  # 최솟값   25000
np.max(income2)  # 최댓값  100000

데이터타입 변경

d1 = np.array([1,2,3,4])
d1.dtype # dtype('int32')

d2 = np.array([1,2,3,4],dtype=np.int64)
d2.dtype # dtype('int64')

d3 = np.array([1,2,3,4], dtype=np.float32)
d3.dtype # dtype('float32')
d3       # array([ 1.,  2.,  3.,  4.], dtype=float32)

Tag Cloud

R    SQL    classification    demension reduction    jekyll    python    regression    supervised   
Hyeongjun Kim

Hyeongjun Kim

Financial Economist, Data Scientist, and Hearthstone Player

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora