【报错】使用 python numpy包编程时出现 ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?)
错误提示。很多问答说的是scipy包的版本过高,但尝试重装低版本的包还是不能解决问题。
【原因】程序报错位置计算的是 d*1 矩阵 和 1*q 矩阵的乘法运算,numpy将 d*1 矩阵自动压缩为d维向量,导致无法使用np.matmul()矩阵乘法。
【解决办法】将 (n,) 转为 (n,1)即可。
修改前:
c=np.matmul(a,b)
#a:(d,) b:(1,q)
修改后:
a=a.reshape(-1,1)
c=np.matmul(a,b)
#a:(d,1) b:(1,q) c:(d,q)
附:numpy中(n,1)和(n,)相互转换