迭代必须从p =1 开始,然后,第二个 for 循环必须对r范围内的所有值求和。第二次循环完成后,我想将结果保存在列表的第一个元素(ap)中。然后,p = 2并且重复该过程,并且a的新值必须将其保存在列表ap的第二个元素中...依此类推我正在尝试使用一个数据框,我已经知道结果会是什么,这就是为什么我知道我的代码正在做另一件不同的事情。我猜ap列表的位置不正确?我是否必须尝试使用 pandas 中的 Series 或使用 Numpy 的数组?感谢您的帮助 m=12 n=6 ap=[] for p in range(1,n): for r in range(-n,n): a = a + (1/n)*((data3.loc[r].iat[1])*(np.cos((2*(np.pi)*p*r)/m))) ap += [a] #? #?
1 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
我们可以使用函数和生成器表达式重新组织您的代码,使其更加整洁。另外你的公式似乎有一堆不必要的括号。
m = 12
n = 6
ap = []
def calculate(p, r):
return (1/n) * data3.loc[r].iat[1] * np.cos(2*np.pi * p * r) / m
for p in range(1, n):
a = sum(calculate(p, r) for r in range(-n, n))
ap.append(a)
这将创建一个ap长度列表n-1
添加回答
举报
0/150
提交
取消