파이썬 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 매개변수를 활용하면 후속 연산이나 데이터 처리에 맞게 외적 결과의 배열 구조를 유연하게 조정할 수 있습니다.