Python 使用print打印产品矩阵时出现问题

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

我有一个矩阵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('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))