Код актуализирует автоматически переменные, когда они не нужны [дубликаты]

1

Я выделил следующую часть более крупного кода:

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...

Пожалуйста, ответь мне, было так много часов, что я застрял в этом, это сводит меня с ума.

  • 0
    Я получаю ошибку: name 'pop' is not defined . Вы имеете в виду print(population) ?
  • 0
    что такое переменная pop ?
Показать ещё 10 комментариев
Теги:
numpy

1 ответ

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[:]
  • 0
    О, я вижу, я только что проверил с [:], и, как вы сказали, он не работал со списком NumPy. В настоящее время я пытаюсь с .copy (), он работает на примере, который я привел здесь, но в настоящее время я реализую его в моем основном коде. Я вернусь к вам, если у меня будет больше проблем. Большое спасибо !
  • 0
    Используйте population.copy() не [:] как указано в ответе для списков, не являющихся пустыми.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню