У меня есть массив чисел, следующий за распределением Пуассона, где я хочу перезаписать каждое ненулевое значение само по себе, умноженное на некоторое случайное число
from scipy import stats
import numpy as np
jumps = stats.poisson(mu=0.05).rvs(200) # generate 200 random poisson numbers
idx = np.where(jumps!=0)[0] # get the index where jumps is non zero
for i in idx:
# want to overwrite the i'th index in jumps with itself
# multiplied by a random float
jumps[i] = jumps[i]*np.random.normal()
print(jumps) # we get only 0,-1,1
>>> [0 0 -1 ....
0 0 0]
Даже если я включу временную переменную, я все еще получаю только0, -1,1
for i in idx:
# want to overwrite the i'th index in jumps with itself
# multiplied by a random float
tmp = jumps[i]*np.random.normal()
jumps[i] = tmp
print(jumps) # we still get only 0,-1,1
>>> [0 0 -1 ....
0 0 0]
Если вы печатаете tmp
на каждой итерации, вы увидите, что она работает нормально.Но по какой-то причине jumps[i]
неправильно перезаписывается.
Что здесь происходит?