从文本文件创建矩阵-python
问题内容:
我想从三列文件创建一个矩阵。我敢肯定这是非常容易的事情,但是我只是不明白该怎么做。请保持温柔,我是python的初学者。谢谢
我的输入文件的格式
A A 5
A B 4
A C 3
B B 2
B C 1
C C 0
所需输出-完整矩阵
A B C
A 5 4 3
B 4 2 1
C 3 1 0
或-半矩阵
A B C
A 5 4 3
B 2 1
C 0
我试过了,但是正如我所说,我是python和编程的新手。
import numpy as np
for line in file('test').readlines():
name1, name2, value = line.strip().split('\t')
a = np.matrix([[name1], [name2], [value]])
print a
工作脚本-我的一位朋友也帮助了我,所以如果有人对简单的脚本感兴趣,就可以了。它不是最有效的,但是效果很好。
data = {}
names = set([])
for line in file('test').readlines():
name1, name2, value = line.strip().split('\t')
data[(name1, name2)] = value
names.update([name1])
names = sorted(list(names))
print names
print data
output = open('out.txt', 'w')
output.write("\t%s\n" % ("\t".join(names)))
for nameA in names:
output.write("%s" % nameA)
for nameB in names:
key = (nameA, nameB)
if key in data:
output.write("\t%s" % data[(nameA, nameB)])
else:
output.write("\t")
output.write("\n")
output.close()
问题答案:
尝试:
import pandas as pd
import numpy as np
raw = []
with open('test.txt','r') as f:
for line in f:
raw.append(line.split())
data = pd.DataFrame(raw,columns = ['row','column','value'])
data_ind = data.set_index(['row','column']).unstack('column')
np.array(data_ind.values,dtype=float))
输出:
array([[ 5., 4., 3.], [ nan, 2., 1.], [ nan, nan, 0.]])