2

我正在为每个数据项创建列表,我有以下数据结构,并且在迭代结束时有 6 个包含数据点的列表。每个列表的长度相同,我想将每个列表生成为 csv 文件的一列

例子:

columnOfList1, columnOfList2...

这是我生成多个数据列表的代码:我想不通的是生成 csv 文件。

for (fn1, lst1), (fn2, lst2) in product(dict1.iteritems(), dict2.iteritems()):
    for vector1, vector2 in zip(lst1, lst2):
4

3 回答 3

4

正如您所说,每个列表的长度相同。你为什么不做这个长度的“for”?

例子:

for i in range(len(some_list)):
    print lst[i], lst2[i], lst3[i], lst4[i], lst5[i]
于 2012-08-14T02:26:49.723 回答
1

将行转换为列表只是翻译。只需通过以下方式完成zip

>>> foo
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
>>> zip(*foo)
[(0, 0, 0, 0, 0), (1, 1, 1, 1, 1), (2, 2, 2, 2, 2), (3, 3, 3, 3, 3), (4, 4, 4, 4, 4)]

所以你可能只是做

>>> lsts = [l[1] for l in product(yourdicts)]
>>> csvwriter.writerows(zip(*lsts))
于 2012-08-14T02:35:30.893 回答
1

您可以为此使用numpy.savetxt。首先将数组堆叠成列:

>>> import numpy as np
>>> col1 = np.array([1,2,3])
>>> col2 = np.array([4,5,6])
>>> output = np.vstack((col1, col2)).T
>>> output
array([[1, 4],
       [2, 5],
       [3, 6]])

然后写出来。你可以只传递一个文件名,但在这里我使用 StringIO 来显示输出:

>>> from StringIO import StringIO
>>> s = StringIO()
>>> np.savetxt(s, output, delimiter=',', fmt='%.7g')
>>> print s.getvalue()
1,4
2,5
3,6
于 2012-08-14T03:06:49.800 回答