我正在编写一个Python脚本,作为气候变化和森林火灾研究的一部分。这可能是一个新手问题,但我是初学程序员。 我有大型numpy数组(1)的气象变量(例如:温度,相对湿度等)。在程序的一部分中,我将另一个数组('t0')定义为等于'temp'。 (2)
(1) `temp = N.array([[[-7.060185]],[[-17.5462963]],[[-22.43055556]],[[-16.13425926]]])`
(2) `t0 = temp`
(3) `t0[t0 < (-1.1)] = -1.1`
这是有效的 - 't0'等于'temp'数组,但是在第三行(3)之后'temp'已经用't0'的新值保存了。有没有办法让'temp'不被改变?我已经尝试保存其他副本等,但似乎没有任何工作。
谢谢!
答案 0 :(得分:0)
t0 = temp
实际上并不执行副本。它使名称t0
和temp
都引用相同的数组。你可能想要
t0 = temp.copy()
创建一个新的独立数组。
答案 1 :(得分:0)
您想要使用深拷贝see the documentation here。深层复制将创建一个新数组t0,该数组具有唯一的内存位置,其中值从temp复制。发生在你身上的是你说t0与temp是同一个对象,然后当你改变时t0 temp被改变,因为你声明它们是同一个对象。