替换数组索引处的元素,然后使用for循环重置数组

时间:2018-09-30 03:01:00

标签: arrays python-3.x

我只想更新1d数组中的1个元素,然后重新开始。如果以矩阵形式查看,我只希望更改条目i = j。

到目前为止,我的代码:

import numpy as np
a = np.array([10, 20, 30, 40, 50])

for i, j in enumerate(a):
    b = a
    b[i] = j + 1
    print(b)

我希望for循环的每次迭代仅更改一个元素,并使其他所有元素保持不变。

我想要的输出看起来像这样:

[11, 20, 30, 40, 50]
[10, 21, 30, 40, 50]
[10, 20, 31, 40, 50]
[10, 20, 30, 41, 50]
[10, 20, 30, 40, 51]

但是我得到这个是因为即使我(或者至少我认为)在每个循环开始时都恢复了原始数组,b并没有复位。

[11, 20, 30, 40, 50]
[11, 21, 30, 40, 50]
[11, 21, 31, 40, 50]
[11, 21, 31, 41, 50]
[11, 21, 31, 41, 51]

我弄错了什么主意吗? TIA

1 个答案:

答案 0 :(得分:1)

尝试将b=a替换为b=a.copy() b=a,将创建b并指向相同的内存。而b=a.copy()创建一个copy of a并将其存储为b到不同的存储位置。