我很難與以下。我有一個叫做p
的數據幀N x D
,有一些丟失(NAN
)值。我有另一個對應的數組索引D x K x T
。我想在數據框中將每個熊貓的條目n,d
的地圖製作爲a[d][k][p[n,d]]
,對於所有可能的k導致N x D x K
矩陣。對於如何在熊貓和諾普蒂圖書館中最有效地做到這一點,我可以獲得一些幫助嗎?熊貓和numpy花式索引
我其實然後把N x D
的最後一個矩陣的一部分,沿着列產品留下一個N x K
矩陣。最終的輸出可以是(慢)轉載由以下:
def generate_entry(i, j):
result = np.prod([alpha[s][j][int(p.loc[i][s])] for s in range(num_features) if not isNaN(p.loc[i][s]) ])
return result
vgenerate_entry = np.vectorize(generate_entry)
result = np.fromfunction(vgenerate_entry, shape=(len(p), k), dtype=int)
我覺得有些使用pandas.get_dummies
將是矩陣乘法有益的,但我不能完全明白這一點。
下面是要快得多:
r = None
for i in range(num_features):
rel_data = pd.get_dummies(data.ix[:,i])
rel_probs = alpha[i].T
prod = rel_data.dot(rel_probs)
prod[prod == 0] = 1
if r is None:
r = prod
else:
r = r.multiply(prod)
r = r.as_matrix()
r = r * pi
posteriers = r/np.sum(r, axis=1)[:, np.newaxis]
是的,這只是很慢。 – modesitt
你可以分享嗎?你打算如何避免'p'中的NaN /這些NaN對應的輸出是什麼? – Divakar
如果p [n,d]是nan,地圖應該去nan – modesitt