有什么区别吗?如果不是,公约更倾向于什么? 演出似乎差不多
a=np.random.rand(1000,1000)
b=np.random.rand(1000,1000)
%timeit a.dot(b) #14.3 ms ± 374 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit np.dot(a,b) #14.7 ms ± 315 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
%timeit a @ b #15.1 ms ± 779 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
他们基本上都在做同样的事情。就时间而言,根据Numpy的文件here:
如果a和b都是一维数组,则它是向量的内积 (没有复合共轭)
如果a和b都是二维数组,则是矩阵乘法,但 首选使用
matmul
或a @ b
如果a或b是0-D(标量),则相当于乘法和 首选使用
numpy.multiply(a, b)
或a * b
如果a是N-D数组,b是1-D数组,则它是
a
和b
的最后一个轴它们几乎相同,只有少数例外
a.dot(b)
和np.dot(a, b)
完全相同。见^{然而,看看
numpy.dot
的文档:a @ b
对应于^{dot
和matmul
的区别如下:相关问题 更多 >
编程相关推荐