【问题标题】:Python Matrice multiplicationPython矩阵乘法
【发布时间】:2020-06-17 15:02:40
【问题描述】:

我正在使用一个程序,它生成两个形状相同的矩阵,它们从 1 到 11 行不同,并且总是具有相同数量的列。我需要将这些矩阵逐个单元格相乘。

例如,如果我有:

([1 1 1];[2 2 2];[3 3 3]) * ([1 2 3]; [4 5 6]; [2 4 6]) = ([1 2 3]; [8 10 12]; [6 12 9])

我在使用 A*A 时遇到问题 有人可以帮我吗?非常感谢

【问题讨论】:

    标签: python matrix multiplication


    【解决方案1】:

    你可以试试这个:

    arr1=[[1,1,1],[2,2,2],[3,3,3]]
    arr2 = [[1,2,3],[4,5,6],[2,4,6]]
    
    multi = lambda a,b: [[p[i]*q[i] for i in range(len(p))] for p, q in zip(a,b)]
    print(multi(arr1,arr2))
    

    或使用numpy 作为@BrennenSprimont 的答案:

    import numpy as np
    first = np.array([[1,1,1],[2,2,2],[3,3,3]])
    seco = np.array([[1,2,3],[4,5,6],[2,4,6]])
    
    print(first*seco) 
    

    【讨论】:

    • 小心,第二个例子first*seco的最后一行是做点积。从这个例子中,看起来他们正在寻找元素明智的乘法。
    • 是的,没错。我刚刚编辑了那个细节。感谢您的澄清。
    • 对不起,看来我错了,可能误导了您。我没看到你用过numpy.array。看起来他们在数组上将* 定义为元素方面的,并为点积使用了新符号@。只有numpy.matrix 对象将* 定义为点积。你以前的工作。
    【解决方案2】:

    在许多情况下,数学家已将矩阵的* 定义为表示线性代数“点积”。要进行“元素/单元格乘法”,您需要使用 numpy.multiply 或使用一对 for 循环。

    用 numpy python3 -m pip install numpy

    # EDIT: Don't use numpy.matrix, they are deprecated and will eventually be removed.
    # Use numpy.array as seen in @MrNobody33's answer.
    # left_matrix = numpy.matrix("1 1 1; 2 2 2; 3 3 3")
    # right_matrix = numpy.matrix("1 2 3; 4 5 6; 7 8 9")
    left_matrix = numpy.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
    right_matrix = numpy.array([[1, 2, 3], [4, 5, 6], [2, 4, 6]])
    result_matrix = numpy.multiply(left_matrix, right_matrix)
    # Use * or numpy.dot for the linear algebra matrix multiplication.
    print(result_matrix)
    

    没有 numpy。

    left_matrix = [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
    right_matrix = [[1, 2, 3], [4, 5, 6], [2, 4, 6]]
    result_matrix = []
    for i in range(len(left_matrix)):
        result_matrix.append([])
        for j in range(len(left_matrix[0])):
            cell_result = left_matrix[i][j] * right_matrix[i][j]
            result_matrix[i].append(cell_result)
    print(result_matrix)
    

    【讨论】:

      【解决方案3】:

      感谢您的帮助。 我正在寻找元素明智的乘法,发现有一个 numpy 命令。 np.multiply

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 2014-09-22
        • 2016-10-12
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多