numpy 求函数u=n*x*y的和,其中n =[ 0 to N] ;x和y是一个数组

vnzz0bqm  于 2023-03-30  发布在  其他
关注(0)|答案(2)|浏览(171)

我想用Python写一段代码来解决一个函数,如下所示:

u = sum(n*x*y) for n=[0 to N]

假设x = [1,2,3,4,5],y =[6,7,8,9,10],n= [1,2,..100]
我希望输出如下所示:
u = [u0,u1,u2,u3..];其中u 0 = sum([nn*x[0]*y[0] for nn in n]),并且对于u1,u2…
想到这样做:

u = []
For i in n:
    j = sum([i*x*y])
    u.append(j)

当然现在我遇到的问题是idk我如何在循环中定义x和y。可能需要使用另一个for循环或while循环,或者一些if/else,但由于某种原因,我无法将我的思想缠绕在它周围。对编码来说很新,因此任何帮助都将不胜感激。

gkl3eglg

gkl3eglg1#

我相信您想要:

uu = sum( nn*(sum(xx*yy) for xx,yy in zip(x,y)) for nn in n )

类似但更好:

uu = sum( nn*(sum(x[i]*y[i]) for i in range(len(x))) for nn in n )

后续

u = [sum([nn*xx*yy for nn in n]) for xx,yy in zip(x, y)]
7vux5j2d

7vux5j2d2#

您是否希望:

x = [1,2,3,4,5]
y = [6,7,8,9,10]
n = [1,2,100]

u = [sum([nn*x[i]*y[i] for nn in n]) for i in range(len(x))]

# or
u = [sum([nn*x_i*y_i for nn in n]) for x_i, y_i in zip(x, y)]

输出:

[618, 1442, 2472, 3708, 5150]

numpy版本:

x = np.array([1,2,3,4,5])
y = np.array([6,7,8,9,10])
n = np.array([1,2,100])

u = ((x*y)*n[:,None]).sum(0)

输出:

array([ 618, 1442, 2472, 3708, 5150])

相关问题