我有一個m x n
數組:a
,其中整數m > 1E6
和n <= 5
。numpy:評估矩陣中的函數,使用之前的數組作爲參數計算下一個
我有功能˚F和ģ,其由這樣的:˚F(ü,ģ(ü,t))的。 ü是一個1 x n
數組,t是一個標量,並且F和G返回1 x n
數組。
我需要˚F評估的a
每個row
,並使用先前估計的行爲ü -array爲接下來的評測。我需要做出這樣的評估m
。
這必須非常快。我之前對整個數組的評估印象深刻,但是這個問題需要使用先前計算的數組作爲計算下一個數組的參數。我不知道如果StringFunction可以做到這一點。
例如:
a = zeros((1000000, 4))
a[0] = asarray([1.,69.,3.,4.1])
# A is a float defined elsewhere, h is a function which accepts a float as its argument and returns an arbitrary float. h is defined elsewhere.
def G(u, t):
return asarray([u[0], u[1]*A, cos(u[2]), t*h(u[3])])
def F(u, t):
return u + G(u, t)
dt = 1E-6
for i in range(1, 1000000):
a[i] = F(a[i-1], i*dt)
i += 1
與上述代碼的問題是,它是緩慢的地獄。我需要用numpy毫秒來完成這些計算。
我該怎麼做我想要的?
謝謝你的時間。
親切的問候,
馬呂斯
你的問題沒有完全有意義......如果** u **是先前評估過的行,那麼你的公式就不會使用當前行。我猜你的意思是** ** **(** v **,** G **(** u **,t)),其中** u **是評估最後一行的結果,並且** v **是當前行,但請確認,並定義如何處理第一行,其中沒有「以前評估的行」可用。另外,更重要的是,我不知道** F **和** G **做什麼,我懷疑任何人都能給你一個滿意的答案。 – Jaime
不,據我所知,我輸入的是我想要做的。我會添加更多的信息。 –
你可以添加一個緩慢但正確的實現代碼嗎? –