You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于scipy csr_matrix.multiply运算结果的疑惑

关于scipy.sparse.csr_matrix.multiply的运算逻辑说明

是的,csr_matrix.multiply()并非执行传统的矩阵乘法,它实现的是元素级(逐元素)乘法**——即两个矩阵对应位置的元素直接相乘,而非矩阵乘法中行乘列求和的操作。**

你的例子验证

来看你提供的两个矩阵:
矩阵A:

[[4 3 0]
 [8 0 0]
 [0 9 0]]

矩阵B:

[[7 0 0]
 [2 5 0]
 [1 0 0]]

逐元素相乘时,每个位置(i,j)的结果为A[i,j] * B[i,j]:

  • 第一行:4*7=28,3*0=0,0*0=0
  • 第二行:8*2=16,0*5=0,0*0=0
  • 第三行:0*1=0,9*0=0,0*0=0
    最终得到的结果就是你看到的:
[[28  0  0]
 [16  0  0]
 [ 0  0  0]]

如何执行矩阵乘法

如果要得到你预期的矩阵乘法结果,在scipy稀疏矩阵中需要使用@运算符,或者dot()方法:

# 方式1:使用@运算符
matrix_product = csrMatrix_A @ csrMatrix_B
# 方式2:使用dot()方法
matrix_product = csrMatrix_A.dot(csrMatrix_B)

执行后会得到你预期的矩阵乘法结果:

[[34 15  0]
 [56  0  0]
 [18 45  0]]

两种运算的核心区别

  • multiply():要求两个矩阵形状完全一致,仅做对应位置元素相乘
  • @/dot():要求第一个矩阵的列数等于第二个矩阵的行数,执行标准矩阵乘法(行×列求和)

内容的提问来源于stack exchange,提问作者hendrik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:07:20