Nic*_*Nic 5 python garbage-collection memory-leaks numpy numpy-ndarray
def foo():
x = np.ones((10,10))
return x[:5,:5]
Run Code Online (Sandbox Code Playgroud)
如果我调用,y = foo()我将得到一个 5x5 数组( 中值的 1/4 x)。但是 中的其他值会发生什么情况x,它们是否会保留在内存中或以某种方式被垃圾收集?我想了解这一点。
正如 kindall 在评论中所说, NumPy 数组上的基本切片创建了原始数组的视图。视图必须保持整个原始对象处于活动状态;您可以在视图的base属性中看到它用于执行此操作的引用。
In [2]: x = numpy.ones((10, 10))
In [3]: y = x[:5, :5]
In [4]: y.base is x
Out[4]: True
Run Code Online (Sandbox Code Playgroud)