Creating Arrays
Arange and Linspace
A stepped numeric sequence built manually with a while-loop, then generated
in one call. The replay steps through x advancing by step each iteration
and seq growing until x reaches stop.
By hand
With NumPy
np.arange(start, stop, step) generates the same sequence in one call.
The snapshot shows the array's shape, dtype, and values, then adds a
linspace(1, 4, 7) values line to contrast: linspace includes the stop
value and accepts a point count rather than a step size.
naive.py
start = 1.0
stop = 4.0
step = 0.5
seq = []
x = start
while x < stop:
seq.append(x)
x += step
print('RESULT:', seq)
library.py
import numpy as np
start, stop, step = 1.0, 4.0, 0.5
arr = np.arange(start, stop, step)
ls = np.linspace(1, 4, 7)
print('shape:', arr.shape)
print('dtype:', arr.dtype)
print('values:', [round(v, 10) for v in arr.tolist()])
print('linspace(1, 4, 7) values:', ls.tolist())
print('RESULT:', [round(v, 10) for v in arr.tolist()])
shape: (6,)
dtype: float64
values: [1.0, 1.5, 2.0, 2.5, 3.0, 3.5]
linspace(1, 4, 7) values: [1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0]
RESULT: [1.0, 1.5, 2.0, 2.5, 3.0, 3.5]
Implementation notes
np.arangefollows the same start-inclusive, stop-exclusive rule as Python'srange. With a float step, floating-point rounding can occasionally produce an extra element or drop the last one —np.linspaceavoids this by computing positions asstart + i * (stop - start) / (n - 1).- Choose
arangewhen the step size is the natural parameter (sensor sampling interval, grid resolution). Chooselinspacewhen the number of points is the natural parameter (plotting 100 points over an interval). - The while-loop in the "By hand" half is the same accumulation pattern as
running-totalinpython-data-basics/ch02, but accumulates positions rather than a cumulative sum. - Shape, dtype, and values are shown explicitly here because
ndarray.__repr__output varies with NumPy version and print options.