2

我正在编写一个 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' 的新值。有什么办法可以不改变“温度”吗?我曾尝试保存其他副本等,但似乎没有任何效果。

谢谢!

4

2 回答 2

0
t0 = temp

实际上并不执行复制。它使名称t0temp都引用同一个数组。你可能想要

t0 = temp.copy()

这构成了一个新的独立数组。

于 2013-07-22T16:49:17.467 回答
0

您想使用深拷贝,请参阅此处的文档。深拷贝将创建一个新数组 t0,该数组具有从 temp 复制值的唯一内存位置。发生在你身上的是你说 t0 和 temp 是同一个对象,然后当你改变 t0 temp 时,因为你说它们是同一个对象而改变。

于 2013-07-22T16:51:51.130 回答