python对象更改输入变量的值

时间:2016-02-16 05:31:47

标签: python arrays object numpy numerical-integration

所以我不知道这是否是一个格式正确的问题,如果不是,我很抱歉,但我很难过。此外,我不知道如何提交一个最小的工作示例,因为我无法在没有整个代码的情况下重现行为,这对于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相同(也就是说,数值解的最终值),但有时它是一些插页式步骤。

正如我所说,我完全难过,任何建议都会非常感激!

1 个答案:

答案 0 :(得分:0)

如果您有一个可变对象(listsetnumpy.array,...),并且您不希望它发生变异,那么您需要复制并传递该对象代替:

l1 = [1, 2, 3]
l2 = l1[:]

s1 = set([1, 2, 3])
s2 = s1.copy()

arr1 = np.ndarray(some_shape)
arr2 = np.copy(arr1)