2017-11-06 14 views
0

私は確率の配列を持っていますが、それぞれの値を対応する確率で選んで、選択した値の配列を生成します。python numpy:ランダムに生成されたバイナリ値の確率リストを評価します。

例:

in: [ 0.5, 0.5, 0.5, 0.5, 0.01, 0.01, 0.99, 0.99] 
out: [ 0, 1, 1, 0, 0, 0, 1, 1] 

私はむしろ、次のループよりも、このためにnumpyネイティブ関数を使用したい:

array_of_probs = [0.5, 0.5, 0.5, 0.5, 0.01, 0.01, 0.99, 0.99] 
results = np.zeros(len(array_of_probs)) 
for i, probs in enumerate(array_of_probs): 
    results[i] = np.random.choice([1, 0], 1, p=[probs, 1-probs]) 
+1

用語についての注意:「オッズ」とは通常、確率の比率を意味します。 B = p(A)/ p(B)に対するAのオッズ。確率は0と1の間の確率であるが、オッズは任意の非負の数とすることができる。明らかに確率がある場合は確率を計算でき、その逆もあります。このケースでは確率と確率ではないように見えますが、タイトルとテキストを調整したいかもしれません。 –

+0

@robertdodierあなたは正しいです、ありがとう、私はそれを修正します – Swier

答えて

1

あなたが簡単にランダムに配列を比較することで、これを計算することができます0と1との間の乱数が0.3より小さい確率が0.3であるので、

など。

np.random.rand(len(odds)) < odds 
+2

ここでは '>'ではなく '<'を望むと思います。 –

+0

はい、ありがとうございます! –

関連する問題