2个向量的numpy.vdot返回矩阵而不是标量?
给出:2个向量的numpy.vdot返回矩阵而不是标量?,numpy,matrix,Numpy,Matrix,给出: v1=np.matrix([[-0.40824829], [-0.81649658], [-0.40824829]]) v2=np.matrix([[ 8.94427191e-01], [ -4.47213595e-01], [ 2.77555756e-16]]) np.vdot(v2, v1) 为什么它不返回标量?您可以使用np.einsum()作为输入np.ndarray或np.matrix来获取标量: matrix([[-0.36514837]]) 如果v1和v2具
v1=np.matrix([[-0.40824829],
[-0.81649658],
[-0.40824829]])
v2=np.matrix([[ 8.94427191e-01],
[ -4.47213595e-01],
[ 2.77555756e-16]])
np.vdot(v2, v1)
为什么它不返回标量?您可以使用
np.einsum()
作为输入np.ndarray
或np.matrix
来获取标量:
matrix([[-0.36514837]])
如果
v1
和v2
具有相同的形状
我看到您使用的是np.matrix
。这是我不这么做的原因之一。抱歉,但我始终无法理解爱因斯坦的求和约定:(为什么定义为返回标量的简单点积需要如此复杂?@ihadanny我明白你的意思了……对于数组,你也可以做(v1*v2).sum()
,我只是想给你一个既快速又适用的解决方案,也适用于np.matrix
。在你的caso中,通过使用result[0,0]
提取结果矩阵的第一个元素,可以很容易地检索标量
np.einsum('ij, ij', v1, v2)