gpt4 book ai didi

python - 最后一列追加 python

转载 作者:行者123 更新时间:2023-12-01 01:20:59 25 4
gpt4 key购买 nike

我有以下代码,当我尝试附加我的 B 时,它没有按预期附加。

B=[]
E = np.zeros(3)
for i in [1, 10, 30, 50]:
for j in range(3):
E1 = 0
for k in range(5):
Ene=k+rand()
E1 = E1 + Ene
E[j] = E1
B.append(E)

我得到以下结果:

 [array([12.35627688, 12.16296235, 11.75953804]),
array([12.35627688, 12.16296235, 11.75953804]),
array([12.35627688, 12.16296235, 11.75953804]),
array([12.35627688, 12.16296235, 11.75953804])]

这是E最后一个值的四倍。但是,当我在第一个 for 循环之后移动 E = np.zeros(3) 时,我得到了我想要的结果,这些结果是 B 的每个分量的不同值。

我不明白为什么当 E = np.zeros(3) 在 for 循环之前时,我在 B 中获得了四次 E 的最后一个值。谁能帮我 ?谢谢!

最佳答案

因为您在列表中添加了引用而不是 E 的副本,因此更改 E 也会更改 B 的内容。检查 https://docs.python.org/3.8/library/copy.html添加副本。为了安全起见,请使用深度复制。

import numpy as np
from random import random as rand
from copy import deepcopy

B = []
E = np.zeros(3)
for i in [1, 10, 30, 50]:
for j in range(3):
E1 = 0
for k in range(5):
Ene=k+rand()
E1 = E1 + Ene
E[j] = E1
B.append(deepcopy(E))

print(B)

xxx@yyy:~/Desktop/test$ python3 test.py
[数组([13.16046629, 13.07833955, 11.39445043]), 数组([11.70113908, 11.59176892, 12.9708855 ]), 数组([12.85908412, 12.8424841, 12.62336043]), 数组([12.23842107, 13.02196394, 12.54768361])]

关于python - 最后一列追加 python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53840906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com