You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:19:28