[英]Best practice to reduce memory usage when splitting array
我有一个阵列,我想分成两半。 由于对称性,我只对保持数组的左半部分感兴趣。
我可以通过说:
[a,b] = numpy.split(c,2)
其中c也是一个数组。
有没有办法只返回'a'数组,或者在拆分数组后立即从内存中删除'b'数组?
你可以复制上半部分
a = x[len(x)//2:].copy()
这需要分配副本并移动内容(因此暂时需要1.5倍的内存)
否则你可以说
a = x[len(x)//2:]
获取对前半部分的引用,但另一部分不会从内存中删除
您只需使用删除功能即可实现此目标! 这是一个例子:
array=np.array([1,2,3,4])
x=len(array)/2
first_h=np.delete(array,array[x-1:]) #second half
演示:
>>>print first_h
>>>[1,2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.