Python 3 中的矩阵乘法
Matrix Multiplication in Python 3
我正在尝试为线性代数创建几个函数,但完全陷入了矩阵乘法。以下是我的工作解决方案,但是否有更清洁的解决方案?
def matrix_multiplication(a, b):
# Transpose matrix b
bT = list(zip(*b))
# Multiply the two
return [[sum([a[ai][j] * bT[bTi][j] for j in range(len(a[ai]))]) for bTi in range(len(bT))] for ai in range(len(a))]
如果您尝试想出自己的计算矩阵的方法,可能是您的循环有效,但更标准的“更清洁”方法是使用“numpy”模块。
import numpy as np
A = np.array([[1,2,3],[2,3,4],[3,4,5]])
b = np.array([[1,-1,1]])
#Transposing
b = np.transpose(b)
c = np.matmult(A,b)
首先,如果您想将其用于学习目的,我只建议您从头开始创建一个线性代数库。否则你应该使用 numpy.linalg 或类似的东西。
假设您想从头开始,我建议您使用面向对象的编程方法。这意味着创建您自己的矩阵 class.
您可以尝试类似于此博客的内容:https://towardsdatascience.com/how-to-build-a-matrix-module-from-scratch-a4f35ec28b56
我正在尝试为线性代数创建几个函数,但完全陷入了矩阵乘法。以下是我的工作解决方案,但是否有更清洁的解决方案?
def matrix_multiplication(a, b):
# Transpose matrix b
bT = list(zip(*b))
# Multiply the two
return [[sum([a[ai][j] * bT[bTi][j] for j in range(len(a[ai]))]) for bTi in range(len(bT))] for ai in range(len(a))]
如果您尝试想出自己的计算矩阵的方法,可能是您的循环有效,但更标准的“更清洁”方法是使用“numpy”模块。
import numpy as np
A = np.array([[1,2,3],[2,3,4],[3,4,5]])
b = np.array([[1,-1,1]])
#Transposing
b = np.transpose(b)
c = np.matmult(A,b)
首先,如果您想将其用于学习目的,我只建议您从头开始创建一个线性代数库。否则你应该使用 numpy.linalg 或类似的东西。
假设您想从头开始,我建议您使用面向对象的编程方法。这意味着创建您自己的矩阵 class.
您可以尝试类似于此博客的内容:https://towardsdatascience.com/how-to-build-a-matrix-module-from-scratch-a4f35ec28b56