在不同的时间表示之间转换#
在 访问时间 ,我们了解了如何访问 TimeSeries
和 BinnedTimeSeries
类。在这里,我们将更详细地了解如何操纵结果时间。
转换次数#
因为时间序列中的时间列总是 Time
对象,可以在 Time
把时间转换成不同的格式或比例。
例子#
要从最小的时间序列中获得修改后的朱利安日期:
>>> from astropy import units as u
>>> from astropy.timeseries import TimeSeries
>>> ts = TimeSeries(time_start='2016-03-22T12:30:31', time_delta=3 * u.s,
... data={'flux': [1., 3., 4., 2., 4.]})
>>> ts.time.mjd
array([57469.52119213, 57469.52122685, 57469.52126157, 57469.5212963 ,
57469.52133102])
或者将《泰晤士报》转换为国际临时原子能机构(TAI)的比例尺:
>>> ts.time.tai
<Time object: scale='tai' format='isot' value=['2016-03-22T12:31:07.000' '2016-03-22T12:31:10.000'
'2016-03-22T12:31:13.000' '2016-03-22T12:31:16.000'
'2016-03-22T12:31:19.000']>
要查找数据的当前时间刻度,可以执行以下操作:
>>> ts.time.scale
'utc'
见 时间和日期 (astropy.time ) 有关如何访问和转换时间的更多文档。
格式化时间#
因为各个时间列 Time
对象时,可使用更改用于显示时间序列的默认格式和比例 format
和 scale
属性。
例子#
要更改时间序列的显示,请执行以下操作:
>>> ts.time.format = 'isot'
>>> ts
<TimeSeries length=5>
time flux
Time float64
----------------------- -------
2016-03-22T12:30:31.000 1.0
2016-03-22T12:30:34.000 3.0
2016-03-22T12:30:37.000 4.0
2016-03-22T12:30:40.000 2.0
2016-03-22T12:30:43.000 4.0
>>> ts.time.format = 'unix'
>>> ts
<TimeSeries length=5>
time flux
Time float64
------------ -------
1458649831.0 1.0
1458649834.0 3.0
1458649837.0 4.0
1458649840.0 2.0
1458649843.0 4.0
相对于其他时间的时间#
在某些情况下,使用相对时间而不是绝对时间可能很有用。可以使用 TimeDelta
类而不是 Time
类,例如,通过从现有的 Time
对象。
例子#
使用相对时间而不是绝对时间:
>>> ts_rel = TimeSeries(time=ts.time - ts.time[0])
>>> ts_rel
<TimeSeries length=5>
time
TimeDelta
----------------------
0.0
3.472222222222765e-05
6.94444444444553e-05
0.00010416666666657193
0.00013888888888879958
这个 TimeDelta
可以使用不同的时间单位(例如:秒)转换成不同的值
>>> ts_rel.time.to('second')
<Quantity [ 0., 3., 6., 9., 12.] s>