这里发生了什么?我确信这是一个简单的解决方案/我忽视的事实。我无法理解为什么我不能以这种方式保存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])]
与列表是否可变有什么关系?
答案 0 :(得分:1)
您遇到的问题是parameters
是一个可变值,并且您在对其进行变更时附加多个引用。如果每次都将变量反弹到一个新数组,那么就没有问题了。
尝试更改
parameters -= np.array([0.5, -0.5])
到
parameters = parameters - np.array([0.5, -0.5])
原始版本对parameters
进行了就地修改。第二个版本创建一个包含复制数据的新数组。这可能会慢一些,但在这种情况下它会做你想要的。