我只想更新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
答案 0 :(得分:1)
尝试将b=a
替换为b=a.copy()
b=a
,将创建b
并指向相同的内存。而b=a.copy()
创建一个copy of a
并将其存储为b
到不同的存储位置。