Так что я не знаю, является ли это правильно сформулированным вопросом, и я сожалею, если это не так, но я довольно тупой. Кроме того, я не знаю, как представить минимальный рабочий пример, потому что я не могу воспроизвести поведение без всего кода, что немного большим для stackexchange.объект python меняет значение входной переменной
Итак, вот проблема: у меня есть объект, который принимает в качестве одного из своих аргументов массив 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' мутирует массив (например, устанавливая в нем значения). – BrenBarn
Нет причин, по которым 'MyClass' или' numeric_solve' не могут изменить 'input_arr' на месте, и это довольно часто. Иногда, например, это будет использоваться для экономии времени и/или пространства; например, оператор инфикса numpy (например, x + = 1) может быть быстрее, чем повторять копии массива. Если вы хотите сохранить оригинал, вы можете просто сделать копию, но * априори * изменение не указывает на проблему. – tom10
Почему вы не используете копию? –