且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何有效地将Matlab引擎数组转换为numpy ndarray?

更新时间:2023-11-29 15:25:28

发布问题后的片刻,我找到了解决方法.

Moments after posting the question I found the solution.

对于一维数组,仅访问Matlab数组的_data属性.

For one-dimensional arrays, access only the _data property of the Matlab array.

import timeit
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)
print 'From matlab_data'
print timeit.timeit('np.array(x._data)', setup=setup_matlab, number=1000)

打印

From list
0.0719847538787
From matlab
7.12802865169
From matlab_data
0.118476275533

对于多维数组,您需要随后重新调整数组的形状.对于二维数组,这意味着调用

For multi-dimensional arrays you need to reshape the array afterwards. In the case of two-dimensional arrays this means calling

np.array(x._data).reshape(x.size[::-1]).T