我目前正在一个项目中工作,需要使用遗留的Matlab代码(使用Matlab引擎)完成一些处理步骤,其余部分使用Python(numpy)。
我注意到将Matlab的matlab.mlarray.double
转换为numpy的numpy.ndarray
结果似乎非常缓慢。
下面是一些示例代码,用于从另一个ndarray、列表和mlarray创建一个包含1000个元素的ndarray:
import timeit
setup_range = ("import numpy as np\n"
"x = range(1000)")
setup_arange = ("import numpy as np\n"
"x = np.arange(1000)")
setup_matlab = ("import numpy as np\n"
"import matlab.engine\n"
"eng = matlab.engine.start_matlab()\n"
"x = eng.linspace(0., 1000.-1., 1000.)")
print 'From other array'
print timeit.timeit('np.array(x)', setup=setup_arange, number=1000)
print 'From list'
print timeit.timeit('np.array(x)', setup=setup_range, number=1000)
print 'From matlab'
print timeit.timeit('np.array(x)', setup=setup_matlab, number=1000)
需要以下时间:
From other array
0.00150722111994
From list
0.0705359556928
From matlab
7.0873282467
转换时间比从列表中转换长大约100倍。
有没有什么方法可以加快转换速度?