使用函数给出的值初始化numpy数组的最快方法

时间:2015-07-30 09:01:51

标签: python numpy multidimensional-array

我主要感兴趣的是((d1,d2))numpy数组(矩阵),但这个问题对于有更多轴的数组是有意义的。我有函数f(i,j),我想通过这个函数的一些操作初始化一个数组

A=np.empty((d1,d2))
for i in range(d1):
    for j in range(d2):
        A[i,j]=f(i,j)

这是可读的并且有效但我想知道是否有更快的方法,因为我的阵列A将非常大并且我必须优化这一点。

2 个答案:

答案 0 :(得分:5)

一种方法是使用np.fromfunction。您的代码可以替换为以下行:

np.fromfunction(f, shape=(d1, d2))
就NumPy函数而言,

This is implemented因此对于较大的数组而言应该比Python for循环快得多。

答案 1 :(得分:0)

as.numeric( difftime(time_a, time_b, units='secs') )

请注意,如果您的数组大小不同,则必须创建一个meshgrid:

a=np.arange(d1)
b=np.arange(d2)
A=f(a,b)