這是用幾何分佈生成隨機數的最佳方式或最有效的方法,其中可能包含0的參數數組?Python:從幾何分佈生成
allids["c"]=[2,0,1,1,3,0,0,2,0]
[ 0 if x == 0 else numpy.random.geometric(1./x) for x in allids["c"]]
注意我有點擔心優化。
編輯:
上下文的一點:我有個字符(即ATCGGGA)的順序,我想擴大單個字符/合同到期(即如果原來的序列有2運行「A的我想模擬一個預期值爲2'A的序列,但是根據幾何分佈而變化)。所有長度爲1的字符我都不想變長。
所以,如果
seq = 'AATCGGGAA'
allids["c"]=[2,0,1,1,3,0,0,2,0]
rep=[ 0 if x == 0 else numpy.random.geometric(1./x) for x in allids["c"]]
"".join([s*r for r, s in zip(rep, seq)])
將輸出(當rep
是[1, 0, 1, 1, 3, 0, 0, 1, 0]
)
"ATCGGGA"
有用於幾何分佈兩個數學定義,第一個(它是由Python實現)有嚴格的正整數支持1,2,3,...表示直到第一次成功爲止的試驗次數,第二次在0,1,2,...上得到支持,代表直到第一次成功爲止的失敗次數。你能給我們一些關於數組真實代表的用法上下文嗎?如果他們應該是手段,0是先驗無效的。如果它們是實現結果,則應該使用第二個幾何形式,但需要更多數據來估計參數化。 – pjs
我知道幾何分佈的不同參數。如果您仍然感興趣,我添加了一些背景。 – bdeonovic