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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值