본문 바로가기
Big Data/DataAnalysis & Manipulate

선형대수와 numpy 비교(scalar, vector...)

by Wikinist 2023. 8. 4.

선형대수

선형대수는 벡터와 행렬을 다루는 수학 분야로, 데이터 분석, 기하학, 물리학, 공학 등 다양한 분야에서 중요한 개념과 도구를 제공합니다. 이를 이해하기 위해 다음과 같은 기본 개념을 살펴보겠습니다:

스칼라 (Scalar)

스칼라는 크기만을 가지고 방향이 없는 양을 나타냅니다. 실수의 일반적인 예시가 스칼라입니다. 예를 들어, 온도, 시간, 질량 등이 스칼라의 예시입니다.

벡터 (Vector)

벡터는 크기와 방향을 모두 가지는 양을 나타냅니다. 벡터는 여러 개의 요소로 이루어진 순서 있는 리스트나 배열로 표현됩니다. 벡터는 주로 화살표로 표현되며, 벡터의 크기는 벡터의 길이를 의미하고 방향은 화살표의 방향을 나타냅니다. 벡터는 여러 분야에서 다양하게 활용되며, 속도, 힘, 변위 등이 벡터의 예시입니다.

행렬 (Matrix)

행렬은 2차원 배열로 구성된 수학적인 개념입니다. 행과 열로 이루어진 표를 통해 데이터를 구성합니다. 행렬은 여러 벡터를 함께 묶어 표현한 것으로, 데이터의 구조를 표현하는 데 사용됩니다. 예를 들어, 회전 변환, 선형 변환, 이미지 처리 등 다양한 분야에서 행렬이 활용됩니다.

텐서 (Tensor)

텐서는 벡터나 행렬을 일반화한 개념으로, 다차원 배열을 나타냅니다. 스칼라는 0차원 텐서, 벡터는 1차원 텐서, 행렬은 2차원 텐서와 같이 차원이 높아질수록 복잡한 데이터 구조를 표현할 수 있습니다. 딥러닝과 같은 기계 학습 분야에서는 다차원 배열로 표현되는 데이터와 가중치 등이 텐서로 표현됩니다.

이러한 개념들은 수학적으로 추상적이지만, 다양한 분야에서 실용적으로 활용되며 데이터의 구조와 변환을 다루는 데 핵심적인 역할을 합니다.

numpy

넘파이(Numpy)는 파이썬에서 수치 계산을 위한 핵심 라이브러리로, 다차원 배열을 다루는 기능을 제공합니다. 이를 이해하기 위해 넘파이에서의 스칼라, 벡터, 행렬, 텐서 개념에 대해 설명하겠습니다:

스칼라 (Scalar)

스칼라는 크기만을 가지고 방향이 없는 값입니다. 넘파이에서 스칼라는 0차원 배열로 표현됩니다. 예를 들어, 정수나 실수 하나가 스칼라입니다.

import numpy as np

scalar = np.array(5)  # 스칼라

 

벡터 (Vector)

넘파이에서 벡터는 1차원 배열로 표현되며, 여러 개의 요소로 구성된 순서 있는 데이터입니다. 벡터는 여러 가지 수학적인 작업에 사용되며, 열 벡터나 행 벡터 형태로 나타낼 수 있습니다.

vector = np.array([1, 2, 3, 4])  # 열 벡터

행렬 (Matrix)

넘파이에서 행렬은 2차원 배열로 표현됩니다. 행렬은 행과 열로 구성되며, 행렬 연산을 수행하는 데 사용됩니다. 행렬은 데이터의 2차원 구조를 나타내는 데 유용합니다.

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

텐서 (Tensor)

넘파이에서 텐서는 다차원 배열을 나타냅니다. 스칼라, 벡터, 행렬을 포함하여 더 높은 차원의 데이터도 텐서로 표현할 수 있습니다. 딥러닝과 같은 분야에서 주로 사용되며, 다차원 데이터를 처리하는 데 유용합니다.

tensor = np.array([[[1, 2, 3],
                    [4, 5, 6]],
                   
                   [[7, 8, 9],
                    [10, 11, 12]]])  # 2x2x3 텐서

이렇게 넘파이를 사용하여 스칼라, 벡터, 행렬, 텐서를 다룰 수 있습니다. 넘파이의 다차원 배열 기능을 활용하면 수치 계산 및 데이터 분석 작업을 효율적으로 수행할 수 있습니다.

numpy에서의 선형대수 표현

선형대수의 개념을 NumPy에서 어떻게 표현하는지 자세히 설명해드리겠습니다.

선형대수에서 벡터는 크기와 방향을 가지는 양을 나타내는 수학적인 개념입니다. 벡터는 주로 열 벡터(column vector)나 행 벡터(row vector)로 표현되며, 열 벡터는 세로로 원소가 나열된 형태이고, 행 벡터는 가로로 원소가 나열된 형태입니다.

NumPy에서는 이러한 벡터를 어떻게 표현하는지 살펴보겠습니다. NumPy의 배열은 다차원 배열로 표현되는데, 벡터는 열의 개수가 1인 2차원 배열로 표현됩니다.

예를 들어, 선형대수에서 다음과 같은 열 벡터를 고려해봅시다:​

열벡터

이 벡터를 NumPy 배열로 표현하려면 열의 개수가 1인 2차원 배열로 변환해야 합니다. 아래와 같이 NumPy를 사용하여 표현할 수 있습니다.

import numpy as np

# 선형대수의 열 벡터 [1, 2, 3]을 NumPy 배열로 표현
vector = np.array([[1],
                   [2],
                   [3]])

이제 vector는 열의 개수가 1인 2차원 배열이며, 선형대수의 열 벡터를 NumPy로 표현한 것입니다.

행 벡터도 마찬가지로 열의 개수가 1인 2차원 배열로 표현됩니다. 예를 들어, 선형대수에서 다음과 같은 행 벡터:

행벡터

은 NumPy에서 다음과 같이 표현할 수 있습니다.

# 선형대수의 행 벡터 [4, 5, 6]을 NumPy 배열로 표현
row_vector = np.array([[4, 5, 6]])


이렇게 함으로써 선형대수의 열 벡터와 행 벡터 개념을 NumPy의 2차원 배열로 표현할 수 있습니다. NumPy의 배열은 수치 연산과 데이터 분석에 특화되어 있으므로, 이러한 배열을 활용하여 벡터 연산 등을 효율적으로 수행할 수 있습니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > DataAnalysis & Manipulate' 카테고리의 다른 글

pandas cut()  (0) 2023.08.07
Boolean / Fancy indexing  (0) 2023.08.07
명시적 / 묵시적 인덱스 접근  (0) 2023.08.07
DataFrame Indexer  (0) 2023.08.04
Pandas DataFrame 구조  (0) 2023.08.04