Numpy:切片后的垃圾收集

时间:2018-04-24 20:06:16

标签: python numpy memory-leaks garbage-collection numpy-ndarray

def foo():
    x = np.ones((10,10))
    return x[:5,:5]

如果我拨打y = foo(),我将获得一个5x5阵列(x中1/4的值)。但是x中的其他值会发生什么,它们是否会在内存中存留或以某种方式收集垃圾?我想明白这一点。

1 个答案:

答案 0 :(得分:1)

正如评论中所说的那样,NumPy数组上的basic slicing会创建原始数组的视图。视图必须保持整个原始对象的存活;您可以在视图的base属性中看到它用来执行此操作的参考。

In [2]: x = numpy.ones((10, 10))

In [3]: y = x[:5, :5]

In [4]: y.base is x
Out[4]: True