배열, 행렬, 벡터

박종명 ·2024년 5월 15일
0
post-thumbnail

배열(array), 행렬(matrix), 벡터(vector)

다음은 배열(array), 행렬(matrix), 벡터(vector)에 관한 검색 결과이다.

배열

Array, Configure. 프로그래밍 언어에서 지원하는 자료형 또는 컴퓨터공학에서 사용하는 자료구조의 하나이다. 순서대로 번호가 붙은 원소들이 연속적인 형태로 구성된 구조를 뜻하며, 이때 각 원소에 붙은 번호를 흔히 첨자(인덱스, index)라고 부른다. 원소들이 연속적으로 배치되어 있기에, 임의의 첨자로 각 원소를 접근하는 데에 드는 시간복잡도는 O(1)이다. 따라서 임의 접근(random access)이 가능한 자료구조에 속한다. 메모리 주소가 연속될 것을 요구하기 때문에 배열의 크기를 늘리는 것은 절대 불가능하며, 배열의 크기를 늘릴 필요가 있을 때에는 크기가 큰 새 배열을 만들고 기존 내용을 복사하거나, 배열의 일부를 연결 리스트 등으로 다른 곳과 연결하는 등의 방법이 쓰인다.

행렬

수학에서 행렬(行列, 영어: matrix)은 수 또는 다항식 등을 직사각형 모양으로 배열한 것이다. 예를 들어, 실수 1, 9, −13, 20, 5, −16을 2×3 직사각형 위에 배열한 행렬은 다음과 같다.

행렬은 함수나 숫자를 직사각형 형태로 배치하고 대괄호(또는 소괄호)로 묶은 배열로 정의한다.행렬을 구성하는 있는 숫자 또는 함수를 행렬의 성분(element)라고 한다. 행렬의 가로 줄을 행(row), 세로 줄을 열(column)이라고 한다.

백터

대중적인 정의는 (고등학교 혹은 물리학에서의) 크기와 방향을 가진 물리량을 가리키지만, 이는 유클리드 기하적 벡터만을 가리키는 좁은 정의다. 수학에서 벡터 공간의 종류는 이보다 다양하므로 물리적 직관만을 함부로 적용하기 어려운데, n개의 변량의 선형결합으로 이루어진 벡터 공간을 기본으로 해서 함수들로 이루어진 벡터공간도 존재하고, 벡터 공간으로 이루어진 벡터 공간도 존재한다.


이 배열 행렬 벡터는 컴퓨터 언어에서도 쓰인다. 이를 조금 더 공부해보자!!

배열(array)은 컴퓨터에서 일반적으로 사용하는 개념으로 수를 포함한 어떤 데이터의 묶음을 의미함.

1차원으로 묶은 수를 수학에서 벡터(vector)라 부르며, 행만 구성된 것을 행벡터, 열만으로 구성된 것을 열벡터라고 부른다.

2차원으로 묶은 수를 수학에서 행렬(matrix)이라고 부르며, 많은 행렬 계산식에 사용된다.

행벡터, 열벡터

행벡터(Row Vector = Row Matrix)는 한 개의 행을 갖는 1 x n 행렬을 의미합니다. 아래와 같이 표기할 수 있습니다.

열벡터(Column Vector = Column Matrix)는 한 개의 열을 갖는 m x 1 행렬을 의미합니다. 아래와 같이 표기할 수 있습니다.

Q. 파이썬 Numpy에서 배열과 행렬의 차이는 무엇인가?

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 자료형을 사용하게 되는 것이다.

배열(array)과 행렬(matrix), 벡터(vector) 의 생성

배열 생성 :
numpy.array()함수를 사용

행벡터와 열백터의 생성 :
1차원 리스트를 입력하는 방법으로 응용

열벡터 생성 :
ndmin의 변수를 주어 2차원 배열로 변경하고 .T 속성을 사용

a=[1,2,3]은 파이썬에서 배열이 아닌 list자료형이다. numpy에서 배열은 리스트형을 array()함수로 변환하여 만드는 것이다. 아래의 코드를 보고 의미를 한번 확인해 보자.

배열(array)과 행렬(matrix)의 생성과 변환

행렬을 생성하기위해서는 크게 배열을 생성하여 행렬로 변환하는 방법과 한번에 행렬을 생성하는 두가지 방법이 있다. 한번에 생성하는 것이 편리해보이지만 꽤 많은 함수가 배열(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

profile
안녕하세요. 자율주행을 공부하고 있는 학생입니다.

0개의 댓글