gpt4 book ai didi

python - 就地改变numpy函数输出数组

转载 作者:太空狗 更新时间:2023-10-29 22:07:09 26 4
gpt4 key购买 nike

我正在尝试编写一个对数组执行数学运算并返回结果的函数。一个简化的例子可能是:

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)

原始函数似乎是就地函数的两倍。这怎么解释呢?由于不必分配内存,就地函数不应该更快吗?

最佳答案

如果你想就地执行操作,做

def inplace_func(A, out):    np.add(A[1:], A[:-1], out)

这不会创建任何临时对象(A[1:] + A[:-1])会创建。

所有 Numpy 二元运算都有对应的函数,查看这里的列表:http://docs.scipy.org/doc/numpy/reference/ufuncs.html#available-ufuncs

关于python - 就地改变numpy函数输出数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7529786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com