为什么numpy.resize()的基础对象不是原始对象?

2024-06-29 00:46:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近从使用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)

Tags: 对象代码falsebaseisnp数组差异