【发布时间】:2018-10-05 04:54:56
【问题描述】:
def foo():
x = np.ones((10,10))
return x[:5,:5]
如果我调用y = foo(),我将得到一个 5x5 数组(x 中值的 1/4)。但是x 中的其他值会发生什么情况,它们是保留在内存中还是以某种方式收集垃圾?我想明白这一点。
【问题讨论】:
-
可能有用的读物:Python garbage collector documentation
-
NumPy 数组的基本切片会创建一个数组视图,该视图保留对原始数组的引用。必须保留原始数组以使切片有意义。只要它的切片视图存在,名为
x的数组就会一直存在。见docs.scipy.org/doc/numpy-1.13.0/reference/arrays.indexing.html -
@kindall 你有这方面的参考吗?我对 numpy 内部结构不是很熟悉,有兴趣了解更多
-
我发布的链接概述了基本索引与高级索引,并指出基本索引创建了一个视图。
标签: python numpy memory-leaks garbage-collection numpy-ndarray