我有一個合取概率質量函數數組,具有形狀,例如(1,2,3,4,5,6),我想計算概率表,這些維度(出口cpts),用於決策目的。計算numpy中聯合pmfs的條件概率太慢。想法? (python-numpy)
我此刻想出了代碼如下(輸入的形式爲字典「vdict」 {「variable_1」:_1,「variable_2的」:_2 ...})
for i in vdict:
dim = self.invardict.index(i) # The index of the dimension that our Variable resides in
val = self.valdict[i][vdict[i]] # The value we want it to be
d = d.swapaxes(0, dim)
**d = array([d[val]])**
d = d.swapaxes(0, dim)
...
所以,我現在做的是:
- 我的變量轉化爲在CPT相應的維度。
- 我將零軸與我之前找到的軸交換。
- 我用所需的值替換整個0軸。
我把尺寸恢復到原來的軸。現在
,問題是,爲了做第2步,我有(A)來計算子陣 和(b)。把它放在一個列表,再次翻譯爲陣,因此我得我的新陣列。
事情是,大膽的東西意味着我創建新的對象,而不是隻使用引用舊的,這,如果d是非常大的(這發生在我身上)和使用d的方法被稱爲多次(這又發生在我身上),整個結果非常緩慢。
那麼,有沒有人提出一個想法,將這一小塊代碼,並會跑得更快?也許有些東西可以讓我計算出適當的條件。
注意:我必須保持原始的軸順序(或者至少確保在移除軸時如何將變量更新爲尺寸字典)。我不想訴諸自定義的dtypes。