Search code examples
pythonnumpyrangelinspace

What is the difference between np.linspace and np.arange?


I have always used np.arange. I recently came across np.linspace. I am wondering what exactly is the difference between them... Looking at their documentation:

np.arange:

Return evenly spaced values within a given interval.

np.linspace:

Return evenly spaced numbers over a specified interval.

The only difference I can see is linspace having more options... Like choosing to include the last element.

Which one of these two would you recommend and why? And in which cases is np.linspace superior?


Solution

  • np.linspace allows you to define how many values you get including the specified min and max value. It infers the stepsize:

    >>> np.linspace(0,1,11)
    array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1. ])
    

    np.arange allows you to define the stepsize and infers the number of steps(the number of values you get).

    >>> np.arange(0,1,.1)
    array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
    

    contributions from user2357112:

    np.arange excludes the maximum value unless rounding error makes it do otherwise.

    For example, the following results occur due to rounding error:

    >>> numpy.arange(1, 1.3, 0.1)
    array([1. , 1.1, 1.2, 1.3])
    

    You can exclude the stop value (in our case 1.3) using endpoint=False:

    >>> numpy.linspace(1, 1.3, 3, endpoint=False)
    array([1. , 1.1, 1.2])