zenn.skin 무료버전 배포중!
자세히보기

DataScience

[Numpy] 배열과 행렬

koosco! 2020. 8. 26. 02:44

Numpy에서 다차원 배열을 '배열'과 '행렬'을 이용해 나타낸다. 이 때 배열과 행렬은 일반적으로 사용하는 '배열'의 형태이다. 둘의 차이는 행렬곱 연산에 사용되는 연산자의 차이뿐이다.

 

import numpy as np

A = np.array([[1,2], [3,4]]) #배열
B = np.matrix([[1,2], [3,4]]) #행렬

위와 같이 정의했을 때 각각의 자료형은 다음과 같다

배열은 ndarray 객체이고, 행렬은 matrix 객체이다


  • 전에는 둘의 행렬곱 연산에 차이가 있었다
  • ndarray는 dot 연산을 이용해 나타냈고, matrix는 * 연산을 이용해 행렬곱을 나타냈다
  • 지금은 둘을 혼용해서 사용가능하다
  • 배열과 행렬을 곱했을 때는 matrix 객체를 반환한다
  • @연산자를 사용해 행렬곱이 가능하다

 

 

위의 식을 각각 dot, *, @ 을 사용해 나타내면

import numpy.linalg.inv

S = inv(H.dot(V.dot(H.T))) #dot
S = inv(H*V*H.T) #*연산자
S = inv(H@V@H.T) #@연산자

과거에는 ndarray는 dot을 사용해야만 해서 가독성이 떨어졌다. matrix을 사용하면 *연산자를 사용해 가독성을 높일 수 있는 장점이 있었다. 하지만 @연산자가 추가되 ndarray 객체의 가독성도 향상되었고 지금은 * 연산자도 지원하므로 굳이 matrix 객체를 사용할 이유가 사라졌다.

많은 Numpy 함수들이 배열을 리턴하고 둘을 같이 사용하면 혼란을 야기할 수 있으므로 굳이 행렬을 사용할 필요가 없다

'DataScience' 카테고리의 다른 글

[Numpy] 뷰  (0) 2020.08.26
[Numpy] ndarray  (0) 2020.08.26
아나콘다 라이브러리 설치  (0) 2020.08.12
지수분포의 정의와 평균, 분산  (0) 2020.08.08
푸아송 분포의 정의와 평균, 분산  (0) 2020.08.07

'DataScience'의 다른글

  • 현재글 [Numpy] 배열과 행렬

관련글