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

Python NumPy numpy.cross()로 두 벡터의 외적 계산하기 – axisc 매개변수로 결과 방향 변경

파이썬 NumPy에서 두 벡터의 외적(cross product)을 계산하려면 numpy.cross() 메서드를 사용합니다. 이 메서드는 벡터 외적인 결과인 c를 반환합니다. 각 매개변수의 역할은 다음과 같습니다.

  • a: 첫 번째 벡터의 성분
  • b: 두 번째 벡터의 성분
  • axisa: 벡터를 정의하는 a의 축 (기본값: 마지막 축)
  • axisb: 벡터를 정의하는 b의 축 (기본값: 마지막 축)
  • axisc: 외적 벡터가 저장될 c의 축 (기본값: 마지막 축). 입력 벡터가 모두 2차원인 경우 반환값이 스칼라이므로 무시됩니다.
  • axis: 정의할 경우 a, b, c에 공통으로 적용되는 축으로, axisa, axisb, axisc를 모두 대체합니다.

특히 axisc 매개변수를 활용하면 외적 결과가 저장되는 축의 위치를 변경할 수 있습니다. 예를 들어 axisc=0으로 지정하면 결과 벡터가 마지막 축이 아닌 첫 번째 축(axis 0)을 따라 배치되어 출력 배열의 방향이 달라집니다.

단계별 진행

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

import numpy as np

두 개의 벡터를 생성합니다. 여기에는 int 타입의 요소를 삽입했습니다.

arr1 = np.array([[5,10,15], [30,35,40]])
arr2 = np.array([[30,35,40], [5,10,15]])

생성한 벡터를 화면에 출력합니다.

print("Vector 1...\n", arr1)
print("\nVector 2...\n", arr2)

두 벡터의 외적을 계산하기 위해 numpy.cross() 메서드를 사용하며, axisc=0을 지정하여 결과의 방향을 변경합니다.

print("\nResult...\n", np.cross(arr1, arr2, axisc=0))

전체 예제 코드

import numpy as np

# 두 개의 벡터 생성
# int 타입의 요소를 삽입
arr1 = np.array([[5,10,15], [30,35,40]])
arr2 = np.array([[30,35,40], [5,10,15]])

# 벡터 출력
print("Vector 1...\n", arr1)
print("\nVector 2...\n", arr2)

# numpy.cross() 메서드로 외적 계산, axisc=0으로 결과 방향 변경
print("\nResult...\n", np.cross(arr1, arr2, axisc=0))

실행 결과

Vector 1...
[[ 5 10 15]
 [30 35 40]]

Vector 2...
[[30 35 40]
 [ 5 10 15]]

Result...
[[-125  125]
 [ 250 -250]
 [-125  125]]

결과 해석

위 실행 결과를 보면, 외적 연산의 결과가 3×2 형태의 배열로 출력되었습니다. axisc=0을 지정했기 때문에 외적 벡터의 성분(x, y, z)이 행 방향(axis 0)으로 배치되었고, 원래 입력 벡터의 개수(2개)는 열 방향으로 유지되었습니다. 만약 axisc를 지정하지 않으면 기본값인 마지막 축을 따라 결과가 배치되어 2×3 형태로 출력됩니다. 이처럼 axisc 매개변수를 활용하면 후속 연산이나 데이터 처리에 맞게 외적 결과의 배열 구조를 유연하게 조정할 수 있습니다.