我在MATLAB和Python中设置了两个关于广播矩阵乘法的相同测试。对于Python,我使用NumPy,对于MATLAB,我使用了使用BLAS的mtimesx库。在

MATLABclose all; clear;

N = 1000 + 100; % a few initial runs to be trimmed off at the end

a = 100;

b = 30;

c = 40;

d = 50;

A = rand(b, c, a);

B = rand(c, d, a);

C = zeros(b, d, a);

times = zeros(1, N);

for ii = 1:N

tic

C = mtimesx(A,B);

times(ii) = toc;

end

times = times(101:end) * 1e3;

plot(times);

grid on;

title(median(times));

Python

^{pr2}$

mypython是从使用OpenBLAS的pip安装的默认Python。在

我用的是英特尔NUC i3。在

MATLAB代码在1ms内运行,而Python在5.8ms内运行,我不明白为什么,因为它们似乎都在使用BLAS。在

编辑

来自水蟒:In [7]: np.__config__.show()

mkl_info:

libraries = ['mkl_rt']

library_dirs = [...]

define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

include_dirs = [...]

blas_mkl_info:

libraries = ['mkl_rt']

library_dirs = [...]

define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

include_dirs = [...]

blas_opt_info:

libraries = ['mkl_rt']

library_dirs = [...]

define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

include_dirs = [...]

lapack_mkl_info:

libraries = ['mkl_rt']

library_dirs = [...]

define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

include_dirs = [...]

lapack_opt_info:

libraries = ['mkl_rt']

library_dirs = [...]

define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]

include_dirs = [...]

从numpy使用pipIn [2]: np.__config__.show()

blas_mkl_info:

NOT AVAILABLE

blis_info:

NOT AVAILABLE

openblas_info:

library_dirs = [...]

libraries = ['openblas']

language = f77

define_macros = [('HAVE_CBLAS', None)]

blas_opt_info:

library_dirs = [...]

libraries = ['openblas']

language = f77

define_macros = [('HAVE_CBLAS', None)]

lapack_mkl_info:

NOT AVAILABLE

openblas_lapack_info:

library_dirs = [...]

libraries = ['openblas']

language = f77

define_macros = [('HAVE_CBLAS', None)]

lapack_opt_info:

library_dirs = [...]

libraries = ['openblas']

language = f77

define_macros = [('HAVE_CBLAS', None)]

编辑2

我试着用np.matmul(A, B, out=C)代替C = A @ B,结果得到了2倍的时间,比如11毫秒左右,真的很奇怪。在

python和matlab矩阵运算效率_MATLAB矩阵乘法性能比NumPy快5倍相关推荐

  1. python乘法模板_python – 使用矩阵乘法的numpy模板匹配

    我试图通过沿着图像移动模板来匹配模板与二进制图像(仅黑色和白色).并返回模板和图像之间的最小距离,以及发生此最小距离的相应位置.例如: IMG: 0 1 0 0 0 1 0 1 1 模板: 0 1 1 ...

  2. python比matlab的优点_MATLAB比Python的优势?

    很多人都喜欢拿python和matlab进行对比,说这个更好,那个更好,今天就来对比一下 下面从两者各自的应用做个对比. 一.python的优势 Python与Matlab相比最大的优势就是两个字-免 ...

  3. python中哈达玛积与矩阵乘法的区别

    矩阵乘法是线性代数的基础运算,例如矩阵A是32,矩阵B是32 哈达玛积是两个m*n矩阵相乘 那么在python中,他们是怎样计算的呢? 当矩阵是 numpy.ndarray 时,A * B 表示哈达玛 ...

  4. MATLAB基础操作,矩阵乘法、数组矩阵索引、最大最小运算符、零矩阵/随机矩阵/单位矩阵的生成、log函数、Inf和NaN的含义,语句过长用连接符换行、逻辑运算符以及区别

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.矩阵相乘 二.矩阵生成 1.直接输入 2.单位矩阵 3.全零矩阵 2.全一矩阵 2.随机矩阵 三.矩阵操作 四.矩 ...

  5. 范德蒙德矩阵在MATLAB中怎么表示,Python 之 Python与MATLAB 矩阵操作总结

    Python 之 Python与MATLAB 矩阵操作小结 一.线形代数理论基础 线形代数(linear algebra)是数学的一个分支,研究矩阵理论.向量空间.线性变换和有限维线形方程组等内容. ...

  6. 科学计算:Python VS. MATLAB(3)----线性代数基础

    科学计算:Python VS. MATLAB(3)----线性代数基础 按:在介绍工具之前先对理论基础进行必要的回顾是很必要的.没有理论的基础,讲再多的应用都是空中楼阁.本文主要设涉及线性代数和矩阵论 ...

  7. python矩阵计算_PYTHON 矩阵运算

    python 矩阵运算 第一次看见 Python 的运行感觉就让我想起了 matlab, 于是就上网嗖嗖他在矩阵方面的运算 如何,如果不想安装 Matlab 那么大的软件,而你又只是想计算些矩阵,py ...

  8. 浅谈斐波那契数列——从递推到矩阵乘法

    说在前面 相信大家都已经知道这个中外著名的费波纳切数列了吧,关于费波那契数列有很多有趣的性质,但我们这里不讲,在这里我们只是利用斐波那契数列来引出另一个神奇的东西,矩阵乘法,递推在这里是起一个对比与铺 ...

  9. Numpy中的两种矩阵乘法和两种点乘

    1. 矩阵乘法:对于结果矩阵中的每一个元素,其值等于第一个矩阵中该元素所在的行与第二矩阵中该元素所在的列相乘并求和: 2. Numpy中的两种矩阵乘法:Numpy.dot(a,b)和运算符 '@': ...

最新文章

  1. 谷歌浏览器Google Chrome和Adobe Flash Plugins插件安装问题
  2. Java基础—ClassLoader的理解
  3. 字段缩写ti表示什么_【滴水研究】解码TI(一)
  4. 【Linux】一步一步学Linux——whoami命令(96)
  5. Web应用程序中的Spring JDBC入门
  6. jQuery 图片轮流展示效果
  7. java 删除list_Java 删除List元素的正确方式
  8. U盘制作DOS启动盘MSDOS 7.10
  9. 一文详解中英文在NLP上的10大差异点
  10. Altova XMLspy安装简易步骤
  11. Word2016如何插入公式?Word2016插入公式方法
  12. kali下如何生成密码字典(在线)
  13. 前复权 后复权和不复权是什么意思
  14. oracle18c静默安装教程,centos7安装Oracle18c
  15. 交换机路由器命令大全
  16. dede分类名称_dede常用标签分类整理
  17. 人工智能:智慧环保(上海AI智慧环保,绿色新时代)
  18. ig信息增益 java_【Python 编程】实现文本分类中的信息增益算法
  19. 研究生期间如何做研究:一些建议
  20. 基于vue焕心眼镜商城的设计与实现毕业设计源码091546

热门文章

  1. 在树莓派上使用基于MCP2515的CAN总线模块
  2. 怎么设置win7连接无线网络连接电脑连接服务器,无线网络设置,教您怎么设置无线网络连接...
  3. ​C++ 解析Json——jsoncpp​
  4. 如何获取用户手机当前是否启动了android机的模拟位置功能
  5. 深度估计中的不确定度方法总结
  6. 恢复数据库sql语句:sourse
  7. 喀秋莎Camtasia2023最新版本电脑录屏剪辑软件
  8. sofa-bolt(网络通信框架)
  9. [微软公司招聘题目]狗的问题
  10. python量化策略——最简单的动量策略,简单趋势追踪策略