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

Sabito 錆兎 stands with Ukraine picture Sabito 錆兎 stands with Ukraine · May 30, 2020 · Viewed 37.6k times · Source

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?

Answer

warped picture warped · May 30, 2020

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])