Numpy垂直向量的交叉产品

时间:2018-06-06 21:45:22

标签: python numpy

我正在寻找一种优雅的方法来计算具有比列更多行的向量的叉积。

我试过:np.cross([[a],[b],[c]],[[d],[e],[f]]),其中有一个浮点数,我得到了:

  

ValueError:跨产品的不兼容尺寸

我还尝试将值0和1传递给documentation中提到的可选参数axisaaxisbaxiscaxis,但它确实没有帮助。

如果无法做到这一点,那是否意味着用户需要使用形状(1,3)超过(3,1)的向量?

2 个答案:

答案 0 :(得分:1)

执行操作时,我没有看到任何错误消息:

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])

答案 1 :(得分:1)

这取决于您想要的输出。

如果您想要标量输出a*d + b*e + c*f,请执行:

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

如果你想要一个有3个元素且垂直于前两个向量的矢量输出(交叉乘积的输出),那么执行:

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

在您给出的示例中不需要第二组括号=)