我发现我的代码有一个奇怪的情况,问题显示在下面的代码中
import numpy as np
dt = dict(names = ['n1','n2'], formats = ['a8','int'])
reca = np.recarray((10,), dtype = dt)
reca['n1'] = ['a','b','c','d','e','f','g','e','f','g']
reca['n2'] = range(10)
sreca = reca[::2]
print sreca[0] in reca
sreca[0]['n2'] = 12
print sreca[0] in reca
ireca = reca[[1,3,5,7]]
print ireca[0] in reca
ireca[0]['n2'] = 7
print ireca[0] in reca
输出是:
True
True
True
False
据我了解,除非我直接为它们分配一个新值,否则sreca
或者ireca
应该保留一个引用,但在分配后丢失了它的引用。我不知道这是否是预期的。reca
ireca
有人可以建议我如何避免这种情况吗?
顺便说一句,我发现代码的一个小改动(reca['n1'] = ['a']*10
例如)会给我True
这个示例中的所有内容,这真的让我感到困惑。