Скрещенное произведение вертикальных векторов - PullRequest
0 голосов
/ 07 июня 2018

Я ищу элегантный способ вычисления перекрестного произведения для векторов, которые имеют больше строк, чем столбцов.

Я попытался: np.cross([[a],[b],[c]],[[d],[e],[f]]) с a до f, являющимся плавающими, и я получил:

ValueError: несовместимые размеры для перекрестного продукта

Я также пытался передать значения 0 и 1 необязательным параметрам axisa, axisb, axisc и axis, упомянутым в документация , но это не помогло.

Если это невозможно сделать, означает ли это, что пользователи, как ожидается, предпочтут использовать векторы с формой (1,3) над (3,1)?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Это зависит от того, какой вывод вы хотите.

Если вам нужен скалярный вывод a*d + b*e + c*f, выполните:

np.dot([1,2,3],[4,5,6])

Если вы хотите векторный вывод, который имеет 3 элемента и перпендикулярен первым двум векторам (выводперекрестного произведения), затем выполните:

np.cross([1,2,3],[4,5,6])

Нет необходимости во втором наборе скобок в приведенном вами примере =)

0 голосов
/ 07 июня 2018

Я не вижу сообщения об ошибке при выполнении:

a, b, c, d, e, f = 1, 2, 3, 4, 5, 6

np.cross([[a],[b],[c]],[[d],[e],[f]], axis=0)
# array([[-3],
#        [ 6],
#        [-3]])

Если форма (1, 3) вместо (3, 1), вы можете просто сделать

np.cross([a, b, c], [d, e, f])
# array([-3,  6, -3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...