Numpy를 이용한 행렬 다루기 3탄

Numpy를 이용한 행렬 다루기 3탄

2018, Dec 15    

이번 글에서는 Numpy를 이용할 때 가장 기본이 되는 기본중의 기본 연산에 대하여 한번 정리해 보려고 합니다. 한번 쭉쭉 읽으시면 도움이 되실거라 생각됩니다. 그럼 정리해 보겠습니다.

Sparse 행렬 만들기

import numpy as np
from scipy import sparse

# Dense matrix 형태를 먼저 만듭니다.
matrix = np.array([[0, 0],
                   [0, 1],
                   [3, 0]])

# Sparse Row (CSR) matrix로 변환합니다.
matrix_sparse = sparse.csr_matrix(matrix)

:

  (1, 1)        1
  (2, 0)        3


Numpy 행렬 만들기

import numpy as np

# np.array를 통하여 행렬 만들기
matrix = np.array([[1, 4],
                   [2, 5]])


Dictionary 를 Matrix로 만들기

from sklearn.feature_extraction import DictVectorizer


data_dict = [{'Red': 2, 'Blue': 4},
             {'Red': 4, 'Blue': 3},
             {'Red': 1, 'Yellow': 2},
             {'Red': 2, 'Yellow': 2}]
             
# DictVectorizer 객체 생성
dictvectorizer = DictVectorizer(sparse=False)

features = dictvectorizer.fit_transform(data_dict)

>> features

array([[ 4.,  2.,  0.],
       [ 3.,  4.,  0.],
       [ 0.,  1.,  2.],
       [ 0.,  2.,  2.]])

# feature의 열 이름 확인
>> dictvectorizer.get_feature_names()

['Blue', 'Red', 'Yellow']


행렬의 Trace 계산

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
                   
>> matrix.diagonal().sum()

15


행렬의 Determinant 계산

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
                   
>> np.linalg.det(matrix)

-9.5161973539299405e-16


행렬의 평균/분산/표준편차 계산

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])

# 전체 행렬의 평균
np.mean(matrix)

# 전체 행렬의 분산
np.var(matrix)

# 전체 행렬의 표준 편차
np.std(matrix)


두 벡터의 dot product

import numpy as np

vector_a = np.array([1,2,3])
vector_b = np.array([4,5,6])

# 첫 번째 dot product
np.dot(vector_a, vector_b)

# 두 번째 dot product
vector_a @ vector_b


vectorized function을 이용하여 원소에 연산 적용

import numpy as np

matrix = np.array([[1, 2, 3],
                   [4, 5, 6],
                   [7, 8, 9]])
                   
# 함수 생성
add_10 = lambda i: i + 10

# vectorized function 생성
vectorized_add_10 = np.vectorize(add_10)

# vectorized function 적용
>> vectorized_add_100(matrix)

array([[101, 102, 103],
       [104, 105, 106],
       [107, 108, 109]])