Python 使用print打印产品矩阵时出现问题
我有一个矩阵a和B,我想要这两个矩阵的乘积。这是我用python编写的代码Python 使用print打印产品矩阵时出现问题,python,arrays,function,matrix,Python,Arrays,Function,Matrix,我有一个矩阵a和B,我想要这两个矩阵的乘积。这是我用python编写的代码 import numpy as np def matrix_multiplication(a: np.ndarray, b: np.ndarray) -> np.ndarray: n, m_a = a.shape m_b, p = b.shape c = np.zeros((n, p)) if m_a != m_b: raise ValueError('Dim
import numpy as np
def matrix_multiplication(a: np.ndarray, b: np.ndarray) -> np.ndarray:
n, m_a = a.shape
m_b, p = b.shape
c = np.zeros((n, p))
if m_a != m_b:
raise ValueError('Dimensions of the Matrix A and B are not compatable.')
else:
for i in range(len(0, a.shape)):
for j in range(len(0, a.shape[0])):
for k in range(0, len(b.shape)):
c += a[i][j] * b[j][k]
print(c)
return c
但是当我运行代码时,我得到的是“进程结束,退出代码为0”,而不是矩阵C。这里可能有什么问题?看起来您正在尝试做点积,如果是这样,则有一个buildin numpy函数为您做这件事
import numpy as np
def matrix_multiplication(a: np.ndarray, b: np.ndarray) -> np.ndarray:
return a.dot(b)
a = np.array([[1, 2], [3, 4]])
b = np.array([[2, 4], [6, 8]])
print (matrix_multiplication(a, b))
甚至更短:
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[2, 4], [6, 8]])
print (a.dot(b))
len
只接受一个参数,即获取长度的项。您要执行的操作:范围(len(a.shape))
。(假设len(a.shape)
实际上是有效的。)在进入循环之前,您应该尝试打印出在for
循环中使用的值。最后两行的缩进是否与您正在运行的实际Python代码匹配?看起来print和return语句是在循环的第一次迭代中到达的。考虑到n=A的行,m_A=A的列,m_b=b的列,p=b的行,for循环在迭代所需的值时应该是正确的,但是,c+=A[i][j]*b[j][k]可能有问题吗
?这是我做的第一件事,但后来我尝试使用纯python,不使用np.dot和np.matrix,看看我是否能做到。另外,我正在下载Visual Studio,这样我就可以在Pycharm上安装Numpy了。它适用于2x2矩阵,但对于其他矩阵,如3x2和2x3矩阵,我得到了前两行正确的数据,但第三行总是0,0。为什么?看来您的帐户已被版主从堆栈溢出中删除。请重试
import numpy as np
def matrix_multiplication(a: np.ndarray, b: np.ndarray) -> np.ndarray:
n, m_a = a.shape
m_b, p = b.shape
c = np.zeros((n, p))
if m_a != m_b:
raise ValueError('Dimensions of the Matrix A and B are not compatable.')
else:
for i in range(a.shape[0]):
for j in range(len(b[0])):
for k in range(b.shape[0]):
c[i][j] += a[i][k] * b[k][j]
return c
a = np.array([[28,3], [3, 4],[8,9]])
b = np.array([[6, 4,7], [6, 8,9]])
print (matrix_multiplication(a, b))