gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:49 24 4
gpt4 key购买 nike

我有一个非常大的 csv 文件,有一个像这样的矩阵:

null,A,B,C

A,0,2,3

B,3,4,2

C,1,2,4

它总是一个n*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

不工作...

你能帮忙吗?谢谢..

最佳答案

您还需要在打印单个单元格时枚举列标题。

对于矩阵文件ma​​t.csv:

null,A,B,C
A,0,2,3
B,3,4,2
C,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,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

要生成上对角线,您可以使用以下脚本:

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,0
A,B,2
A,C,3
B,B,4
B,C,2
C,C,4

关于Python - 将矩阵转换为边列表/长格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17099458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com