如何在两个给定端点间生成指定步长的等间距数值序列
等间距数值生成实现方案
通用场景:两定点间等间距数值生成
等间距序列生成核心只需要确定3个参数中的2个即可推导全量序列:区间起点、区间终点、相邻值步长/序列总点数。不同工具的通用实现方式如下:
- Python 原生实现
不需要依赖第三方库,注意处理浮点数计算的精度误差即可:# 已知固定步长生成 def get_even_seq(start, end, step): seq = [] current = start # 加极小偏移量兼容浮点计算误差,避免尾值被误过滤 while current <= end + 1e-8: seq.append(round(current, 10)) current += step return seq # 已知序列总点数生成 def get_even_seq_by_count(start, end, point_count): if point_count < 2: return [start] if point_count == 1 else [] step = (end - start) / (point_count - 1) return [round(start + i*step, 10) for i in range(point_count)] - 科学计算场景(NumPy)
直接调用内置API,自动处理大部分循环和精度问题:- 已知总点数:使用
np.linspace(起点, 终点, num=总点数),返回值包含首尾两个端点 - 已知固定步长:使用
np.arange(起点, 终点+步长*1e-8, step=步长),返回值不超过设定的终点值
- 已知总点数:使用
- 表格工具(Excel/WPS表格)
首个单元格填起点值,下一个单元格输入公式=上一个单元格+步长,选中公式单元格向下拖拽填充,直到数值达到终点即可。
实操场景:1000~1500区间、步长0.0299的等距序列生成
前置说明:区间总长度为500,0.0299无法整除500,因此生成的序列尾值为≤1500的最大累加值,约为1499.983,不会超出上限
不同工具的直接实现代码/操作:
- Python原生:直接调用通用方法即可
target_seq = get_even_seq(start=1000, end=1500, step=0.0299) - NumPy实现:
import numpy as np target_seq = np.arange(1000, 1500 + 1e-8, 0.0299) # 需要普通Python列表的话,末尾加.tolist()转换即可 - Excel实现:A1单元格填入
1000,A2单元格填入公式=A1+0.0299,选中A2单元格向下填充,直到单元格数值≤1500即可停止。
内容的提问来源于stack exchange,提问作者Walker
相关产品推荐
相关产品推荐

