在这种情况下,python中的内存分配是如何工作的?
假设我有一个非常大的在这种情况下,python中的内存分配是如何工作的?,python,arrays,numpy,memory-management,Python,Arrays,Numpy,Memory Management,假设我有一个非常大的numpy数组a,我想把数值1加到数组的每个元素上。根据我目前所读到的: a += 1 是一种很好的方法,而不是: a = a + 1 因为在第二种情况下,在不同的内存插槽中创建一个新的数组a,而在第一种情况下,在相同的内存插槽中有效地替换了旧的数组 假设我要执行以下操作: a = 1-a 执行上述操作的内存有效方式是什么?您可以像这样就地执行: a *= -1 a += 1 直接使用subtractufunc比-操作符提供更多的控制。在这里,我们使用out参数将减
numpy
数组a
,我想把数值1加到数组的每个元素上。根据我目前所读到的:
a += 1
是一种很好的方法,而不是:
a = a + 1
因为在第二种情况下,在不同的内存插槽中创建一个新的数组a
,而在第一种情况下,在相同的内存插槽中有效地替换了旧的数组
假设我要执行以下操作:
a = 1-a
执行上述操作的内存有效方式是什么?您可以像这样就地执行:
a *= -1
a += 1
直接使用
subtract
ufunc比-
操作符提供更多的控制。在这里,我们使用out
参数将减法的结果放回a
@OlivierMelançon:a
是一个NumPy数组。我们已经在用NumPy了。导入NumPy的成本是沉没成本,而不是使用此代码的额外成本。a
是NumPy数组吗?您能添加类似于a=numpy.array([1,2,3,4,5,6,7,8])的内容吗?这样我们就可以很容易地理解您的意思了。add.at
的文档表明a+=1
具有一定的缓冲-。详细信息隐藏在numpy
code中。
numpy.subtract(1, a, out=a)