我是一名工程学研究生,目前出于数值模拟的目的,正在从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的两倍相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python 概率分布模型_使用python的概率模型进行公司估值

    python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...

  3. python调用matlab函数_从python调用MATLAB函数

    我知道这是一个老问题,已经得到答复. 但是我一直在寻找相同的东西(对于Mac),发现有很多选择与matlab交互的方法和成熟度不同. 这是我发现的: pymat 使用matlab引擎(libeng)进 ...

  4. php调用python绘图程序_如何在matlab中调用python程序

    现在python很火,很多代码都是python写的,如果你和我一样,习惯了使用matlab,还想在matlab中调用Python的代码,应该怎么办呢?其中一条思路:首先在matlab中调用系统脚本命令 ...

  5. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

  6. python lol脚本_用python运行matlab脚本

    因此,作为OP问题的专用答案(最初有必要重新编译mex文件信使.mexw64对于windows 10[请参阅原始帖子评论]):Ok, now it's works, but i have a prob ...

  7. python移动图形工作站_让Python跑得更快

    原标题:让Python跑得更快 点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips 参与文末话题讨论,即有机会获得异步图书一本. Python很容易学.你之所以阅读本 ...

  8. 数学建模用python好吗_用 Python 做数学建模

    数学建模中,大多数人都在用MATLAB,但MATLAB不是一门正统的计算机编程语言,而且速度慢还收费,最不能忍受的就是MATLAB编辑器不支持代码自动补全.python对于数学建模来说,是个非常好的选 ...

  9. python开发职位_【python开发岗位职责|python开发是做什么的】-看准网

    发展历程 自从2世纪9年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程. Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Gu ...

最新文章

  1. PAT:1034 Head of a Gang (30分)
  2. HTTP 200 OK和HTTP 304 Not modified的由来
  3. 常用JQuery插件整理
  4. python二级模拟选择题集错网_计算机二级python真题:第1套选择题A
  5. ListView优化机制及滑动时数据时出现的数据错乱重复问题
  6. 一个新时代的降临:智慧的医疗系统
  7. HTTP与HTTPS简介
  8. Hadoop:Hadoop基本命令
  9. nosql数据库MongoDB的用法
  10. Windows Server 2008群集仲裁机制
  11. 【龙格库塔优化算法】基于龙格库塔优化算法求解单目标优化问题含Matlab源码
  12. 2020杭州学区房(WJP)
  13. 这几款可以识别图片文字的app值得一试
  14. css实现半圆(上下左右半圆)
  15. UI5(十一)单元测试、与OPA的集成测试、Debugging 工具
  16. mRNA数据分析专题
  17. 《超智游戏》:鬼影投手·棒球1号位
  18. 知识图谱评价指标的学习笔记——MAP,MRR
  19. H5学习笔记(九)高度塌陷问题
  20. 最近的心路历程非常之多

热门文章

  1. 解决在ie11浏览器下echarts图不显示问题
  2. Mac突然没有声音了,音频和视频都不能播放了。
  3. 自动泊车辅助系统控制器(APA)
  4. vue3实现语音播放功能
  5. java工程师转正答辩,面试经历分享
  6. 17070302(UE4的Tonemapper)
  7. vue3 + pinia 使用
  8. RoboMasterAI挑战赛-装甲板识别与测距 jetsonNX+realsense
  9. 软件测试之检查产品说明书
  10. 满足自动驾驶远程遥控的线控底盘整车控制器VCU