numpy.cross()
Функция numpy.cross() вычисляет векторное (косое) произведение двух массивов векторов. Для 3D-векторов результат — вектор, перпендикулярный обоим входным. Для 2D — скаляр (z-компонента).
Сигнатура
numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)
Параметры
a,b— входные массивы векторов (последняя ось — компоненты векторов длиной 2 или 3).axisa,axisb— ось, по которой определены векторы вaиb.axisc— ось для результата.axis— общая ось дляa,b, результата (перекрывает первые три).
Возвращаемое значение
ndarray — векторное произведение. Для 3D-векторов — массив той же формы, для 2D — скаляр или массив скаляров.
Примеры
Пример 1. Стандартные орты.
import numpy as np
ex = np.array([1, 0, 0])
ey = np.array([0, 1, 0])
print(np.cross(ex, ey))
[0 0 1]
Пример 2. Произвольные 3D-векторы.
a = np.array([2, 3, 4])
b = np.array([5, 6, 7])
print(np.cross(a, b))
[-3 6 -3]
Пример 3. 2D-векторы (z-компонента).
v1 = np.array([1, 2])
v2 = np.array([3, 4])
print(np.cross(v1, v2))
-2
Пример 4. Площадь параллелограмма.
# |a x b| — площадь параллелограмма на векторах a, b
a = np.array([3, 0, 0])
b = np.array([0, 4, 0])
area = np.linalg.norm(np.cross(a, b))
print(f"Площадь = {area}")
Площадь = 12.0
Пример 5. Момент силы (крутящий момент).
r = np.array([0.5, 0, 0]) # плечо, м
F = np.array([0, 10, 0]) # сила, Н
torque = np.cross(r, F)
print(f"Момент: {torque} Н·м")
Момент: [0. 0. 5.] Н·м
См. также
Примечание
Лицензия и источники
Техническое описание функции адаптировано из официальной документации NumPy (https://numpy.org/doc/stable/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.