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