def foo():
x = np.ones((10,10))
return x[:5,:5]
如果我拨打y = foo()
,我将获得一个5x5阵列(x
中1/4的值)。但是x
中的其他值会发生什么,它们是否会在内存中存留或以某种方式收集垃圾?我想明白这一点。
答案 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