Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy로 행렬·벡터의 노름(Norm) 구하기 – LA.norm() 메서드 활용법

선형 대수학(Linear Algebra)에서 행렬이나 벡터의 노름(Norm)을 계산하려면 Python NumPy의 LA.norm() 메서드를 사용하면 됩니다. 노름은 벡터의 크기나 길이를 수치화하는 개념으로, 머신러닝과 수치 해석 분야에서 매우 자주 활용됩니다.

LA.norm() 메서드의 주요 매개변수

1. x (입력 배열)

첫 번째 매개변수 x는 노름을 계산할 입력 배열입니다. axis가 None일 경우 x는 1차원 또는 2차원 배열이어야 하며, axisord가 모두 None이면 x.ravel()의 2-노름(2-norm)이 반환됩니다.

2. ord (노름의 차수)

두 번째 매개변수 ord는 노름의 차수(order)를 지정합니다. 예를 들어 1은 1-노름(맨해튼 노름), 2는 2-노름(유클리드 노름)을 의미하며, inf는 NumPy의 무한대(inf) 객체를 나타냅니다. 기본값은 None입니다.

3. axis (축 지정)

세 번째 매개변수 axis가 정수라면 해당 축을 따라 벡터 노름을 계산합니다. 2-튜플(tuple)이라면 2차원 행렬이 위치한 축들을 지정하여 행렬 노름을 계산합니다. axis가 None이면 x가 1차원일 때는 벡터 노름, 2차원일 때는 행렬 노름이 반환됩니다.

4. keepdims (차원 유지)

네 번째 매개변수 keepdims를 True로 설정하면, 노름이 계산된 축이 결과에 크기 1인 차원으로 남게 됩니다. 이 옵션을 사용하면 결과가 원본 배열 x와 올바르게 브로드캐스팅(broadcasting)됩니다.

구현 단계

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np
from numpy import linalg as LA

배열을 생성합니다.

arr = np.array([[ 1, 2, 4], [-1, 2, 4]])

생성한 배열을 화면에 출력합니다.

print("Our Array...\n",arr)

배열의 차원을 확인합니다.

print("\nDimensions of our Array...\n",arr.ndim)

배열의 데이터 타입을 확인합니다.

print("\nDatatype of our Array object...\n",arr.dtype)

배열의 형태(shape)를 확인합니다.

print("\nShape of our Array object...\n",arr.shape)

행렬 또는 벡터의 노름을 반환하기 위해 LA.norm() 메서드를 사용합니다. 여기서는 ord=1, axis=1로 설정하여 각 행(row)별 1-노름을 계산합니다.

print("\nResult...\n",LA.norm(arr, ord=1, axis=1))

전체 예제 코드

import numpy as np
from numpy import linalg as LA

# 배열 생성
arr = np.array([[ 1, 2, 4], [-1, 2, 4]])

# 배열 출력
print("Our Array...\n",arr)

# 차원 확인
print("\nDimensions of our Array...\n",arr.ndim)

# 데이터 타입 확인
print("\nDatatype of our Array object...\n",arr.dtype)

# 형태(shape) 확인
print("\nShape of our Array object...\n",arr.shape)

# LA.norm() 메서드로 노름 계산
print("\nResult...\n",LA.norm(arr, ord=1, axis=1))

실행 결과

Our Array...
    [[ 1 2 4]
    [-1 2 4]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(2, 3)

Result...
    [7. 7.]

결과 해석

실행 결과를 보면 각 행별로 1-노름이 계산되었습니다. 첫 번째 행 [1, 2, 4]의 절댓값 합은 |1| + |2| + |4| = 7이고, 두 번째 행 [-1, 2, 4]의 절댓값 합도 |-1| + |2| + |4| = 7입니다. 따라서 결과 배열 [7. 7.]이 출력된 것입니다. 이처럼 ordaxis 값을 조절하면 다양한 방식의 노름을 손쉽게 계산할 수 있습니다.