在这种情况下,内存分配如何在python中工作?

kon*_*ant 2 python arrays memory-management numpy

假设我有一个非常大的numpy数组a,我想将数值1添加到数组的每个元素.从我到目前为止所读到的:

a += 1 
Run Code Online (Sandbox Code Playgroud)

这是一个很好的方式,而不是:

a = a + 1
Run Code Online (Sandbox Code Playgroud)

因为在第二种情况下a,在不同的存储器槽中创建新阵列,而在第一种情况下,旧阵列在相同的存储器槽中被有效地替换.

假设我想要执行以下操作:

a = 1-a
Run Code Online (Sandbox Code Playgroud)

做上述内存有效的方法是什么?

use*_*ica 6

numpy.subtract(1, a, out=a)
Run Code Online (Sandbox Code Playgroud)

subtract直接使用ufunc可以提供比-操作员更多的控制.在这里,我们使用out参数将减法的结果放回a.