res1 = dist1
делает не копировать dist1
.Вы модифицируете его с помощью *=
, следовательно, это две разные операции.
Используйте copy
для копирования массива:
>>> dist1 = np.random.normal(100., 10., 10000)
>>> dist2 = np.random.normal(0.05, 0.005, 10000)
>>>
>>> res1 = dist1.copy()
>>> res1 *= dist2
>>>
>>> res2 = dist1 * dist2
>>>
>>> print(np.median(res1))
4.970902419879373
>>> print(np.median(res2))
4.970902419879373
Просто подсказка: "переменные"в python просто имена (т.е. ссылки) для объектов.Они не представляют область памяти.Таким образом:
res1 = dist1
Вы просто даете новое имя объекту с именем dist1
, и теперь этот объект имеет два имени (res1
и dist1
) и может быть доступен как.
Когда объект неизменен, разницу между именами / ссылками и значениями трудно увидеть, но разница принципиальна при работе с изменяемыми объектами.