这与讨论numpy与Matlab的速度的几个问题有关。然而,它们中的大多数具有多个矩阵运算而不是单个运算。例如。 Difference on performance between numpy and matlab
对我来说,反转随机矩阵的时间numpy比matlab慢大约5倍。
这是matlab脚本,
N = 1000;
B = randn(N,N);
h = tic;
T = 40;
for i=1:40
Rinv = (B)^(-1);
end
toc(h)/40
这给出了大约0.08秒的平均值。
虽然这个python脚本给出了0.4秒(大约)。
import numpy as np
from numpy import linalg as LA
import time
N=1000
R = np.random.random((N,N))
T=40
t1 = time.clock()
for i in range(0,T):
Rinv = LA.inv(R)
t2 = time.clock()
print 'avg time for inverse ',(t2-t1)/T
是否有任何理由,或者无论如何改善python性能? 我已经在Python上实现了我的工作,我担心是否 我将把所有代码都移植到matlab。 我正在研究Ubuntu 16.04,Python 2.7,Matlab R2016b。
我已经读过time
不是执行时间比较的好模块,我觉得这不仅仅是这个。
答案 0 :(得分:4)
在我的电脑上(Windows,python 3.5,numpy 1.11.2):
In [6]: %timeit inv(a)
10 loops, best of 3: 86 ms per loop
或者,没有Ipython:
>>>timeit.timeit('inv(a)','from __main__ import inv,a',number=100)/100
与Matlab类似。
要知道后台使用了什么代码,请检查它:
In [12]: np.__config__.show()
blas_mkl_info:
include_dirs = ['c:/users/bruno/miniconda3\\Library\\include']
libraries = ['mkl_core_dll', 'mkl_intel_lp64_dll', 'mkl_intel_thread_dll']
...