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

Python NumPy로 배열과 스칼라의 외적(Outer Product) 구하기

numpy.outer() 메서드란?

Python에서 배열과 스칼라의 외적(Outer Product)을 구하려면 numpy.outer() 메서드를 사용합니다. 이 메서드는 두 개의 입력 벡터를 받아 그 외적을 계산하는 함수로, 선형대수학에서 널리 활용됩니다.

각 매개변수는 다음과 같습니다.

  • a: 첫 번째 입력 벡터입니다. 입력이 이미 1차원이 아니라면 자동으로 평탄화(flatten)됩니다.
  • b: 두 번째 입력 벡터입니다. 마찬가지로 1차원이 아니면 평탄화됩니다.
  • out: 선택 사항으로, 계산 결과가 저장될 위치를 지정합니다.

두 벡터 a = [a0, a1, ..., aM]과 b = [b0, b1, ..., bN]이 주어졌을 때, 외적은 다음과 같은 형태의 행렬이 됩니다.

[[a0*b0  a0*b1 ... a0*bN ]
 [a1*b0  .          .    ]
 [ ...   .          .    ]
 [aM*b0             aM*bN]]

구현 단계

1단계: 라이브러리 임포트

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

import numpy as np

2단계: 배열 생성

numpy.eye() 메서드를 사용해 배열을 생성합니다. 이 메서드는 대각선에는 1이 있고 나머지 위치에는 0이 있는 2차원 배열(단위 행렬)을 반환합니다.

arr = np.eye(2)

3단계: 스칼라 값 정의

외적을 계산할 스칼라 값 val을 정의합니다.

val = 2

4단계: 배열 정보 확인

생성된 배열과 데이터 타입, 차원, 형태를 출력해 확인합니다.

print("Array...\n",arr)
print("\nDatatype of Array...\n",arr.dtype)
print("\nDimensions of Array...\n",arr.ndim)
print("\nShape of Array...\n",arr.shape)

5단계: 외적 계산

numpy.outer() 메서드를 사용해 배열과 스칼라의 외적을 구합니다.

print("\nResult (Outer Product)...\n",np.outer(arr, val))

전체 예제 코드

import numpy as np

# numpy.eye()로 배열 생성. 대각선에 1이 있고 나머지는 0인 2차원 배열을 반환합니다.
arr = np.eye(2)

# 스칼라 값 정의
val = 2

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

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

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

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

# numpy.outer()로 배열과 스칼라의 외적 계산
print("\nResult (Outer Product)...\n",np.outer(arr, val))

실행 결과

Array...
[[1. 0.]
 [0. 1.]]

Datatype of Array...
float64

Dimensions of Array...
2

Shape of Array...
(2, 2)

Result (Outer Product)...
[[2.]
 [0.]
 [0.]
 [2.]]

정리

이 예제에서 볼 수 있듯이, np.outer()는 입력 배열을 먼저 1차원으로 평탄화한 후 각 요소에 스칼라 값을 곱합니다. 따라서 2x2 단위 행렬 [[1, 0], [0, 1]]에 스칼라 2를 외적하면 [2, 0, 0, 2] 형태의 1차원 배열이 결과로 반환됩니다. 이처럼 numpy.outer()는 배열과 스칼라뿐만 아니라 두 벡터 간의 외적 계산에도 유용하게 사용할 수 있습니다.