linspace
The linspace utility generates an array of steps evenly-spaced numbers from start to end (inclusive on both ends), similar to NumPy's linspace.
Source Code
View Source Code
ts
/**
* Creates an array of evenly-spaced numbers from `start` to `end`.
*
* @example
* ```ts
* linspace(0, 10); // [0, 2.5, 5, 7.5, 10]
* linspace(0, 10, 3); // [0, 5, 10]
* linspace(0, 10, 1); // [0]
* linspace(10, 0, 5); // [10, 7.5, 5, 2.5, 0]
* ```
*
* @param start - The start of the range.
* @param end - The end of the range.
* @param steps - Number of evenly-spaced points to generate (default: 5).
*
* @returns An array of `steps` numbers from `start` to `end`.
*/
export function linspace(start: number, end: number, steps = 5): number[] {
if (steps <= 0) return [];
if (steps === 1) return [start];
const stepSize = (end - start) / (steps - 1);
return Array.from({ length: steps }, (_, i) => start + i * stepSize);
}Features
- Inclusive endpoints: Both
startandendare always included. - Configurable count: Control exactly how many points to generate.
- Descending support: Works correctly when
start > end.
API
ts
function linspace(start: number, end: number, steps?: number): number[];Parameters
start: The first value in the output array.end: The last value in the output array.steps: Number of evenly-spaced points to generate (default:5).
Returns
- An array of
stepsnumbers, linearly interpolated fromstarttoend. - Returns
[]whensteps <= 0, and[start]whensteps === 1.
Examples
Basic Usage
ts
import { linspace } from '@vielzeug/toolkit';
linspace(0, 10); // [0, 2.5, 5, 7.5, 10]
linspace(0, 10, 3); // [0, 5, 10]
linspace(0, 10, 11); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]Descending Range
ts
import { linspace } from '@vielzeug/toolkit';
linspace(10, 0, 5); // [10, 7.5, 5, 2.5, 0]Edge Cases
ts
import { linspace } from '@vielzeug/toolkit';
linspace(5, 5, 4); // [5, 5, 5, 5] — start equals end
linspace(0, 10, 1); // [0]
linspace(0, 10, 0); // []Chart Axis Ticks
ts
import { linspace } from '@vielzeug/toolkit';
// Generate 6 evenly-spaced tick labels for a y-axis from 0 to 100
const ticks = linspace(0, 100, 6); // [0, 20, 40, 60, 80, 100]