【发布时间】:2016-05-27 06:11:00
【问题描述】:
所以我不知道这是否是一个格式正确的问题,如果不是,我很抱歉,但我很困惑。此外,我不知道如何提交一个最小的工作示例,因为没有整个代码我无法重现该行为,这对于 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一样(也就是数值解的最终值),但有时是一些插页式的步骤。
正如我所说,我完全被难住了,任何建议都将不胜感激!
【问题讨论】:
-
你需要显示你的班级代码和
numerical_solve。大概numerical_solve正在改变数组(例如,通过在其中设置值)。 -
MyClass或numeric_solve没有理由不能更改input_arr,这很常见。例如,有时这将用于节省时间和/或空间;例如,numpy 的中缀运算符(例如,x += 1)可以比重复复制数组更快。如果您想保存原件,您可以制作一份副本,但先验更改并不表示有问题。 -
为什么不用副本?
-
foo = mc.MyClass(np.copy(input_arr))复制数组。 -
numpy.copy() 肯定能解决问题
标签: python arrays object numpy numerical-integration