【发布时间】:2020-01-20 05:57:08
【问题描述】:
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)
所以我创建了一个 numpy 数组 SL,它基本上是 (N+1) 个零,然后我将它分配给了一堆其他数组:DDB、SOYD、MACRS 等。 奇怪的是,在我对 SL 做了一些事情之后,所有的数组都完全按照 SL 的变化方式发生了变化。 未触及的 MEX 变得与 SL 完全相同,即具有 m 个条目的数组,全部等于 inv_fci(预定的双精度变量)。 在做了一些测试之后,当我改变 SL 时,甚至其他数组也在改变。
为什么当我更改 SL 时这些数组会发生变化?
【问题讨论】:
-
因为您只创建了一个数组并将其分配给一堆不同的名称。阅读以下内容:nedbatchelder.com/text/names.html
-
使用
np.array(SL)构造函数来制作独立的副本。 -
或者
.copy()方法