gpt4 book ai didi

python - ND矩阵乘法,无需使用numpy.dot

转载 作者:太空宇宙 更新时间:2023-11-03 20:07:45 24 4
gpt4 key购买 nike

Python和编码初学者在这里。我是几天前开始学习python的,以前没有编码经验,并且已经开始学习函数。由于python对于数学运算确实非常有用,因此我尝试将其与我在线性代数课程中学习的内容联系起来。所以这是问题。当心很多阅读!

我正在尝试使用python将两个随机矩阵相乘,而不用numpy(否则我可以使用numpy.dotnumpy.matrix)。如果我们有2个分别为axb和bxc的矩阵X和Y,则只有X的列和Y的行相等时,矩阵乘法才有效。为了编写一个可以进行矩阵乘法的程序,这是我尝试过的。

首先,我将函数定义为def mat.mul(A,B),尺寸分别为axb和bxc。然后,我将矩阵Z作为矩阵A和B的乘积,Z = []将为空。在这里,我的思考过程有些不稳定。我认为首先我需要一个for循环,该循环遍历A的for a in range(0, len(A)):列,然后是另一个for循环,遍历A的各行,for b in range(len(0, X[0])),然后是另一个for循环,遍历B的列,for c in range(0, len(Y)),最后是遍历Y行for d in range(0, len(Y[0]))的最后一个for循环。现在,我应该具有乘积矩阵Z,但我不是应该怎么写的。是Z += X[i] * Y[d]吗?

很抱歉,冗长的解释,我只是想我也将分享我的想法。

最佳答案

纯Python中的矩阵乘法如下所示:

def matrix_multiplication(A, B):
a = len(A)
b = len(A[0])
c = len(B[0])
if b != len(B):
print (f"Wrong combination of dimensions: {a}x{b} and {len(B)}x{c}")
else:
return [[sum([A[i][k]*B[k][j] for k in range(b)])
for j in range(c)]
for i in range(a)]

A = [[1, 2, 3],
[4, 5, 6]]
B = [[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]]

print (matrix_multiplication(A, B))


结果: [[38, 44, 50, 56], [83, 98, 113, 128]]

顺便说一句,您不能为函数 mat.mul命名,因为Python不允许在函数名中加点。

关于python - ND矩阵乘法,无需使用numpy.dot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com