首页 > 解决方案 > 为什么 numpy.resize() 有一个不是原始对象的基础对象?

问题描述

我最近从 using 切换np.ndarray.resize()np.resize(). 我担心的是,使用后者,生成的数组有一个我无法解释的基础对象。有人可以向我解释一下吗?

请注意,我理解由于引用和refcheck. a除了;之外,该代码没有对该对象的任何引用。我切换到np.resize()PyCharm/iPython 不会抱怨,因为它们有额外的引用。

前者:

>>> a = np.arange(5)
>>> a.resize(10)
>>> a.base is None
True

后者:

>>> a = np.arange(5)
>>> b = a
>>> a = np.resize(a, 10)
>>> a.base
array([0, 1, 2, 3, 4, 0, 1, 2, 3, 4])
>>> a.base is a, a.base is b
(False, False)

标签: pythonnumpy

解决方案


推荐阅读