把一些数字写成csv就像比较矩阵一样

时间:2011-10-03 21:02:58

标签: python

我正在使用python编写一些比较值,如下所述:

ids = [1, 2, 3] 
vals = [0.0, 0.71, 0.89, 0.71, 0.0, 0.77, 0.89, 0.77, 0.0]

其中id是来自数据库的3种化合物的id_number(int),val是彼此的比较值......但是我希望将这些ID和val写入如下所示的CSV文件:< / p>

    1        2        3

1   0.0      0.71     0.89 

2   0.71     0.0      0.77

3   0.89     0.77     0.0

只有更高或更低的矩形矩阵才能更好

1 个答案:

答案 0 :(得分:5)

使用csv module

import csv

ids= [1, 2, 3] 
vals = [0.0, 0.71, 0.89, 0.71, 0.0, 0.77, 0.89, 0.77, 0.0]

with open('/tmp/test.csv','w') as f:
    writer=csv.writer(f, delimiter='\t',lineterminator='\n',)
    writer.writerow(['']+ids)
    for i,row in enumerate(zip(*[iter(vals)]*3),1):
        writer.writerow((i,)+row[:i])

这会创建一个下三角矩阵:

    1   2   3
1   0.0
2   0.71    0.0
3   0.89    0.77    0.0

grouper recipezip(*[iter(vals)]*3)用于将vals分组为3元组。