私は現在、従来のMatlabコード(Matlabエンジンを使用)とPython(numpy)の残りの部分で処理するいくつかのステップを行う必要があるプロジェクトに取り組んでいます。Matlabエンジンアレイをnumpy ndarrayに効率的に変換する方法は?
Matlabのmatlab.mlarray.double
の結果をnumpyのnumpy.ndarray
に変換するのが非常に遅いようです。ここで
は別のndarrayから1000個の要素でndarrayを作成するためのいくつかの例のコードは、リストとmlarrayです:
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倍。
変換を高速化する方法はありますか?