所以我有以下功能
def get_a(x):
start = timer()
A = np.zeros(len(x))
for k in range(len(x)):
Ak = 0
Ak = np.sum(x*np.exp(-2j*pi*(k*1/len(x))))
# for i in range(len(x)):
# Ak = x[i]*np.exp(-2j*pi*(k*i/len(x)))
Ak = norm(Ak)
A[k] = Ak
end = timer()
print(end - start)
return A
函式的注釋部分是我真正想要做的,但是它需要太多時間迭代陣列而不是使用 numpy 的 sum 函式,但問題是我需要以某種方式訪問?? sum 的“i”值. 在行
Ak = np.sum(x*np.exp(-2j*pi*(k*1/len(x))))
我需要替換的是總和索引的“1”。有什么辦法嗎?
uj5u.com熱心網友回復:
假設提到的陣列是 rank 1,你可以生成一個適當長度的 numpy 陣列numpy.arange。考慮
Ak = np.sum(x*np.exp(-2j*pi*(k*np.arange(len(x))/len(x))))
還有一些可以做的重構。特別是,指數中的整個分數可以替換為適當的numpy.linspace呼叫以獲得適當的范圍,但這應該讓您開始矢量化您的方程。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489885.html
