MATLAB doppelt so schnell wie Numpy

Ich bin ein Ingenieurstudent, der derzeit den Übergang von MATLAB zu Python zum Zwecke der numerischen Simulation durchführt. Ich hatte den Eindruck, dass Numpy für die grundlegende Array-Manipulation genauso schnell ist wie MATLAB. Es scheint jedoch, dass MATLAB für zwei verschiedene Programme, die ich schreibe, etwas weniger als doppelt so schnell ist wie Numpy. Der Testcode, den ich für Numpy (Python 3.3) verwende, lautet:

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)

Während ich für MATLAB 2012a verwende:

a = rand(5000,5000,3);

tic;
a(:,:,1) = a(:,:,2);
a(:,:,3) = a(:,:,1);
a(:,:,2) = a(:,:,3);
toc

Der Algorithmus, den ich verwende, ist derjenige, der auf einer NASA verwendet wirdWebseite Vergleich von Numpy und MATLAB. Die Website zeigt, dass Numpy MATLAB in Bezug auf die Geschwindigkeit für diesen Algorithmus übertrifft. Meine Ergebnisse zeigen jedoch eine Simulationszeit von 0,49 s für Numpy und eine Simulationszeit von 0,29 s für MATLAB. Ich habe auch einen Gauß-Seidel-Solver sowohl für Numpy als auch für Matlab ausgeführt und erhalte ähnliche Ergebnisse (16,5 s gegenüber 9,5 s).

Ich bin brandneu in Python und habe keine großen Programmierkenntnisse. Ich verwende die 64-Bit-Python-Distribution von WinPython, habe aber auch Pythonxy ohne Erfolg ausprobiert.

Eine Sache, die ich gelesen habe, die die Leistung verbessern sollte, ist das Erstellen von Numpy mit MKL. Leider habe ich keine Ahnung, wie das unter Windows geht. Muss ich das überhaupt machen?

Irgendwelche Vorschläge?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage