Python-将矩阵转换为边列表/长格式

我有一个非常大的csv文件,具有如下矩阵:


null,A,B,C


A,0,2,3


B,3,4,2


C,1,2,4

它始终是一个* n矩阵。第一列和第一行是名称。我想将其转换为3列格式(也可以称为边列表,长格式等),如下所示:


A,A,0


A,B,2


A,C,3


B,A,3


B,B,4


B,C,2


C,A,1


C,B,2


C,C,4

我用过:


row = 0

for line in fin:

    line = line.strip("\n")

    col = 0

    tokens = line.split(",")

    for t in tokens:

        fout.write("\n%s,%s,%s"%(row,col,t))

        col += 1

    row += 1

不起作用...


能否请你帮忙?谢谢..


侃侃无极
浏览 440回答 2
2回答

慕沐林林

当您打印出各个单元格时,您还需要枚举列标题。对于矩阵文件mat.csv:null,A,B,CA,0,2,3B,3,4,2C,1,2,4以下程序:csv = open("mat.csv")columns = csv.readline().strip().split(',')[1:]for line in csv:    tokens = line.strip().split(',')    row = tokens[0]    for column, cell in zip(columns,tokens[1:]):        print '{},{},{}'.format(row,column,cell)打印出:A,A,0A,B,2A,C,3B,A,3B,B,4B,C,2C,A,1C,B,2C,C,4为了生成上对角线,可以使用以下脚本:csv = open("mat.csv")columns = csv.readline().strip().split(',')[1:]for i, line in enumerate(csv):    tokens = line.strip().split(',')    row = tokens[0]    for column, cell in zip(columns[i:],tokens[i+1:]):        print '{},{},{}'.format(row,column,cell)结果输出:A,A,0A,B,2A,C,3B,B,4B,C,2C,C,4

MMTTMM

您需要跳过每一行的第一列:for t in tokens[1:]:
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python