gpt4 book ai didi

python - 纯Python中的矩阵乘法?

转载 作者:IT老高 更新时间:2023-10-28 22:16:26 27 4
gpt4 key购买 nike

我正在尝试使用纯 Python 将两个矩阵相乘。输入(X1 是 3x3,Xt 是 3x2):

X1 =  [[1.0016, 0.0, -16.0514], 
[0.0, 10000.0, -40000.0],
[-16.0514, -40000.0, 160513.6437]]
Xt = [(1.0, 1.0),
(0.0, 0.25),
(0.0, 0.0625)]

其中 Xt 是另一个矩阵的 zip 转置。现在是代码:

def matrixmult (A, B):
C = [[0 for row in range(len(A))] for col in range(len(B[0]))]
for i in range(len(A)):
for j in range(len(B[0])):
for k in range(len(B)):
C[i][j] += A[i][k]*B[k][j]
return C

python给我的错误是这样的:

IndexError: list index out of range.

现在我不确定 Xt 是否被识别为矩阵并且仍然是列表对象,但从技术上讲这应该可以工作。

最佳答案

如果你真的不想使用 numpy 你可以这样做:

def matmult(a,b):
zip_b = zip(*b)
# uncomment next line if python 3 :
# zip_b = list(zip_b)
return [[sum(ele_a*ele_b for ele_a, ele_b in zip(row_a, col_b))
for col_b in zip_b] for row_a in a]

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

import numpy as np # I want to check my solution with numpy

mx = np.matrix(x)
my = np.matrix(y)

结果:

>>> matmult(x,y)
[[12, 18], [27, 42], [42, 66], [57, 90]]
>>> mx * my
matrix([[12, 18],
[27, 42],
[42, 66],
[57, 90]])

关于python - 纯Python中的矩阵乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10508021/

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