我有一个大小为(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加我的代码 –