我有一个m x n
数组:a
,其中整数m > 1E6
和n <= 5
。
我有函数F和G,它们的组成如下:F ( u , G ( u , t))。u是一个1 x n
数组,t 是一个标量,F和G返回1 x n
数组。
我需要评估F中的每row
一个,并将先前评估的行用作下一次评估的u -array。我需要做出这样的评价。a
m
这必须非常快。我之前对scitools.std
StringFunction
整个数组的评估印象深刻,但是这个问题需要使用之前计算的数组作为计算下一个数组的参数。我不知道 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 毫秒内完成这些计算。
我怎样才能做我想做的事?
谢谢你的时间。
亲切的问候,
马吕斯