Python Sigma Sums

Nik*_*dok 3 python numpy list

我有一个值列表x = [1,-1,-1,1,1,-1,1,-1,1,-1] ,我有另一个空白列表 y=[ ]

我正在尝试创建一个函数,它将取一个sigma值x并存储在其中y.

例如,y[0]应该是总和x[0]*x[0] + x[0]*x[1] + x[0]*x[2] + ... + x[0]*x[9].

同样,y[1]应该是总和x[1]*x[0] + x[1]*x[1] + x[1]*x[2]+ ... + x[1]*x[9].

必须这样做y[0] through y[9].

此外,在总和中,x[i]*x[i]必须为零.因此,例如y[0],x[0]*x[0]必须为零.同样,在总和中y[1],x[1]*x[1]必须为零.

这是我的代码,但它总是给我一些关于索引的错误:

x=[1,-1,-1,1,1,-1,1,-1,1,-1]
y=[]
def list_extender(parameter):
    for i in parameter:
        parameter[i]*parameter[i]==0
        variable=numpy.sum(parameter[i]*parameter[:])
        if variable>0:
            variable=1
        if variable<0:
            variable=-1
        y.append(variable)
    return y
Run Code Online (Sandbox Code Playgroud)

然后我运行print list_extender(x)哪个应该打印列表y与上面描述的西格玛总和,但我总是得到一个错误.我做错了什么?我们将非常感谢您的帮助!

use*_*ica 6

你在这里做了太多的打字和计算.如果你计算了x第一个的总和,那么你的函数可以更短更简单,然后用它来计算元素y.它也跑得更快.

这样做:

x_sum = sum(x)
y = [item * (x_sum - item) for item in x]
# or, if you really want to store the results into an existing list y
# y[:] = [item * (x_sum - item) for item in x]
Run Code Online (Sandbox Code Playgroud)

sum如果你使用numpy,用numpy操作替换和列表理解:

import numpy as np
x = np.array([1,-1,-1,1,1,-1,1,-1,1,-1])
y = x * (x.sum() - x)
Run Code Online (Sandbox Code Playgroud)