免费Numpy记忆到位

时间:2016-03-22 16:34:11

标签: python numpy memory-management

有没有办法让numpy释放数组使用的内存?我不能只运行int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.LOLLIPOP){ // Do something for lollipop and above versions } else{ // do something for phones running an SDK before lollipop } ,因为数组在别处被引用。

为什么这很重要以及我认为这是安全的原因的例子:

del array

我可以修改def run(): arr = np.array(....) arr2 = process(arr) fit(arr2) 但不能编辑process。现在run占用了arr运行后不再需要的大量内存。我创建process后,我想从arr内删除process中的内容。

1 个答案:

答案 0 :(得分:1)

您可以尝试将数组的大小调整为一个小数组:

arr.resize((2,), refcheck=False)

它就地更改了数组:

  

a.resize(new_shape,refcheck = True)

     

就地更改阵列的形状和大小。

...

  

备注

     

如有必要,这将为数据区重新分配空间。

     

只有连续的数组(内存中连续的数据元素)才可以   调整大小。

     

参考计数检查的目的是确保您   不要将此数组用作另一个Python对象的缓冲区   重新分配内存。但是,引用计数可以增加   其他方式,如果你确定你没有共享内存   对于具有另一个Python对象的此数组,您可以安全地设置   refcheck为假。