Python对象改变了输入变量的值

2024-10-02 18:23:03 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我不知道这是不是一个结构合理的问题,如果不是的话我很抱歉,但我很困惑。此外,我不知道如何提交一个最小的工作示例,因为如果没有完整的代码,我无法再现行为,这对于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(也就是说,数值解的最终值)相同,但有时它是一些间隙步骤。你知道吗

正如我所说,我完全被难住了,任何建议都将不胜感激!你知道吗


Tags: 对象importnumpy示例inputoutputfooas
1条回答
网友
1楼 · 发布于 2024-10-02 18:23:03

如果您有一个可变对象(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)

相关问题 更多 >