Search code examples
pythonarraysnumpydimensions

numpy array that is (n,1) and (n,)


What is the difference between a numpy array (lets say X) that has a shape of (N,1) and (N,). Aren't both of them Nx1 matrices ? The reason I ask is because sometimes computations return either one or the other.


Solution

  • This is a 1D array:

    >>> np.array([1, 2, 3]).shape
    (3,)
    

    This array is a 2D but there is only one element in the first dimension:

    >>> np.array([[1, 2, 3]]).shape
    (1, 3)
    

    Transposing gives the shape you are asking for:

    >>> np.array([[1, 2, 3]]).T.shape
    (3, 1)
    

    Now, look at the array. Only the first column of this 2D array is filled.

    >>> np.array([[1, 2, 3]]).T
    array([[1],
           [2],
           [3]])
    

    Given these two arrays:

    >>> a = np.array([[1, 2, 3]])
    >>> b = np.array([[1, 2, 3]]).T
    >>> a
    array([[1, 2, 3]])
    >>> b
    array([[1],
           [2],
           [3]])
    

    You can take advantage of broadcasting:

    >>> a * b
    array([[1, 2, 3],
           [2, 4, 6],
           [3, 6, 9]])
    

    The missing numbers are filled in. Think for rows and columns in table or spreadsheet.

    >>> a + b
    array([[2, 3, 4],
           [3, 4, 5],
           [4, 5, 6]]) 
    

    Doing this with higher dimensions gets tougher on your imagination.