ここでnp.random.choiceを使用するにはどうすればよいですか?np.random.choice:確率が1に合わない
:私は= Pの確率でランダムな選択をしたい>>> sum(p)
1.0000000017347
:
p=[ 1.42836755e-01, 1.42836735e-01 , 1.42836735e-01, 1.42836735e-01
, 4.76122449e-05, 1.42836735e-01 , 4.76122449e-05 , 1.42836735e-01,
1.42836735e-01, 4.76122449e-05]
通常、和pが1に等しい正確ではありませんされています は次のように、いくつかのopertationによって計算p
あり
>>> np.random.choice([1,2,3,4,5,6,7,8,9, 10], 4, p=p, replace=False)
array([4, 3, 2, 9])
こちらの作品はこちら!しかし、プログラムにはエラーがあります。
Traceback (most recent call last):
indexs=np.random.choice(range(len(population)), population_number, p=p, replace=False)
File "mtrand.pyx", line 1141, in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:17808)
ValueError: probabilities do not sum to 1
私はp
を印刷する場合:
[ 4.17187500e-05 2.49937500e-01 4.16562500e-05 4.16562500e-05
2.49937500e-01 4.16562500e-05 4.16562500e-05 4.16562500e-05
2.49937500e-01 2.49937500e-01]
が、それはこのp
でPythonシェルで、動作します:
>>> p=[ 4.17187500e-05 , 2.49937500e-01 ,4.16562500e-05 , 4.16562500e-05,
2.49937500e-01 , 4.16562500e-05 , 4.16562500e-05 , 4.16562500e-05,
2.49937500e-01 ,2.49937500e-01]
>>> np.random.choice([1,2,3,4,5,6,7,8,9, 10], 4, p=p, replace=False)
array([ 9, 10, 2, 5])
UPDATE 精度= 15でテストしました:
np.set_printoptions(precision=15)
print(p)
[ 2.499375625000002e-01 2.499375000000000e-01 2.499375000000000e-01
4.165625000000000e-05 4.165625000000000e-05 4.165625000000000e-05
4.165625000000000e-05 4.165625000000000e-05 2.499375000000000e-01
4.165625000000000e-05]
テスト:np.random.choiceを使用するには、この問題を解決する方法
>>> p=np.array([ 2.499375625000002e-01 ,2.499375000000000e-01 ,2.499375000000000e-01,
4.165625000000000e-05 ,4.165625000000000e-05, 4.165625000000000e-05,
4.165625000000000e-05 , 4.165625000000000e-05 , 2.499375000000000e-01,
4.165625000000000e-05])
>>> np.sum(p)
1.0000000000000002
?違いを見るために
試し印刷 '[Pでxについてのrepr(X)]'と、 'p'はnumpyのアレイ、' p.dtype'ある場合。共通の信念にもかかわらず、 'print'の出力からただ浮動小数点シーケンスを再作成することは常に可能ではありません。 – Goyo
thx。ここでnp.random.choiceを使用するにはどうすればいいですか? –
それは私のために働く。あなたは[mcve]を作成するためにもっと努力する必要があります。 – Goyo