zoukankan      html  css  js  c++  java
  • Numpy中的时间类型

    从Numpy1.7开始,已经有了原生的日期-时间支持,基本类型称为datetime64。

    In [1]: import numpy as np
    
    In [2]: nd = np.datetime64('2018-05-08')
    
    In [3]: nd
    Out[3]: numpy.datetime64('2018-05-08')

    和datetime一样,datetime64对象可以表示为字符串对象。

    In [4]: np.datetime_as_string(nd)
    Out[4]: '2018-05-08'

    每个这类对象都保存在元数据,可以通过date_time_date方法访问,两个主要的组成部分是频率信息和单位(D:天)。

    In [5]: np.datetime_data(nd)
    Out[5]: ('D', 1)

    从datetime对象中构造datetime64对象:

    In [7]: d = datetime.datetime(2018,7,31,12,16,30,500000)
    
    In [8]: d
    Out[8]: datetime.datetime(2018, 7, 31, 12, 16, 30, 500000)
    
    In [10]: ng = np.datetime64(d)
    
    In [11]: ng
    Out[11]: numpy.datetime64('2018-07-31T12:16:30.500000')

    同样,可以将datetime64对象转换成datetime对象:

    In [12]: nd.astype(datetime.datetime)
    Out[12]: datetime.date(2018, 5, 8)
    
    In [13]: nd.astype(datetime.date)
    Out[13]: datetime.date(2018, 5, 8)

    另外还有另外一种不常见的datetime64的构造方法:(提供一个字符串解和频率信息)

    In [15]: nh = np.datetime64('2015-10','D')
    
    In [16]: nh
    Out[16]: numpy.datetime64('2015-10-01')

    使用arange函数生成一个日期范围,当然可以指定日期范围

    In [17]: np.array(['2015-10-01','2015-10-05','2015-10-10'],dtype='datetime64')
    Out[17]: array(['2015-10-01', '2015-10-05', '2015-10-10'], dtype='datetime64[D]')
    
    In [18]: np.arange('2018-10-01','2018-10-08',dtype='datetime64')
    Out[18]:
    array(['2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04',
           '2018-10-05', '2018-10-06', '2018-10-07'], dtype='datetime64[D]')
    
    In [19]: np.arange('2018-10-01','2018-10-08',dtype='datetime64[D]')
    Out[19]:
    array(['2018-10-01', '2018-10-02', '2018-10-03', '2018-10-04',
           '2018-10-05', '2018-10-06', '2018-10-07'], dtype='datetime64[D]')
    
    In [20]: np.arange('2018-10-01','2018-10-31',dtype='datetime64[W]')
    Out[20]:
    array(['2018-09-27', '2018-10-04', '2018-10-11', '2018-10-18'],
          dtype='datetime64[W]')
    
    In [21]: dt1 = np.arange('2018-01-01 10:10:10','2018-01-02 10:10:10',dtype='datetime64[h]')[:10]
    
    In [22]: dt1
    Out[22]:
    array(['2018-01-01T10', '2018-01-01T11', '2018-01-01T12', '2018-01-01T13',
           '2018-01-01T14', '2018-01-01T15', '2018-01-01T16', '2018-01-01T17',
           '2018-01-01T18', '2018-01-01T19'], dtype='datetime64[h]')
    In [
    36]: np.arange('2016-01-01T00:00:00','2016-01-02T00:00:00',dtype='datetime64[s]')[:20] Out[36]: array(['2016-01-01T00:00:00', '2016-01-01T00:00:01', '2016-01-01T00:00:02', '2016-01-01T00:00:03', '2016-01-01T00:00:04', '2016-01-01T00:00:05', '2016-01-01T00:00:06', '2016-01-01T00:00:07', '2016-01-01T00:00:08', '2016-01-01T00:00:09', '2016-01-01T00:00:10', '2016-01-01T00:00:11', '2016-01-01T00:00:12', '2016-01-01T00:00:13', '2016-01-01T00:00:14', '2016-01-01T00:00:15', '2016-01-01T00:00:16', '2016-01-01T00:00:17', '2016-01-01T00:00:18', '2016-01-01T00:00:19'], dtype='datetime64[s]') In [37]: np.arange('2016-01-01T00:00:00','2016-01-02T00:00:00',dtype='datetime64[ms]')[:20] Out[37]: array(['2016-01-01T00:00:00.000', '2016-01-01T00:00:00.001', '2016-01-01T00:00:00.002', '2016-01-01T00:00:00.003', '2016-01-01T00:00:00.004', '2016-01-01T00:00:00.005', '2016-01-01T00:00:00.006', '2016-01-01T00:00:00.007', '2016-01-01T00:00:00.008', '2016-01-01T00:00:00.009', '2016-01-01T00:00:00.010', '2016-01-01T00:00:00.011', '2016-01-01T00:00:00.012', '2016-01-01T00:00:00.013', '2016-01-01T00:00:00.014', '2016-01-01T00:00:00.015', '2016-01-01T00:00:00.016', '2016-01-01T00:00:00.017', '2016-01-01T00:00:00.018', '2016-01-01T00:00:00.019'], dtype='datetime64[ms]')

    简单应用:

    import matplotlib.pyplot as plt
    %matplotlib inline
    np.random.seed(3000)
    rnd = np.random.standard_normal(len(dt1)).cumsum()  ** 2
    fig = plt.figure()
    plt.plot(dt1.astype(datetime.datetime), rnd)
    plt.grid(True)
    fig.autofmt_xdate()

    效果图:

  • 相关阅读:
    struts2类型转换
    struts2拦截器
    计算机系统结构
    struts2标签
    struts2 OGNL表达式
    使用bootstrap
    Struts2-综合项目
    拦截器,课3
    struts2之OGNL
    Struts2框架
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/9661956.html
Copyright © 2011-2022 走看看