在Python中创建整数和日期时间的列表
我想知道怎么在Python里创建一个列表(或者如果可以的话,创建一个numpy数组),这个列表的第一列是datetime
对象,其他列是不同的数据类型。
比如,这个列表看起来会像这样:
list = [[<datetime object>, 0, 0.]
[<datetime object>, 0, 0.]
[<datetime object>, 0, 0.]]
那么,创建和初始化这样一个列表的最佳方法是什么呢?
到目前为止,我尝试过使用np.empty
、np.zeros
,还有类似于这样的列表推导式:
list = [[None for x in xrange(3)] for x in xrange(3)]
但是如果我这样做的话,我就需要一个for循环
来填充第一列,而似乎没有更简单的方法来像下面这样赋值:
list[0][:] = another_list_same_length
2 个回答
1
使用 zip
函数
>>> column1 = [1, 1, 1]
>>> column2 = [2, 2, 2]
>>> column3 = [3, 3, 3]
>>> zip(column1, column2, column3)
[(1, 2, 3), (1, 2, 3), (1, 2, 3)]
>>> # Or, if you'd like a list of lists:
...
>>> [list(tup) for tup in zip(column1, column2, column3)]
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
>>>
这样你可以分别创建每一列,然后再把它们组合在一起。column1
可以是日期(或者其他任何东西)。
希望这对你有帮助。
2
你是说像这样:
In [17]: import numpy as np
In [18]: np.array([[[datetime.now(),np.zeros(2)] for x in range(10)]])
Out[18]:
array([[[datetime.datetime(2014, 8, 7, 23, 45, 12, 151489),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151560),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151595),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151619),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151634),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151648),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151662),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151677),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151691),
array([ 0., 0.])],
[datetime.datetime(2014, 8, 7, 23, 45, 12, 151706),
array([ 0., 0.])]]], dtype=object)