如何在Python中生成间隔0.0001ms的高精度时间戳?
当然可以!针对你这种只有振动数值数组、没有时间戳的情况,结合10kHz的采样率,完全能用Python生成符合要求的时间戳序列。我给你两种实用方案,分别适配不同数据量的场景:
方法一:基础Python实现(无需第三方库)
如果你的数据量不大,用原生datetime模块就能搞定,步骤清晰易懂:
from datetime import datetime, timedelta # 定义起始时间(你可以根据实际需求修改) start_time = datetime(2018, 5, 21, 0, 0, 0) # 10kHz采样率对应的间隔:0.0001秒(100微秒) sample_interval = timedelta(seconds=0.0001) # 假设你的振动数据有10个样本(替换成你实际的数组长度) num_samples = 10 # 生成时间戳列表 timestamps = [] for i in range(num_samples): # 计算当前样本的时间 current_time = start_time + i * sample_interval # 格式化为你需要的字符串:秒后拼接四位万分之一秒数值 formatted_ts = current_time.strftime("%Y-%m-%d %H:%M:%S") + f":{i:04d}" timestamps.append(formatted_ts) # 输出结果示例 for ts in timestamps: print(ts)
运行这段代码会输出:
2018-05-21 00:00:00:0000 2018-05-21 00:00:00:0001 2018-05-21 00:00:00:0002 ... 2018-05-21 00:00:00:0009
方法二:用Pandas高效生成(适合大数据量)
如果你的振动数据有成千上万个样本,用Pandas的矢量运算会比循环快得多,代码也更简洁:
import pandas as pd # 起始时间字符串 start_time = "2018-05-21 00:00:00" # 10kHz采样率 sample_rate = 10000 # 样本数量(替换成你实际的数组长度) num_samples = 10 # 生成连续的时间序列 time_series = pd.date_range(start=start_time, periods=num_samples, freq=f"{1/sample_rate}S") # 格式化为目标样式:提取微秒部分并转换为四位万分之一秒数值 formatted_timestamps = time_series.apply( lambda x: x.strftime("%Y-%m-%d %H:%M:%S") + f":{(x.microsecond // 100):04d}" ) # 输出结果 print(formatted_timestamps.tolist())
关键注意事项
- 先纠正一个小细节:10kHz采样率对应的是**0.0001秒(100微秒)**的间隔,不是0.0001ms哦——因为10kHz意味着每秒采集10000个样本,所以每个样本的时间间隔是
1/10000 = 0.0001秒。如果你实际需要的是0.0001ms(即1微秒,对应1MHz采样率),只需要把间隔参数改成timedelta(microseconds=1)(原生方案)或freq="1U"(Pandas方案)即可。 - 如果你需要的时间戳格式是末尾四位严格对应时间偏移(比如
0001代表比起始时间晚0.0001秒),两种方案的格式化逻辑都已经匹配这个需求。 - 当处理超大规模数据时,Pandas方案的性能优势会非常明显,建议优先选用。
内容的提问来源于stack exchange,提问作者RajeshKumar Sugumar
相关产品推荐
相关产品推荐

