迭代必須從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
提交
取消