我正在尝试编写一个对数组执行数学运算并返回结果的函数。一个简化的例子可能是:
def original_func(A):
return A[1:] + A[:-1]
为了加快速度并避免为每个函数调用分配新的输出数组,我希望将输出数组作为参数,并在适当的位置进行更改:
def inplace_func(A, out):
out[:] = A[1:] + A[:-1]
但是,当以如下方式调用这两个函数时,
A = numpy.random.rand(1000,1000)
out = numpy.empty((999,1000))
C = original_func(A)
inplace_func(A, out)
原始功能似乎是就地功能的两倍。这怎么解释?由于不需要分配内存,就地函数不应该更快吗?