我正在使用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
只有更高或更低的矩形矩阵才能更好
答案 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 recipe,zip(*[iter(vals)]*3)
用于将vals
分组为3元组。