根据question的答案,也根据numpy的答案,与a.dot(b)相比,二维数组的矩阵乘法最好通过a b或numpy.matmul(a,b)完成.

If both a and b are 2-D arrays, it is matrix multiplication, but using

matmul or a @ b is preferred.

我做了以下基准测试,发现相反的结果.

问题:我的基准测试有问题吗?如果不是,当Numpy比a @ b或numpy.matmul(a,b)快时,为什么Numpy不推荐a.dot(b)?

基准使用python 3.5 numpy 1.15.0.

$pip3 list | grep numpy

numpy 1.15.0

$python3 --version

Python 3.5.2

基准代码:

import timeit

setup = '''

import numpy as np

a = np.arange(16).reshape(4,4)

b = np.arange(16).reshape(4,4)

'''

test = '''

for i in range(1000):

a @ b

'''

test1 = '''

for i in range(1000):

np.matmul(a,b)

'''

test2 = '''

for i in range(1000):

a.dot(b)

'''

print( timeit.timeit(test, setup, number=100) )

print( timeit.timeit(test1, setup, number=100) )

print( timeit.timeit(test2, setup, number=100) )

结果:

test : 0.11132473500038031

test1 : 0.10812476599676302

test2 : 0.06115105600474635

附加结果:

>>> a = np.arange(16).reshape(4,4)

>>> b = np.arange(16).reshape(4,4)

>>> a@b

array([[ 56, 62, 68, 74],

[152, 174, 196, 218],

[248, 286, 324, 362],

[344, 398, 452, 506]])

>>> np.matmul(a,b)

array([[ 56, 62, 68, 74],

[152, 174, 196, 218],

[248, 286, 324, 362],

[344, 398, 452, 506]])

>>> a.dot(b)

array([[ 56, 62, 68, 74],

[152, 174, 196, 218],

[248, 286, 324, 362],

[344, 398, 452, 506]])

python a and b_python-尽管Numpy建议a.b,为什么a.dot(b)比a @ b更...相关推荐

  1. Python编写循环的两个建议 | 鹅厂实战

    作者 | piglei(腾讯高级工程师) 转载自腾讯技术工程知乎专栏 循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而" ...

  2. 数据分析之python数据计算方法汇总(math|numpy|pandas)

    数据分析之python数据计算方法上篇(math|numpy)_Backup and share的博客-CSDN博客 本文重点介绍pandas,math和numpy参见上篇> 目录 一.简介与创 ...

  3. 【Python学习笔记】cs231nPython Numpy教程

    [Python学习笔记]cs231nPython Numpy教程 回顾经典教程cs231n,完成assignments觉得很困难,感觉自己python基础语法掌握的不是很熟,就顺藤摸瓜找了cs231n ...

  4. 如何零基础学习python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  5. 零基础学python语言_零基础如何入门Python语言?有哪些学习建议?

    众所周知,Python目前是最受欢迎的编程语言之一,尤其是对于零基础的初学者来说,Python语言更是十分的友好.因此,不少初学者常常会有这样一个共同的疑惑,零基础如何入门Python语言?本文就来给 ...

  6. python之禅 中文_《Python之禅》中对于Python编程过程中的一些建议

    <Python之禅>中对于Python编程过程中的一些建议 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  <Python之禅>中对于Pyt ...

  7. Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片、相互转换

    Python语言编程学习:numpy中的array格式数据切片与pandas中的dataframe格式数据切片.相互转换 目录 numpy中的array格式数据切片与pandas中的dataframe ...

  8. python计算图解_图解NumPy,看这一篇就够了!

    晓查 编译整理 量子位 报道 | 公众号 QbitAI NumPy是Python的最重要的扩展程序库之一,也是入门机器学习编程的必备工具.然而对初学者来说,NumPy的大量运算方法非常难记. 最近,国 ...

  9. 【Python数据挖掘课程】六.Numpy、Pandas和Matplotlib包基础知识

    前面几篇文章采用的案例的方法进行介绍的,这篇文章主要介绍Python常用的扩展包,同时结合数据挖掘相关知识介绍该包具体的用法,主要介绍Numpy.Pandas和Matplotlib三个包.目录:   ...

最新文章

  1. 兄弟9020cdn废粉仓位置_硒鼓的无废粉仓设计是否真的有效?
  2. 查找重复文件_重复文件快速查找删除
  3. 【LeetCode 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)
  4. NTP时间服务相关基础及配置文件详解
  5. c语言单词翻译大全,c语言单词翻译
  6. appium怎么操作物理返回键_Appium Studio使用指南(windows做ios自动化,录制appium脚本)...
  7. 数组对象根据某个属性取出重复的个数
  8. 【公开课预告】:超低延迟下的实时合唱体验升级
  9. java 缓存ech_ehcache获取缓存空指针
  10. Seize Operation Master
  11. 计算机基础:多媒体基础知识笔记
  12. Kinect for Windows SDK开发初体验(二)操作Camera
  13. 子程序调用编程序例子_汇编程序设计:LCD1602静态显示
  14. 2017计算机湖北对口试题答案,2017年计算机专业对口考试试卷及答案
  15. oracle 创建数据库表 如果此表存在则删除后再重建
  16. 存储极客谈“SPC-1负载分析与AFA寿命评估”
  17. QT Creator 5.1.2中英文切换
  18. java aspose 给Word添加水印
  19. 国内外IoT系统介绍
  20. coolpad s6 android 6,酷派S6手机做工怎么样 酷派S6拆机图解详细评测

热门文章

  1. c++矩阵连乘的动态规划算法并输出_「Javascript算法设计」× 动态规划与回溯算法...
  2. 串口服务器的通讯模式
  3. 百兆工业交换机与千兆工业交换机如何计算码率?
  4. 【渝粤教育】广东开放大学 云计算技术与应用 形成性考核
  5. 【渝粤题库】国家开放大学2021春2757宠物饲养题目
  6. 【渝粤题库】国家开放大学2021春2108刑法学(2)答案
  7. 【案例】无线串口模块 星型网络组网 案例
  8. lora近几年发展的具体介绍
  9. 魅蓝x android 7,魅蓝x2什么时候发布 魅蓝x2发布时间最新消息
  10. linux读取.data文件,[20121227]v$datafile访问是从数据文件获取信息吗.txt