Python 中数组计算 三个数组的点积 [复制]

array calculation in python dot product of three arrays [duplicate]

提问人:David Jackson 提问时间:10/12/2020 更新时间:10/12/2020 访问量:457

问:

我是python的新手。 如何在python numpy中做3个数组的点积。 我有三个矩阵

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

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

蟒蛇 numpy

评论

1赞 just a stranger 10/12/2020
输出不是 -50,这是 -78,-4-20-54=-78
0赞 Stef 10/27/2021
这通常不称为点积,而是标量三乘积维基百科;Mathinsight.org

答:

0赞 hpaulj 10/12/2020 #1
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)

同样,这是所有产品的总和。

3赞 Alexander 10/12/2020 #2

假设您的 numpy 数组分别为 、 和 , :abc

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