我想執行操作如何向量化/與不規則排列numpy的tensorize操作形狀
如果有一個規則的形狀,然後我可以使用np.einsum,我相信語法將是
np.einsum('ijp,ipk->ijk',X, alpha)
不幸的是,我的數據X有一個非規則的結構(如果我們是零指數)的軸。
爲了提供更多的背景知識,指的是第i組第j個成員的第p個特徵。由於組的大小不同,實際上,它是不同長度的列表的列表,具有相同長度的列表。
有一個規則的結構,因此可以保存爲一個標準的numpy數組(它進入1維然後我使用alpha.reshape(a,b,c)其中a,b,c是問題特定的整數)
我想避免存儲X作爲列表的列表清單或不同尺寸的np.arrays的列表,並寫像
A = []
for i in range(num_groups):
temp = np.empty(group_sizes[i], dtype=float)
for j in range(group_sizes[i]):
temp[i] = np.einsum('p,pk->k',X[i][j], alpha[i,:,:])
A.append(temp)
這是一些不錯的功能numpy的/數據結構這樣做還是我將不得不妥協與一些僅部分矢量化的實施?
你可以添加一個案例嗎? – Divakar
借調;特別是id有興趣瞭解涉及不同軸的典型尺寸;以及group_sizes中的整數是如何分佈的。偶然,group_sizes是否具有相對較少的獨特元素? –
group_sizes在幾十到幾千之間變化。有82個組。有人建議我可以通過置零來使結構保持正常。這在數學上可以算出來,但是由於最大的團隊比最小的團隊大得多(〜2個數量級),所以它將包括比必要更多的操作。 – gazza89