小编Amm*_*mar的帖子

Python中的矩阵乘法?

我正在尝试使用纯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)]
Run Code Online (Sandbox Code Playgroud)

其中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
Run Code Online (Sandbox Code Playgroud)

python给我的错误是:IndexError:列表索引超出范围.现在我不确定Xt是否被识别为矩阵并且仍然是列表对象,但从技术上讲这应该可行.

python matrix-multiplication

27
推荐指数
7
解决办法
18万
查看次数

python 3.2.3中的Zip函数不能像希望的那样工作

我试图定义一个转置矩阵的函数.这是我的代码:

def Transpose (A):
    B = list(zip(*A))
    return B
Run Code Online (Sandbox Code Playgroud)

现在,当我在程序中的某个地方调用函数时,如下所示:

Matrix = [[1,2,3],[4,5,6],[7,8,9]]
Transpose(Matrix)
print(Matrix)
Run Code Online (Sandbox Code Playgroud)

矩阵没有变化.我究竟做错了什么?

python zip transpose function matrix

2
推荐指数
1
解决办法
700
查看次数

python中的向量矩阵乘法?

所以我试图将矩阵乘以向量.并且python继续抛出错误.这是我正在尝试的代码:

def matmult(m, v):
    rows = len(m)
    w = [0]*rows
    irange = range(len(v))
    sum = 0
    for j in range(rows):
        r = m[j]
        for i in irange:
            sum += r[i]*v[i]
    w[j],sum = sum,0
return w
Run Code Online (Sandbox Code Playgroud)

这不是我的,但这是我生气之前编码并删除它.错误是这样的:TypeError:+:'int'和'list'的不支持的操作数类型

我猜测python将向量视为int或列表,并且由于类型的不同而不会执行任何基本运算符.有办法解决这个问题吗?不幸的是我不能使用Numpy.

python vector matrix multiplication

1
推荐指数
1
解决办法
4480
查看次数