我需要用一個隨機數替換一個numpy數組中的某些值。用條件隨機數替換numpy數組值
我有一個功能,增加了一個隨機值的50%的時間:
def add_noise(noise_factor=0.5):
chance = random.randint(1,100)
threshold_prob = noise_factor * 100.
if chance <= threshold_prob:
noise = float(np.random.randint(1,100))
else:
noise = 0.
return(noise)
但是,當我打電話numpy的功能,它產生的隨機數代替所有匹配值:
np.place(X, X==0., add_noise(0.5))
問題在於,add_noise()只運行一次,它將用噪聲值替換所有的0.值。
我想要做的是通過numpy數組中的每個元素「迭代」,檢查條件(是== 0),並且我想通過add_noise()每次生成噪聲值。
我可以用for循環遍歷每一行和每列,但有人知道更有效的方式嗎?
發佈的解決方案是否適合您? – Divakar
是的,矢量化的方法很好。謝謝。 –