def foo():
x = np.ones((10,10))
return x[:5,:5]
如果我打电话y = foo()
,我会得到一个 5x5 数组(中值的 1/4 x
)。但是 中的其他值会发生什么x
,它们是在内存中持续存在还是以某种方式被垃圾收集?我想明白这一点。
def foo():
x = np.ones((10,10))
return x[:5,:5]
如果我打电话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