使用
dtype=None
时,它会推断字段的数据类型,在这种情况下,一个为字符串,其余为整数。您可以通过
np.datetime64
定义('M'表示月份)来细化数据类型。
In [419]: dt = ['datetime64[M]', 'i', 'i']
In [420]: data=np.genfromtxt(txt.splitlines(), delimiter=',',names=True, dtype=dt)
In [421]: data
Out[421]:
array([('1997-02', 432, 1),
('1997-03', 300, 1),
('1997-04', 432, 0)],
dtype=[('date', '<M8[M]'), ('value1', '<i4'), ('value2', '<i4')])
这是一个形状为(3,)的1维结构化数组。它没有列,而是具有命名为
fields
的字段,可以通过名称而不是索引访问这些字段。
In [422]: data['date']
Out[422]: array(['1997-02', '1997-03', '1997-04'], dtype='datetime64[M]')
如果您更愿意使用字符串,则可以使用默认值。但是将datetime对象转换为其他对象也很容易。
天数:
In [424]: data['date'].astype('datetime64[D]')
Out[424]: array(['1997-02-01', '1997-03-01', '1997-04-01'], dtype='datetime64[D]')
字符串
In [427]: data['date'].astype('U7')
Out[427]:
array(['1997-02', '1997-03', '1997-04'],
dtype='<U7')
"
datetime
对象:
"
In [428]: data['date'].tolist()
Out[428]:
[datetime.date(1997, 2, 1),
datetime.date(1997, 3, 1),
datetime.date(1997, 4, 1)]
整数:
In [429]: data['date'].astype(int)
Out[429]: array([325, 326, 327])