Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否使用numpy';s点或matmul函数_Python_Numpy_Matrix Multiplication_Numpy Ndarray - Fatal编程技术网

Python 是否使用numpy';s点或matmul函数

Python 是否使用numpy';s点或matmul函数,python,numpy,matrix-multiplication,numpy-ndarray,Python,Numpy,Matrix Multiplication,Numpy Ndarray,我需要执行以下两个操作: 通过将n×n矩阵A倒置,求解Ax=b,以及 使用幂次迭代(即,将当前向量r重复乘以A)求解r=Ar,如PageRank算法 我的问题是:当计算矩阵向量积A^{-1}b或矩阵向量积Ar时,使用numpy.dot或numpy.matmul是否更好?(我知道在更高的维度上可能存在差异,但我的问题仅适用于A是2D数组而b,r是向量的情况。)来自fornp.dot: 两个阵列的点积。具体地说,如果a和b都是二维数组,则是矩阵乘法,但使用matmul或a@b则是 首选 因此

我需要执行以下两个操作:

  • 通过将
    n×n矩阵A
    倒置,求解
    Ax=b
    ,以及

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

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

来自for
np.dot

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

因此,基本上对于您的情况来说,这并不重要,尽管根据文档,首选
matmul

另外,由于您的一个阵列是一维的,因此:

如果第二个参数是1-D,则通过添加 一个1到它的尺寸。在矩阵乘法之后,附加1 删除

以及:

matmul在两个重要方面与dot不同: 不允许使用标量乘法,请使用*代替。矩阵堆栈是 将矩阵作为元素一起广播,尊重 签名


因此,它们在您的情况下也会起同样的作用,但我同意numpy doc关于使用
matmul

进行2和1d的建议,这并不重要。他们也这样做。一个是操作员版本,一些添加了
ufunc
bells-n-whistles,另一个是方法版本(以及更短的名称)。