0
这是怎么回事?我敢肯定,我忽略了一个简单的解决方案/事实。我只是不明白为什么我不能以这种方式将值/更改保存到NumPy数组中。为什么不附加列表反映变量更改?
>>> import numpy as np
>>> memoize = []
>>> parameters = np.array([1, 2]).astype(np.float64)
>>> memoize.append(parameters)
>>> parameters -= np.array([0.5, -0.5])
>>> memoize.append(parameters)
>>> memoize
[array([ 0.5, 2.5]), array([ 0.5, 2.5])]
我希望答案是
[array([ 1., 2.]), array([ 0.5, 2.5])]
是否有什么关系的列表是可变的?
不,这是因为你不断追加*相同的数组*。因此,您有一个对同一个数组的引用列表,这就是为什么对该数组的更改反映在列表中的每个点上。的确,问题是'list.append' **是**反映了变量的变化! –
@ juanpa.arrivillaga男人这很棘手。是的,我看到它正在更新这两个元素。完全出乎意料。 – bjd2385
我的意思是,这是Python中的* everything *工作原理。这很明显,你一遍又一遍地执行'memoize.append(参数)...... –