ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0 解决办法

【报错】使用 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,)相互转换

你可能感兴趣的:(编程报错,numpy,python)