【发布时间】:2019-05-01 07:38:35
【问题描述】:
我在最小化过程中反复调用一个需要大数组的函数。这是一个虚拟示例
def foo(N,a):
big_array = np.mgrid[0:N,0:N]
b = np.fft.fft2(big_array[0]**a) #some heavy computation
return b
在最小化过程中,数组大小N不会改变,所以我想使用相同的数组来避免无用的计算和内存分配。
我还希望函数 foo 是自洽的,这意味着我不希望另一个函数在最小化过程中创建数组并将其提供给 foo。
鉴于这些要求,我正在考虑使用带有数组作为属性的可调用对象。你怎么看待这件事?有没有更pythonic的方法?
【问题讨论】:
-
您的意思是要避免分配或计算?
-
我想避免
big_array = np.mgrid[0:N,0:N]这一行的无用重复。目标是让程序更快
标签: python arrays numpy memory optimization