我有一个数组,想要将其分成两半。因为对称性的原因,我只关心保留数组的左半部分。
我可以通过以下代码将数组分成两半:
[a,b] = numpy.split(c,2)
c也是一个数组。
有没有办法只返回“a”数组,或者在拆分数组后立即从内存中删除“b”数组?
a = x[len(x)//2:].copy()
这需要分配副本并移动内容(因此暂时需要1.5倍的内存)。
否则,您只需说
a = x[len(x)//2:]
你可以简单地使用delete函数来实现这个目的!以下是一个例子:
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]
np.delete
的文档没有提供太多信息,但我猜想像@6502的答案一样明确地复制原始数组以便释放原始数组可能是正确的方法。 - Bas Swinckels