Python 不需要时自动实现变量的代码
我已分离出更大代码的以下部分:Python 不需要时自动实现变量的代码,python,numpy,Python,Numpy,我已分离出更大代码的以下部分: import numpy as np population= np.random.normal(0,1,5) individuals=population print(population) for i in range(len(individuals)): individuals[i]=0 print(population) 答复: [-0.1791731-0.0756427 0.44463943-0.51173395 0.9121922] [
import numpy as np
population= np.random.normal(0,1,5)
individuals=population
print(population)
for i in range(len(individuals)):
individuals[i]=0
print(population)
答复:
[-0.1791731-0.0756427 0.44463943-0.51173395 0.9121922]
[0. 0. 0. 0. 0.]
我不明白为什么结果不一样 使用.copy()
如果要复制numpy数组的内容,您现在要做的就是复制指向列表的指针。
所以两个变量都指向相同的数据,所以如果其中一个变量发生变化,它们都会发生变化
import numpy as np
population= np.random.normal(0,1,5)
individuals=population.copy()
print(population)
for i in range(len(individuals)):
individuals[i]=0
print(population)
对于非numpy列表,您可以使用[:]
例如
a = [1,2,3]
b = a[:]
我收到一个错误:
未定义名称“pop”
。您的意思是print(population)
?变量pop
是什么?此外,您获得此输出的原因是您将个人作为population的参考,因此您在更改个人时更改了population。或者更改了pop,这是一个错误。您将for循环中的每个项目更改为0
。。。你想用for循环实现什么?哦,我明白了,我刚刚用[:]进行了测试,正如你所说的,它对numpy list不起作用。我目前正在尝试使用.copy(),它适用于我在这里给出的示例,但我目前正在我的主代码中实现它。如果我有更多的问题,我会回来找你。非常感谢你!使用population.copy()
而不是[:]
,如答案中所述,该答案适用于非numpy列表