2013-07-22 3 views
2

Я пишу сценарий Python как часть исследований по изменению климата и лесных пожаров. Это может быть новичком, но я начинающий программист. У меня есть большие числовые массивы (1) метеорологических переменных (например, температура, относительная влажность и т. Д.). В одной части программы я определяю другой массив ('t0') равным «temp». (2)Сохранение скрипта Python по входным переменным

(1) `temp = N.array([[[-7.060185]],[[-17.5462963]],[[-22.43055556]],[[-16.13425926]]])` 
(2) `t0 = temp`  
(3) `t0[t0 < (-1.1)] = -1.1` 

Это работает --- «t0» равно «Темп» массива, но после третьей линии (3) «Темп» был сохранен с более новыми значениями 't0. Есть ли способ разрешить «temp» не изменять? Я попытался сохранить другие копии и т. Д., Но ничто не показалось мне полезным.

Спасибо!

+0

С помощью 't0 = temp' вы привязываете новое имя' t0' к ​​одному и тому же объекту (в данном случае массиву numpy) – mg007

ответ

0
t0 = temp 

фактически не производится копия. Он делает имена t0 и temp оба относятся к одному и тому же массиву. Вы, вероятно, хотите

t0 = temp.copy() 

, который создает новый независимый массив.

0

Вы хотите использовать глубокую копию see the documentation here. Глубокая копия создаст новый массив t0 с уникальными ячейками памяти, в которых значения будут скопированы из temp. Что происходит с вами, так это то, что вы говорите, что t0 - это тот же объект, что и temp, а затем при изменении t0 temp изменяется, поскольку вы заявили, что это тот же самый объект.

Смежные вопросы