簡體   English   中英

為什么Matlab矩陣求逆比numpy更快?

[英]Why Matlab matrix inversion is faster than numpy?

這與討論numpy與Matlab的速度的幾個問題有關。 但是,它們中的大多數都比單個運算具有多個矩陣運算。 例如numpy和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不是執行時間比較的好模塊,我覺得這還不止於此。

在我的計算機上(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']
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM