Numpy 是否在 x += 2 * y 等表达式中分配临时数组?

Max*_*axB 5 python performance numpy

当评估像这样的表达式时

x += 2 * y
Run Code Online (Sandbox Code Playgroud)

它是Numpy首先分配一个新的临时数组来保存2*y,将其添加到x然后删除它,还是可以就地执行整个操作?

use*_*ica 3

是的,这就是一个临时数组。

如果您发现自己需要减轻 NumPy 对巨型临时数组的喜爱,像Numexpr这样的附加库可以提供很大帮助,但请确保将性能问题归因于正确的原因。简单地尝试保存分配通常会导致速度大幅下降,而不是性能提升。