如何在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 loop
来填充第一列,似乎没有办法以更简单的方式分配它,如下所示:
list[0][:] = another_list_same_length
答案 0 :(得分: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)
答案 1 :(得分: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
可以是日期(或其他任何内容。)
希望这有帮助。