【问题标题】:whether to use numpy's dot or matmul function是否使用 numpy 的 dot 或 matmul 函数
【发布时间】:2020-08-28 05:33:43
【问题描述】:

我需要做以下两个操作:

  • 通过反转n-by-n matrix A来解决Ax=b,并且

  • 使用幂迭代求解r=Ar即通过重复将当前向量 r 乘以 A),例如 PageRank 算法。

我的问题是:在计算矩阵-向量积A^{-1}b或矩阵-向量积Ar时,使用numpy.dot还是numpy.matmul更好? (我知道更高维度可能存在差异,但我的问题仅适用于A 是二维数组且br 是向量的情况。)

【问题讨论】:

  • 对于 2 和 1d 没关系。他们也这样做。一个有操作员版本,一些添加了ufuncbells-n-whistle,另一个是方法版本(和更短的名称)。

标签: python numpy matrix-multiplication numpy-ndarray


【解决方案1】:

numpy docnp.dot

两个数组的点积。具体来说,如果a和b都是二维数组,就是矩阵乘法,但是使用matmul或者a@b是 首选。

所以基本上就你的情况而言,没关系,尽管根据文档,matmul 是首选。

此外,由于您的数组之一是一维数组,来自docs for np.matmul

如果第二个参数是一维的,则通过追加将其提升为矩阵 其尺寸为 1。矩阵乘法后,附加的 1 是 删除。

还有:

matmul 在两个重要方面与 dot 不同: 不允许使用标量乘法,请改用 *。矩阵堆栈是 一起广播,就好像矩阵是元素一样,尊重 签名

因此,在您的情况下它们的工作方式相同,但我会接受 numpy doc 关于使用 matmul 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2021-04-30
    • 2022-07-29
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    相关资源
    最近更新 更多