numpy 我可以用Python求3个向量的“点积”吗?

hgqdbh6s  于 4个月前  发布在  Python
关注(0)|答案(4)|浏览(90)

我正在写一个使用辛普森法则进行积分的代码。由于辛普森积分的过程非常类似于2个向量的点积,我在我的项目中使用了np.dot。问题是,如果我想找到“点积”,我需要编写另一个由多个for循环组成的“丑陋”代码。因为我所有的数据都保存在多个2D数组中。我的意思是对于向量,

A = [1, 3, 5] 
B = [2, 1, 5]
C = [5, 8, 6]

字符串
我希望结果是1x2x5 + 3x1x8 + 5x5x6 = 184,假设是

result = np.dot(A, B, C)


我正在寻找的是我上面提到的过程的函数。

nkcskrwz

nkcskrwz1#

简单地将数组元素相乘并计算结果数组的总和:

a = np.array([1, 3, 5])
b = np.array([2, 1, 5])
c = np.array([5, 8, 6])

>>> a * b * c
array([ 10,  24, 150])

>>> np.sum(a * b * c)
184

字符串

8ulbf1ek

8ulbf1ek2#

你可以使用numpy.multiply.reduce,然后sum

np.multiply.reduce([A, B, C]).sum()

字符串
输出:184
作为一个功能:

def sum_prod(*args):
    return np.multiply.reduce(args).sum()

sum_prod(A, B, C)
# 184

  • 注意。如果A/B/C是列表,这也有效。*
bxjv4tth

bxjv4tth3#

直接使用np.prod

np.prod([A, B, C], 0).sum()
184

字符串

9w11ddsr

9w11ddsr4#

import numpy as np
A = [1, 3, 5] 
B = [2, 1, 5]
C = [5, 8, 6]

np.prod([A,B,C],axis=0).sum()

字符串
这将解决你的问题。
在这里,您的数字沿沿着“轴= 0”相乘,您将得到
[10 24 150]
然后计算这个数组的和,因此输出为184。
希望这解决了你的问题!

相关问题