下面的代码试图在python3.6.1中创建一个成功的矩阵。如您所见,我分配了alpha和bravo矩阵,并希望代码生成一个Charlie矩阵(列表),其中包含alpha和bravo矩阵相乘的结果。我的问题是,当我运行这个模块时,它说c没有定义;如果我要求a或b也是一样。专业提示或指针有人吗?谢谢你
import math
def matrix(a, b, c):
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b = [[3, 2, 1], [4, 4, 4], [3, 6, 8]]
c = [[], [], []]
for c in matrix:
c[1][1] = a[1][1] * b[1][1] + a[1][2] * b[2][1] + a[1][3] * b[3][1]
c[1][2] = a[1][1] * b[1][2] + a[1][2] * b[2][2] + a[1][3] * b[3][2]
c[1][3] = a[1][1] * b[1][3] + a[1][2] * b[2][3] + a[1][3] * b[3][3]
c[2][1] = a[2][1] * b[1][1] + a[2][2] * b[2][1] + a[2][3] * b[3][1]
c[2][2] = a[2][1] * b[1][2] + a[2][2] * b[2][2] + a[2][3] * b[3][2]
c[2][3] = a[2][1] * b[1][3] + a[2][2] * b[2][3] + a[2][3] * b[3][3]
c[3][1] = a[3][1] * b[1][1] + a[3][2] * b[2][1] + a[3][3] * b[3][1]
c[3][2] = a[3][1] * b[1][2] + a[3][2] * b[2][2] + a[3][3] * b[3][2]
c[3][3] = a[3][1] * b[1][3] + a[3][2] * b[2][3] + a[3][3] * b[3][3]
return c
你的代码有很多问题。让我们一次看一个
Python是零索引的。在Python中访问数组或列表时,第一个元素是
0
,第二个元素是1
,依此类推。您将a
定义为因此访问
a[3][...]
将不起作用,因为它不存在a[0]
是[1, 2, 3]
,等等c
时,定义了一个空列表列表。保存在c[0]
的列表是一个空列表[]
。因此尝试访问c[0][0]
将不起作用,因为第0个元素不存在(用于引用或分配)李>这和你做的一样:
如果您想执行dot产品,我建议您使用Numpy包。它是用来处理这种数学问题的
下面是一个纯python方法来获取两个矩阵的点积。它转换
b
并为每个矩阵生成元素乘积之和。请记住,它不进行维度检查,因此它将截断为最短的可计算结果相关问题 更多 >
编程相关推荐