python计算矩阵乘法_python – 计算矩阵乘法的子集

当我有两个非稀疏矩阵A和B时,有没有办法有效地计算C = A.T.dot(B)当我只想要C的元素子集时?我有所需的C指数以CSC格式存储,指定为here.

解决方法:

如果你事先知道你想要哪些C部分,其中一些部分是连续的矩形区域*,那么你可以使用与分区矩阵的乘法(1)或块矩阵乘法(2)相关的矩阵代数规则来加速其中一些计算.例如,您可以使用@GaryBishop的相同基本逻辑,但不是拥有’i’和’j’元素的列表,而是有一个包含i -start,i_end和j_start,j_end四元组的列表(或数组)定义C的子矩阵然后你可以使用那些索引(虽然在那些链接中建立的规则)来找出你需要为所需的C块解决的A和B的子矩阵.

举一个简单的例子,假设你只想要C的中间块,所以我们按行将C分为C1,C2和C3,我们关心的只是C2.如果A ^ {T}同样被划分为三组行A1,A2,A3,那么C2 = A2 * B.该想法推广到任何形状的矩形,它只需要A和B的不同分区来计算.这个想法是一样的.

> – 这很简单,但如果区域大于单个元素,您只能节省时间.

标签:python,numpy,scipy,sparse-matrix

你可能感兴趣的:(python计算矩阵乘法)