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.