ndarray可以存储datetime和float吗?

时间:2017-11-09 19:00:24

标签: python numpy datetime multidimensional-array floating-point

如何制作这样一个可以同时存储日期时间和浮动的numpy数据结构?

array([[ 2017-01-30 00:00:00,  1.0],
       [ 2017-01-31 00:00:00,  2.0]])

3 个答案:

答案 0 :(得分:2)

您可以将Http-redirect fetch与异构元组一起使用:

import numpy as np
x = np.array([(np.datetime64('2017-01-30'), 1.0),
              (np.datetime64('2017-01-31'), 2.0)],
              dtype=[('datetime', 'datetime64[D]'), ('number', 'f8')])

语法有点类似于dicts:

>>> x['datetime']
array(['2017-01-30', '2017-01-31'], dtype='datetime64[D]')
>>> x['number']
array([ 1.,  2.])
>>> x['datetime'][0] + 5
numpy.datetime64('2017-02-04')
>>> x['number'][1] + 5
7.0

请注意,structured array可能更适合您的需求。

答案 1 :(得分:2)

使用structured array

import numpy as np

desc = np.dtype([('date', '<M8[s]'), ('float', np.float64)])
a = np.array([(np.datetime64('2017-01-30 00:00:00'),  1.0),
              (np.datetime64('2017-01-31 00:00:00'),  2.0)], dtype=desc)
print(a)
print(repr(a))

输出:

[('2017-01-30T00:00:00',  1.) ('2017-01-31T00:00:00',  2.)]
array([('2017-01-30T00:00:00',  1.), ('2017-01-31T00:00:00',  2.)], 
      dtype=[('date', '<M8[s]'), ('float', '<f8')])

答案 2 :(得分:0)

这是不可能的,因为ndarray必须是同源的,即具有相同的数据类型。为了解决您的目的,您可以使用列表或元组而不是数组。