Я студент инженерного градиента, в настоящее время осуществляющий переход от MATLAB к Python для целей численного моделирования. У меня создалось впечатление, что для базового манипулирования массивом Numpy будет работать так же быстро, как MATLAB. Тем не менее, он появляется для двух разных программ, которые я пишу, что MATLAB немного меньше, чем у Numpy. Тестовый код, я использую для Numpy (Python 3.3):MATLAB в два раза быстрее, чем Numpy
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 website сравнения Numpy и MATLAB. На веб-сайте показано, что Numpy превосходит MATLAB с точки зрения скорости для этого алгоритма. Тем не менее мои результаты показывают время моделирования 0,49 с для Numpy и время моделирования 0,29 с для MATLAB. Я также запустил решение Gauss-Seidel как на Numpy, так и на Matlab, и получаю аналогичные результаты (16,5 с против 9,5 с)
Я совершенно новый для Python и не очень грамотный в плане программирования. Я использую 64-разрядный дистрибутив Python для WinPython, но также попробовал Pythonxy безрезультатно.
Одна вещь, которую я прочитал, которая должна улучшить производительность, заключается в создании Numpy с использованием MKL. К сожалению, я не знаю, как это сделать в Windows. Нужно ли мне это делать?
Любые предложения?
Christoph Gohlke предоставляет предварительно скомпилированные двоичные файлы Windows для многих пакетов Python, с NumPy, связанным с Intel MKL: http://www.lfd.uci.edu/~gohlke/pythonlibs/ – Amro
Да. Раньше Python был еще медленнее относительно Matlab, поэтому вам повезло. :-) – horchler
Текущее распределение WinPython [уже поставляется с NumPy-MKL] (https://code.google.com/p/winpython/wiki/PackageIndex_33). – Jaime