【问题标题】:Dot-product a list of Matrices in numpy点积 numpy 中的矩阵列表
【发布时间】:2020-12-05 17:32:00
【问题描述】:

让我们生成一个“三个 2x2 矩阵的列表”,我称之为 M1、M2 和 M3:

import numpy as np
arr = np.arange(4*2*2).reshape((3, 2, 2))

我想取所有这些矩阵的点积:

 A = M1 @ M2 @ M3

最简单、最快捷的方法是什么?我基本上是在寻找类似于 '.sum(axis=0)' 的东西,但用于矩阵乘法。

【问题讨论】:

    标签: python numpy linear-algebra numpy-ndarray numpy-einsum


    【解决方案1】:

    您可能正在寻找np.linalg.multi_dot

    arr = np.arange(3*2*2).reshape((-1, 2, 2))
    np.linalg.multi_dot(arr)
    

    将为您提供arr[0]arr[1]arr[2] 之间的点积。和arr[0] @ arr[1] @ arr[2]一样。

    【讨论】:

    • 谢谢!正是我想要的。
    • 对于 3 个数组 multi_dot 使用 np.linalg.linalg._multi_dot_three 执行 dot(dot(A, B), C, out=out) (如果形状不同,则使用备用分组)。因此,如果数组的形状都相同,multi_dot 再好不过是链式dot(或@)。
    猜你喜欢
    • 2015-03-31
    • 2017-02-26
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 2017-07-20
    相关资源
    最近更新 更多