python matlab 速度_关于python:MATLAB的速度是Numpy的两倍
我是一名工程学研究生,目前出于数值模拟的目的,正在从MATLAB过渡到Python。我的印象是,对于基本的数组操作,Numpy将与MATLAB一样快。但是,对于我编写的两个不同程序,MATLAB的运行速度似乎是Numpy的两倍。我用于Numpy(Python 3.3)的测试代码是:
import numpy as np
import time
a = np.random.rand(5000,5000,3)
tic = time.time()
a[:,:,0] = a[:,:,1]
a[:,:,2] = a[:,:,0]
a[:,:,1] = a[:,:,2]
toc = time.time() - tic
print(toc)
而对于MATLAB 2012a,我正在使用:
a = rand(5000,5000,3);
tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc
我使用的算法是在NASA网站上比较Numpy和MATLAB的算法。该网站显示,该算法的速度方面,Numpy超过了MATLAB。但是我的结果显示Numpy的仿真时间为0.49 s,MATLAB的仿真时间为0.29 s。我也在Numpy和Matlab上都运行了高斯-塞德尔求解器,并且得到了相似的结果(16.5 s和9.5 s)
我是Python的新手,在编程方面也不是非常识字。我使用的是WinPython 64位Python发行版,但也尝试使用Pythonxy无济于事。
我读过的应该提高性能的一件事是使用MKL构建Numpy。不幸的是,我不知道如何在Windows上执行此操作。我什至需要这样做吗?
有什么建议么?
Christoph Gohlke为许多Python软件包提供了预编译的Windows二进制文件,其中NumPy与Intel MKL链接:lfd.uci.edu/~gohlke/pythonlibs
是的 相对于Matlab,Python过去甚至更慢,所以您很幸运。 :-)
WinPython的当前发行版已经随NumPy-MKL一起提供了。
由于缓存,这种比较最终变成了苹果到橘子,因为在连续的内存块上传输或执行某些工作效率更高。该特定基准是受内存限制的,因为实际上没有进行任何计算,因此缓存命中百分比是实现良好性能的关键。
Matlab以列优先顺序(Fortran顺序)放置数据,因此a(:,:,k)是连续的内存块,可以快速复制。
Numpy默认为行优先顺序(C顺序),因此在a[:,:,k]中,元素之间存在较大的跳转,这减慢了内存传输的速度。实际上,可以选择数据布局。在我的笔记本电脑中,使用a = np.asfortranarray(np.random.rand(5000,5000,3))创建阵列可将速度提高5倍(1 s对0.19 s)。
对于numpy-MKL和普通numpy来说,此结果应该非常相似,因为MKL是一种快速的LAPACK实现,并且在这里您不会调用任何使用它的函数(MKL在求解线性系统,计算点积时绝对有帮助...)。
我真的不知道Gauss Seidel求解器上发生了什么,但是前段时间我写了一个题为Numpy的问题的答案,该问题以MATLAB的一半速度运行,它谈到了MKL,FFT和Matlab的JIT。
我只是注意到这被否决了(这对我来说是第一次)。关于如何改善答案有何评论?
好的,我尝试使用不同的数组构造来提出您的建议,这也导致Numpy的速度提高了约5倍,这很棒。我用我的高斯-赛德尔求解器尝试了这个建议,但并没有改善,表明还有另一个问题。我没有在此求解器中使用任何精美的函数或任何东西,它几乎只是一个while循环,带有约16行矢量化赋值和一些控制语句。您在旧主题中写的内容也无济于事。有什么方法可以将您的代码发送给您检查,或者在新问题中提出?
由于问题似乎有所不同,您当然可以提出另一个问题,以便更多的人可以从中受益!
您正在尝试重新创建NASA实验,但是您更改了许多变量。例如:
您的硬件和操作系统不同(www.nccs.nasa.gov/dali_front.html)
您的Python版本有所不同(2.5.3与3.3)
您的MATLAB版本有所不同(2008年与2012年)
假设NASA结果正确,则结果差异是由于这些变量中的一个或多个发生了变化。我推荐你:
使用SciPy预先构建的二进制文件重新测试。
研究是否相对于此类计算对MATLAB进行了任何改进。
另外,您可能会发现此链接有用。
我最初试图将其与NASA的研究进行比较,但是,我主要是询问是否有我可以做的事情(或明显的事情),这可能会导致Numpy变慢两倍。如果答案是我使用的MATLAB版本刚好快,那就就是我所需要的。谢谢,不过。
python matlab 速度_关于python:MATLAB的速度是Numpy的两倍相关推荐
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python调用matlab函数_从python调用MATLAB函数
我知道这是一个老问题,已经得到答复. 但是我一直在寻找相同的东西(对于Mac),发现有很多选择与matlab交互的方法和成熟度不同. 这是我发现的: pymat 使用matlab引擎(libeng)进 ...
- php调用python绘图程序_如何在matlab中调用python程序
现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...
- python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法
0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...
- python lol脚本_用python运行matlab脚本
因此,作为OP问题的专用答案(最初有必要重新编译mex文件信使.mexw64对于windows 10[请参阅原始帖子评论]):Ok, now it's works, but i have a prob ...
- python移动图形工作站_让Python跑得更快
原标题:让Python跑得更快 点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本 ...
- 数学建模用python好吗_用 Python 做数学建模
数学建模中,大多数人都在用MATLAB,但MATLAB不是一门正统的计算机编程语言,而且速度慢还收费,最不能忍受的就是MATLAB编辑器不支持代码自动补全.python对于数学建模来说,是个非常好的选 ...
- python开发职位_【python开发岗位职责|python开发是做什么的】-看准网
发展历程 自从2世纪9年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程. Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Gu ...
最新文章
- PAT:1034 Head of a Gang (30分)
- HTTP 200 OK和HTTP 304 Not modified的由来
- 常用JQuery插件整理
- python二级模拟选择题集错网_计算机二级python真题:第1套选择题A
- ListView优化机制及滑动时数据时出现的数据错乱重复问题
- 一个新时代的降临:智慧的医疗系统
- HTTP与HTTPS简介
- Hadoop:Hadoop基本命令
- nosql数据库MongoDB的用法
- Windows Server 2008群集仲裁机制
- 【龙格库塔优化算法】基于龙格库塔优化算法求解单目标优化问题含Matlab源码
- 2020杭州学区房(WJP)
- 这几款可以识别图片文字的app值得一试
- css实现半圆(上下左右半圆)
- UI5(十一)单元测试、与OPA的集成测试、Debugging 工具
- mRNA数据分析专题
- 《超智游戏》:鬼影投手·棒球1号位
- 知识图谱评价指标的学习笔记——MAP,MRR
- H5学习笔记(九)高度塌陷问题
- 最近的心路历程非常之多