프로그래밍/python3.x-library

파이썬(python) numpy 의 array(ndarray)와 matrix 데이터 타입

콘파냐 2017. 6. 10. 21:14

numpy는 numerical python의 약자로 수치를 다루는 분야를 위한 패키지로서 아주 유명하다. 

이 패키지에 포함된 array와 matrix와 같은 자료구조는 수치를 다루는 데 있어서 기본적인 자료구조(데이터 타입)다.

방대한 양의 데이터를 다루거나 할 때 다차원 배열(ndarray)를 사용하거나, 행렬(matix)를 다룰 때 matrix 를 사용할텐데 ndarray와 matrix는 서로 차이점이 있지만 양방향 캐스팅(변환)이 가능하다.

기본 파이썬 데이터 타입 역시 ndarray 타입이나 matrix 타입으로 직관적인 캐스팅이 가능하다.

numpy에 대한 자세한 메뉴얼은 공식 사이트에서 살펴보면 될 것이다. 

numpy의 설치는 따로 하지 않고 파이썬 아나콘다 버전을 설치하여 해결하였다.

파이썬 아나콘다(anaconda) 설치와 파이썬 버전 바꾸기


  • ndarray 타입

ndarray는 다차원 배열(n-dimension array)이다. 만드는 방법은 array함수를 이용한다. 다음은 3차원 배열을 만드는 예다.

array : 함수.

ndarray : array함수로 만든 다차원 배열의 데이터 타입.


  • ndarray 간에 연산

두 개의 2x2 배열을 만들었다.(주의 : 행렬(matrix)이 아님) 순서대로 +, -, * 연산을 하는데 덧셈과 뺄셈 연산은 일반적인 행렬(matrix) 연산과 동일하다. 하지만 곱셈은 단순히 같은 위치의 요소끼리의 곱을 할 뿐이다. 두 배열의 곱을 행렬의 곱 연산으로 하고 싶다면 np.dot 함수를 사용한다.

np.dot(a, b) 는 배열 a와 b 간의 행렬의 곱 연산을 해준다.


※ 파이썬 3.5 이상이라면 @ 연산으로 배열 간의 곱을 행렬의 곱 연산으로 만들 수 있다.


배열의 제곱 연산은 행렬의 제곱연산과 동일하다. 이 밖에도 transpose 함수로 전치행렬을 구할 수 있다. (matrix 타입 동일)

이렇게 행렬과 배열은 곱셈을 제외하고는 대부분 동일하게 동작한다.


  • matrix 타입

matrix 역시 array와 생성 방법이 같다. 단지 array 함수 대신 matrix를 사용하면 된다.

 m.A는 배열 객체를 의미하고 m.A1은 모든 차원을 연결한 1차원 배열을 반환한다. m.dtype은 요소의 데이터 타입 정보를 반환한다. 이 밖에 메소드와 속성들을 다음 페이지를 참고하면 된다.

numpy.matrix

이렇게 array타입과 matrix 타입은 서로 호환이 되는데 일반적으로 array타입을 사용하는 것이 좋다. 수치를 다루는 함수들은 대부분 matrix보다는 array를 사용하고 반환하기 때문이다. 앞서 말한대로 array간에 곱셈(*)연산과 matrix타입 같에 곱셈(*)연산의 결과가 다르다는 것만 주의하면 된다.

반응형