Я выделил следующую часть более крупного кода:
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.]
Я не могу понять, почему результаты не идентичны, ни как сформулировать вопрос, чтобы найти ответ на google...
Пожалуйста, ответь мне, было так много часов, что я застрял в этом, это сводит меня с ума.
используйте .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[:]
population.copy()
не [:]
как указано в ответе для списков, не являющихся пустыми.
name 'pop' is not defined
. Вы имеете в видуprint(population)
?pop
?