Search code examples
pythonmatlabnumpy

Initialize empty matrix in Python


I am trying to convert a MATLAB code in Python. I don't know how to initialize empty matrix in Python.

MATLAB Code:

demod4(1) = [];

I tried in Python

demod4[0] = array([])

but it gives error:

only length-1 arrays can be converted to Python scalars

Solution

  • If you are using numpy arrays, you initialize to 0, by specifying the expected matrix size:

    import numpy as np
    d = np.zeros((2,3))
    
    >>> d
        [[ 0.  0.  0.]
         [ 0.  0.  0.]]
    

    This would be the equivalent of MATLAB 's:

    d = zeros(2,3);
    

    You can also initialize an empty array, again using the expected dimensions/size

    d = np.empty((2,3))
    

    If you are not using numpy, the closest somewhat equivalent to MATLAB's d = [] (i.e., a zero-size matrix) would be using an empty list and then

    append values (for filling a vector)

    d = []
    d.append(0)
    d.append(1)
    >>> d                                                                     
    [0, 1]
    

    or append lists (for filling a matrix row or column):

    d = []                                                                
    d.append(range(0,2))                                                    
    d.append(range(2,4))                                                  
    >>> d                                                                     
    [[0, 1], [2, 3]]
    

    See also:

    initialize a numpy array (SO)

    NumPy array initialization (fill with identical values) (SO)

    How do I create an empty array and then append to it in NumPy? (SO)

    NumPy for MATLAB users