在不同的时间表示之间转换#

访问时间 ,我们了解了如何访问 TimeSeriesBinnedTimeSeries 类。在这里,我们将更详细地了解如何操纵结果时间。

转换次数#

因为时间序列中的时间列总是 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 对象时,可使用更改用于显示时间序列的默认格式和比例 formatscale 属性。

例子#

要更改时间序列的显示,请执行以下操作:

>>> 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>