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:
Return evenly spaced values within a given interval.
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?
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])