【发布时间】:2020-07-20 22:56:57
【问题描述】:
正如我下面的 MWE 所示,在现有数组 a 上调用 np.array(a, copy=False) 返回的行为与预期完全相同,除了 .data 属性似乎不同。这怎么可能?
>>> a # My original array
array([2])
>>> b = np.array(a, copy=False) # Not-a-copy of the original array
>>> b is a # The Python objects seem to be identical
True
>>> b.data is a.data # But their .data attributes aren't??
False
>>> a.data
<memory at 0x7f82ebd757c8>
>>> b.data
<memory at 0x7f82ebd75888>
>>> b
array([2])
>>> a
array([2])
>>> a[:] = 3 # Changing a indeed also changes b
>>> a
array([3])
>>> b
array([3])
>>> a.data
<memory at 0x7f82ebd757c8>
>>> b.data
<memory at 0x7f82ebd75888>
编辑
在玩的时候,我什至发现.data属性在看的时候发生了变化!
>>> a.data is a.data # a.data isn't equal to itself?!
False
>>> a.data
<memory at 0x7f82ebd75948>
>>> a.data
<memory at 0x7f82ebd75888> # A different value than a minute ago
>>> a.data
<memory at 0x7f82ebd75948>
>>> a.data
<memory at 0x7f82ebd75888>
>>> a.data
<memory at 0x7f82ebd75948>
>>> a.data
<memory at 0x7f82ebd75888>
>>> a.data
<memory at 0x7f82ebd75948>
>>> a.data
<memory at 0x7f82ebd75888>
>>> a.data
<memory at 0x7f82ebd75948>
【问题讨论】:
标签: python arrays numpy numpy-ndarray