Numpy数组意外更改

2024-10-04 11:30:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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)

所以我制作了一个基本上是(N+1)零的numpy数组SL,并将其分配给了一组其他数组:DDB、SOYD、MACRS等等。 奇怪的是,在我对SL做了一些事情之后,所有的数组都会以SL改变的方式改变。 没有接触到的MEX变得完全像SL ie,一个包含m个条目的数组,所有条目都等于inv_fci(一个预定的双变量)。 在做了一些测试之后,当我更改SL时,甚至其他阵列也在更改

为什么在我更改SL时这些数组会更改


Tags: numpyvaluenpzeros数组事情printddb
2条回答

我猜是因为你只是简单地分配了一个引用,而不是复制它

你可以试试复印件

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

DDB, SOYD, MACRS, MEX, book_value = SL, SL, SL, SL, SL

这使得DDBSOYDMACRSMEXbook_value指向同一个对象。如果修改了该对象,那么所有变量都将指向同一个修改过的对象

一个可能的解决方案是创建SL的副本,并为每个变量分配不同的副本

相关问题 更多 >