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



我主要对((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将是非常大的,我必须优化这一点。

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

np.fromfunction(f, shape=(d1, d2))

这是根据NumPy函数实现的,因此对于更大的数组,应该比Python for循环快得多。

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

注意,如果你的数组大小不同,那么你必须创建一个网格:

X,Y=meshgrid(a,b)
A=f(X,Y)

相关内容

  • 没有找到相关文章