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

これには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 に答える
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 に答える