Массив некорректно перезаписывается с использованием индекса ненулевых значений - PullRequest
0 голосов
/ 31 января 2019

У меня есть массив чисел, следующий за распределением Пуассона, где я хочу перезаписать каждое ненулевое значение само по себе, умноженное на некоторое случайное число

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] неправильно перезаписывается.

Что здесь происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...