pythonnumpyscipy

Converting a matrix created with MATLAB to Numpy array with a similar syntax


I'm playing with the code snippets of the course I'm taking which is originally written in MATLAB. I use Python and convert these matrices to Python for the toy examples. For example, for the following MATLAB matrix:

s = [2 3; 4 5];

I use

s = array([[2,3],[4,5]])

It is too time consuming for me to re-write all the toy examples this way because I just want to see how they work. Is there a way to directly give the MATLAB matrix as string to a Numpy array or a better alternative for this?

For example, something like:

s = myMagicalM2ArrayFunction('[2 3; 4 5]')

Solution

  • numpy.matrix can take string as an argument.

    Docstring:
    matrix(data, dtype=None, copy=True)
    
    [...]
    
    Parameters
    ----------
    data : array_like or string
       If `data` is a string, it is interpreted as a matrix with commas
       or spaces separating columns, and semicolons separating rows.
    

    In [1]: import numpy as np
    
    In [2]: s = '[2 3; 4 5]'    
    
    In [3]: def mag_func(s):
       ...:     return np.array(np.matrix(s.strip('[]')))
    
    In [4]: mag_func(s)
    Out[4]: 
    array([[2, 3],
           [4, 5]])