所以我不知道这是否是一个格式正确的问题,如果不是,我很抱歉,但我很难过。此外,我不知道如何提交一个最小的工作示例,因为我无法在没有整个代码的情况下重现行为,这对于stackexchange来说有点大。
所以这就是问题所在:我有一个对象,它将一个numpy数组作为其参数之一。 (如果它有帮助,这个数组代表微分方程的初始条件,我的对象中的方法在数值上解决。)在使用这个数组求解微分方程后,它输出答案就好了,但是我有的原始变量存储的数组现在已经改变了值。这就是我发生的事情:
import numpy as np
import mycode as mc
input_arr = np.ndarray(some_shape)
foo = mc.MyClass(input_arr)
foo.numerical_solve()
some_output
很好,很花哨。但是,当我查看input_arr
时,它已经改变了价值。有时候它与some_output
相同(也就是说,数值解的最终值),但有时它是一些插页式步骤。
正如我所说,我完全难过,任何建议都会非常感激!
答案 0 :(得分:0)
如果您有一个可变对象(list
,set
,numpy.array
,...),并且您不希望它发生变异,那么您需要复制并传递该对象代替:
l1 = [1, 2, 3]
l2 = l1[:]
s1 = set([1, 2, 3])
s2 = s1.copy()
arr1 = np.ndarray(some_shape)
arr2 = np.copy(arr1)