【发布时间】:2017-06-02 21:33:34
【问题描述】:
由于我是 Python 新手,我遇到了以下问题:
我有一个初始 numpy 数组,其中包含用于模拟的变量的初始值。我想根据一些方程式更新这些。假设 x_init 是具有初始值的数组,它是一个 (5,3) 数组,x 是用于在每次迭代期间更新和存储值的数组,我要做的是:
x = x_init
while x.min()<100:
for j in range(3):
for i in range(5):
x[i,j]=x[i,j]+rand1
其中 rand1 只是在 [0,1] 之间产生的随机数。最后,由于开始时的分配(我假设),数组 x 总是等于 x_init 。您能否解释一下为什么会发生这种情况并提出一种在 python 中处理此类分配的方法?
【问题讨论】:
-
因为
x是在分配过程中提到的x_init。赋值 从不 隐式复制。这始终是这样工作的。 -
您应该阅读并理解 Ned Batchelder 的 Facts and myths about Python names and values。虽然没有提到
numpy数组,但原则仍然适用。 -
另外,请记住,在 Python
my_list_copy = my_list[:]中使用切片复制序列(如列表)的常见习语实际上并没有使用numpy数组创建底层数组的副本,切片是实际上是一个view。 -
感谢您的帮助!你发给我的指南真的很有帮助!
标签: python arrays variable-assignment