“Converting” Numpy arrays to Matlab and vice versa

后端 未结 6 1414
孤独总比滥情好
孤独总比滥情好 2020-11-30 00:27

I am looking for a way to pass NumPy arrays to Matlab.

I\'ve managed to do this by storing the array into an image using scipy.misc.imsave and then loa

6条回答
  •  清歌不尽
    2020-11-30 01:21

    A simple solution, without passing data by file or external libs.

    Numpy has a method to transform ndarrays to list and matlab data types can be defined from lists. So, when can transform like:

    np_a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    mat_a = matlab.double(np_a.tolist())
    

    From matlab to python requires more attention. There is no built-in function to convert the type directly to lists. But we can access the raw data, which isn't shaped, but plain. So, we use reshape (to format correctly) and transpose (because of the different way MATLAB and numpy store data). That's really important to stress: Test it in your project, mainly if you are using matrices with more than 2 dimensions. It works for MATLAB 2015a and 2 dims.

    np_a = np.array(mat_a._data.tolist())
    np_a = np_a.reshape(mat_a.size).transpose()
    

提交回复
热议问题