2016-01-23 125 views
1

有沒有什麼方法可以在單行中執行以下操作? 假設我有概率的陣列,Python numpy根據概率生成隨機二進制值數組

p=np.array([0.75, 0.63, 0.33, 0.25, 0.47]) 

,其中每個值對應於選擇1和(1-P)的概率對應於選擇0,即概率,0.75是選擇1的可能性, 1-0.75是選擇0的概率,選擇1的概率是0.63,選擇0的概率是1-0.63等等。有沒有更簡單的方法可以讓我做到以下幾點,希望沒有循環?

values = np.empty(p.shape) 
for i, prob in enumerate(p): 
    values[i] = np.random.binomial(1, prob) 

我知道它可以使用地圖完成,但有沒有辦法直接在numpy中做到這一點?

回答

2
values = np.random.binomial(1, p) 
+0

我從來不知道它可以與一系列概率一起使用。我應該更好地閱讀文檔。對不起。非常感謝。 – Aditya369

+0

不用擔心。不是你的錯 - ipython中的文檔指定它應該是一個浮點數,但numpy中的大多數操作都被設計爲可以廣播的,所以即使文檔說別的東西也值得嘗試。 – vahndi