Python 的数组计算:三个数组的点积

3

我是Python的新手,如何在Python Numpy中进行三个数组的点积。 我有三个矩阵

[1 2 3]
[4 5 6]
[-1 -2 -3]

我想要做的是 (1x4x(-1)) + (2x5x(-2)) + (3x6x(-3)) = -4-20-36 = -50


1
输出不是-50,而是-78,-4-20-54=-78。 - just a stranger
这通常不被称为点积,而是称为标量三重积:维基百科; Mathinsight.org - Stef
2个回答

3

假设您的numpy数组分别为abc

>>> (a * b).dot(c)
-78

0
In [123]: a=np.array([1, 2, 3])
     ...: b=np.array([4, 5, 6])
     ...: c=np.array([-1, -2, -3])

将它们合并为一个数组:
In [124]: arr = np.vstack((a,b,c))
In [125]: arr
Out[125]: 
array([[ 1,  2,  3],
       [ 4,  5,  6],
       [-1, -2, -3]])

将产品沿列相乘,然后进行求和。
In [127]: np.prod(arr, axis=0)
Out[127]: array([ -4, -20, -54])
In [128]: np.sum(np.prod(arr, axis=0))
Out[128]: -78

或者

np.sum(a*b*c)

另一种方法

np.einsum('i,i,i', a, b, c)

再次强调,这是所有产品的总和。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接