在矩阵乘法python语言中删除和插入值

在矩阵乘法python语言中删除和插入值,python,matrix,iteration,Python,Matrix,Iteration,我想在矩阵的数组中迭代乘法 matrix[0] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] matrix[1] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] matrix[3] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] matrix[4] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]] matrix[5

我想在矩阵的数组中迭代乘法

matrix[0] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
matrix[1] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
matrix[3] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
matrix[4] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
matrix[5] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
matrix[6] = [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]
乘法矩阵[0]和矩阵[1]的结果将被乘法到下一个矩阵数组,即矩阵[3]。这个结果将再次与下一个结果相乘。这个过程应该按顺序进行。
有什么想法或解决办法吗?谢谢

您所描述的是一个
reduce
操作:

假设您已经定义了这个矩阵乘法函数:

def multiply(a, b):
    num_r, num_c, num_i = len(a), len(b[0]), len(a[0])
    m = [num_c * [None] for r in range(num_r)]
    for r in range(num_r):
        for c in range(num_c):
            x = 0
            for i in range(num_i):
                x += a[r][i] * b[i][c]
            m[r][c] = x
    return m
你有这个矩阵列表:

matrices = [[[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]],
            [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]],
            [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]],
            [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]],
            [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]],
            [[1,2,3,4], [1,2,3,4], [1,2,3,4], [1,2,3,4]]]
现在,您可以通过一次调用
reduce
,按顺序将矩阵相乘:

print reduce(multiply, matrices)
我有了这个想法(操作*是矩阵复用过程的简化):


如果有其他更好的方法,请告诉我。谢谢

如果你想在Python中对数组进行乘法,无论是元素乘法还是线性代数风格的矩阵乘法,如果你不着急的话,你应该使用
numpy
。@TigerhawkT3我知道已经引入了它,但这在普通Python中是否真的适用于列表列表,或者它只是为
numpy
等提供的?据我所知,整个想法是它被添加为一个基本的Python功能。我正在使用nao robot,而我的nao robot中的Python包不支持numpy。除非我更新PythonNAO软件(我尽量避免),否则我还有另一个答案,如下所示,但您的解决方案似乎比我想象的更实用(更好)。Thanksit在根据我的上述问题使用矩阵格式时给了我一个错误。错误是,错误是num_r,num_c,num_i=len(a),len(b[0]),len(a[0])TypeError:int类型的对象没有len()。乘法的每个参数必须是二维数组。很明显你在传递一个一维数组。我刚刚意识到。谢谢@Michael LaszloNo的问题。如果我已经回答了你的问题,请接受我的回答。
for i in range(6):
    A = matrix[i]
    B = matrix[i+1]
    C = A * B
    matrix [i+1] = C
return C