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

Python NumPy outer() 함수로 두 배열의 외적(Outer Product) 구하는 방법

Python에서 두 배열의 외적(Outer Product)을 계산하려면 numpy.outer() 메서드를 사용하면 됩니다. 이 함수는 선형대수학에서 널리 사용되는 연산으로, 두 벡터를 입력받아 그 외적에 해당하는 행렬을 반환합니다.

numpy.outer() 함수의 매개변수

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 ]]

즉, 결과는 첫 번째 벡터의 각 원소와 두 번째 벡터의 각 원소를 곱한 값들로 구성된 (M+1)×(N+1) 크기의 행렬이 됩니다.

구현 단계

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

import numpy as np

array() 메서드를 사용하여 두 개의 1차원 NumPy 배열을 생성합니다.

arr1 = np.array([5, 10, 15])
arr2 = np.array([20, 25, 30])

생성된 배열을 출력하여 확인합니다.

print("Array1...\n", arr1)
print("\nArray2...\n", arr2)

두 배열의 차원(dimension)을 확인합니다.

print("\nDimensions of Array1...\n", arr1.ndim)
print("\nDimensions of Array2...\n", arr2.ndim)

두 배열의 형태(shape)도 확인해 봅니다.

print("\nShape of Array1...\n", arr1.shape)
print("\nShape of Array2...\n", arr2.shape)

마지막으로 numpy.outer() 메서드를 사용하여 두 배열의 외적을 계산합니다.

print("\nResult (Outer Product)...\n", np.outer(arr1, arr2))

전체 예제 코드

import numpy as np

# array() 메서드로 두 개의 1차원 NumPy 배열 생성
arr1 = np.array([5, 10, 15])
arr2 = np.array([20, 25, 30])

# 배열 출력
print("Array1...\n", arr1)
print("\nArray2...\n", arr2)

# 두 배열의 차원 확인
print("\nDimensions of Array1...\n", arr1.ndim)
print("\nDimensions of Array2...\n", arr2.ndim)

# 두 배열의 형태 확인
print("\nShape of Array1...\n", arr1.shape)
print("\nShape of Array2...\n", arr2.shape)

# numpy.outer() 메서드로 외적 계산
print("\nResult (Outer Product)...\n", np.outer(arr1, arr2))

실행 결과

Array1...
[ 5 10 15]

Array2...
[20 25 30]

Dimensions of Array1...
1

Dimensions of Array2...
1

Shape of Array1...
(3,)

Shape of Array2...
(3,)

Result (Outer Product)...
[[100 125 150]
 [200 250 300]
 [300 375 450]]

정리

위 실행 결과를 보면, 길이가 3인 두 1차원 배열의 외적은 3×3 크기의 행렬로 반환됩니다. 각 행렬의 요소는 첫 번째 배열의 원소와 두 번째 배열의 원소를 순서대로 곱한 값입니다. 예를 들어 결과 행렬의 첫 번째 요소 100은 5 × 20에서, 마지막 요소 450은 15 × 30에서 계산된 것입니다. numpy.outer()는 입력 벡터가 다차원 배열이라도 자동으로 1차원으로 평탄화하여 처리하므로, 벡터 간 외적 연산을 간편하게 수행할 수 있습니다.