numpy配列の値を乱数の条件に基づいて置き換える必要があります。numpy配列の値を乱数で置き換えます。
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))
私は、ランダムな値の時間の50%を追加する機能を持っています
この問題は、add_noise()が1回だけ実行され、すべての0の値がノイズ値で置き換えられることです。
私がしようとしているのは、numpy配列内のすべての要素を「反復」することです(条件== 0)、毎回add_noise()を使ってノイズ値を生成します。
これは、すべての行と列を通過するforループで行うことができますが、誰かがそれを行うより効率的な方法を知っていますか?
投稿されたソリューションのいずれかがうまく機能しましたか? – Divakar
はい、ベクトル化されたアプローチは良好でした。ありがとう。 –