0

我有一个由 sec.nsec(unix 时间?)确定的时间序列,其中信号为 0 或 1,我想将其绘制成方形信号。目前我有以下代码:

from matplotlib.pyplot import *

time = ['1633093403.754783918', '1633093403.755350983', '1633093403.760918965', '1633093403.761298577', '1633093403.761340378', '1633093403.761907443']
data = [1, 0, 1, 0, 1, 0] 

plot(time, data)
show()

这情节: 在此处输入图像描述

绘图前的时间是否需要任何转换?我不能有日期:时间,因为这些点之间可能有 ns 到 ms

谢谢你。

编辑:时间列表的值是字符串

4

1 回答 1

0

要将 unix 时间戳字符串转换为 datetime64,您需要先转换为 float,然后使用正确的单位转换为 datetime64:

time = ['1633093403.754783918', '1633093403.755350983', '1633093403.760918965', '1633093403.761298577', '1633093403.761340378', '1633093403.761907443']
time = (np.asarray(time).astype(float)).astype('datetime64[s]')
print(time.dtype)
print(time)

产量:

datetime64[s]
['2021-10-01T13:03:23' '2021-10-01T13:03:23' '2021-10-01T13:03:23'

请注意,纳秒已被剥离。如果你想保留这些...

time = (np.asarray(time).astype(float)*1e9).astype('datetime64[ns]')

产量:

datetime64[ns]
['2021-10-01T13:03:23.754783744' '2021-10-01T13:03:23.755351040'
 '2021-10-01T13:03:23.760918784' '2021-10-01T13:03:23.761298688'
 '2021-10-01T13:03:23.761340416' '2021-10-01T13:03:23.761907456']

这一切都有效,因为 datetime64 具有与 unix 时间戳相同的“纪元”或零(1970-01-01T00:00:00.000000)

完成此转换后,绘图应该可以正常工作。

于 2021-10-07T09:45:09.450 回答