我有一個大小爲(d,N)的矩陣X.換句話說,每個向量都有N個向量。例如,向量化numpy索引並應用函數來構建矩陣
X = [[1,2,3,4],[5,6,7,8]]
有d = 2維的N = 4個向量。
另外,我有碎布陣列(列表清單)。索引是索引X矩陣中的列。例如,
I = [ [0,1], [1,2,3] ]
的I [0] =在矩陣X [0,1]索引的列0和1同樣的元件I [1]索引的列1,2和3注意的I族元素是長度不一樣的列表!
我想這樣做,是指數矩陣X列使用我的每個元素,總結向量,並得到一個載體。對I的每個元素重複此操作,從而構建一個新的矩陣Y.矩陣Y應該具有與I數組中的元素一樣多的d維向量。在我的例子中,Y矩陣將有2個2維向量。
在我的例子,該元件I [0]講述從矩陣X薩姆得到列0和1這兩個向量矩陣X的2維矢量,並把該矢量在Y(列0)。然後,元素I [1]告訴對矩陣X的第1,2和3列進行求和,並將這個新的向量置於Y(第1列)。
我可以很容易地使用循環來做到這一點,但如果可能的話,我想向量化這個操作。我的矩陣X有成百上千的列,I索引矩陣有幾萬個元素(每個元素都是一個簡短的索引列表)。
我糊塗代碼:
Y = np.zeros((d,len(I)))
for i,idx in enumerate(I):
Y[:,i] = np.sum(X[:,idx], axis=1)
分享你的多圈的代碼,如果你已經實現了? – Divakar
@Divakar加我的代碼 –