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

如果我打电话y = foo(),我会得到一个 5x5 数组(中值的 1/4 x)。但是 中的其他值会发生什么x,它们是在内存中持续存在还是以某种方式被垃圾收集?我想明白这一点。

4

1 回答 1

1

正如 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
于 2018-04-24T20:25:44.317 回答