Numpy массивы неожиданно меняются - PullRequest
1 голос
/ 20 января 2020
SL = np.zeros((N+1))
DDB, SOYD, MACRS, MEX, book_value = SL, SL, SL, SL, SL
print("MEX: ",MEX)
book_value[0] = inv_fci
DDB[0] = 0
print("MEX: ",MEX)
SL[1:m+1] = inv_fci/m
print("MEX: ",MEX)

Итак, я сделал массив SL numpy, который был в основном (N + 1) нулей, и я назначил его для нескольких других массивов: DDB, SOYD, MACRS и т. Д. c. Странная часть, после того, как я сделал что-то с SL, все массивы меняются точно так же, как и SL. MEX, который не был затронут, становится в точности как SL ie массивом с m записями, все равными inv_fci (предопределенная двойная переменная). После выполнения некоторых тестов даже другие массивы меняются, когда я меняю SL.

Почему эти массивы меняются при смене SL?

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Полагаю, вы просто присваиваете ссылку, а не копируете ее.

Вы можете попробовать скопировать

https://docs.scipy.org/doc/numpy/reference/generated/numpy.copy.html

0 голосов
/ 20 января 2020
DDB, SOYD, MACRS, MEX, book_value = SL, SL, SL, SL, SL

Это заставляет DDB, SOYD, MACRS, MEX и book_value указывать на один и тот же объект. Если этот объект изменен, то все ваши переменные будут указывать на один и тот же измененный объект.

Возможное решение - создать копии SL и назначить разные копии каждой из ваших переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...