다음은 배열(array), 행렬(matrix), 벡터(vector)에 관한 검색 결과이다.
이 배열 행렬 벡터는 컴퓨터 언어에서도 쓰인다. 이를 조금 더 공부해보자!!
행벡터(Row Vector = Row Matrix)는 한 개의 행을 갖는 1 x n 행렬을 의미합니다. 아래와 같이 표기할 수 있습니다.
열벡터(Column Vector = Column Matrix)는 한 개의 열을 갖는 m x 1 행렬을 의미합니다. 아래와 같이 표기할 수 있습니다.
A. array는 수를 포함한 여러 자료의 묶음, matrix는 계산을 위한 수의 다차원 묶음이다.
배열(array)은 파이썬 뿐만아니라 일반적으로 컴퓨터 언어에서 여러종류의 데이터의 묶음을 의미하며, 행렬(matrix)는 이들중 다차원으로 수를 묶은 것을 의미한다.
우리가 수학에서 사용하는 matrix는 엄밀하게 행렬이며 파이썬에서는 numpy라이브러리의 matrix자료형으로 정의 또는 변환하여 사용하면 보다 손쉽게 행렬계산을 수행 할 수 있다.
numpy 라이브러리에서 matrix 자료형은 array 자료형에서 상속된 하위클래스 개념이며, 수학계산에서 좀더 편리하게 사용하기 위해 matrix 자료형으로 변환하여 사용하면 좋다. 이렇게 생성한 matrix는 좀더 편리하게 수많은 계산식을 사용할 수 있으나, 꼭 matrix로 변환해서 연산할 필요는 없다. 다만 몇가지 연산에서 다른 결과를 나타낼 수 있다.
행렬(matrix)을 사용하면 배열(array)보다 연산이 간단함
matrix 자료형은 array형 보다 손쉽게 행렬곱 (matrix multiplication, dot product; matrix*matrix) 연산과 복소공액 행렬(conjugated matrix; matrix.H) , 전치행렬(transpose matrix; matrix.T), 역행렬(Inverse matrix; matrix.I) 등 연산을 편리하게 사용 할 수 있다. 즉, 연속해서 수식을 만들어 연산을 수행하는 경우에 함수를 사용하면 불편하고, 이해도도 떨어지게된다. 이럴때 수기로 표현하는 것과 가능한 유사한 형태의 표기를 사용하면 매우 편리할 것이다. 이러한 편리함을 위해 matrix 자료형을 사용하게 되는 것이다.
배열 생성 :
numpy.array()함수를 사용
행벡터와 열백터의 생성 :
1차원 리스트를 입력하는 방법으로 응용
열벡터 생성 :
ndmin의 변수를 주어 2차원 배열로 변경하고 .T 속성을 사용
a=[1,2,3]은 파이썬에서 배열이 아닌 list자료형이다. numpy에서 배열은 리스트형을 array()함수로 변환하여 만드는 것이다. 아래의 코드를 보고 의미를 한번 확인해 보자.
행렬을 생성하기위해서는 크게 배열을 생성하여 행렬로 변환하는 방법과 한번에 행렬을 생성하는 두가지 방법이 있다. 한번에 생성하는 것이 편리해보이지만 꽤 많은 함수가 배열(array)형태를 입력변수로 사용하므로 행렬을 사용하여 변환하는 방법이 더 유용하기도 하다.
배열은 아래와 같이 변환한다.
여기서 a는 배열이고, b는 행렬이다. asmatrix()함수를 사용하여 배열(array)를 행렬(matrix)로 변환할 수도 있고, 처음부터 matrix()함수로 정의할 수도 있다.
matrix()함수는 mat()라고 약어로 사용하여도 동일하게 동작한다.
배열(array)과 행렬(matrix) 연산 결과의 차이
행렬(matrix)이 아닌데도 배열을 사용하여 arrayarray와 같이 를 사용할경우 에러가 발생하는 것이 아니라 다른 결과를 나타내기 때문에 논리적인 오류를 발생할 수 있다.
a=(1324), b=[1324],
배열형에서는 연산으로 배열곱이 잘 수행되는 것을 볼 수 있다. 이러한 문제로 dot()함수를 쓰자는 사람들이 있을수 있지만, 연속된 많은 계산을 해야하는 경우 행렬의 곱 은 매우 유용하게 사용할 수 밖에 없다. 논리적 오류가 발생되지 않도록 주의하자.
이런 실수와 편이성을 높이기 위해서 Python 3.5버전 이상에서 부터는 배열형에서 행렬곱을 @을 사용하여 구현할 수 있도록 되었다.
https://developer0hye.tistory.com/18
https://numpy.org/devdocs/user/basics.broadcasting.html
https://techreviewtips.blogspot.com/2018/08/05-03-python-array-matrix.html
https://yganalyst.github.io/data_handling/memo_5/#1-2-3%EC%B0%A8%EC%9B%90-%EB%B3%80%ED%99%98