我被困住了(时间紧迫),希望能有所帮助。这可能是一个简单的任务,但我似乎无法解决。
我有一个矩阵,用5乘5表示,在文本文件中,行的名称另加了一个起始列,而文本文件中的列则具有相同的名称,如下所示:
b e a d c
b 0.0 0.1 0.3 0.2 0.5
e 0.1 0.0 0.4 0.9 0.3
a 0.3 0.4 0.0 0.7 0.6
d 0.2 0.9 0.7 0.0 0.1
c 0.5 0.3 0.6 0.1 0.0
我有多个具有相同格式和矩阵大小的文件,但是名称的顺序不同。我需要一种方法来改变它们,使它们都相同并保持对角线0.0。因此,我对列所做的任何交换都必须对行进行。
我一直在搜索,似乎NumPy可以满足我的要求,但是我从未使用过它或数组。任何帮助是极大的赞赏!
简而言之:如何将文本文件放入数组,然后可以在行和列之间交换为所需顺序?
最佳答案
我建议您使用熊猫:
from StringIO import StringIO
import pandas as pd
data = StringIO("""b e a d c
b 0.0 0.1 0.3 0.2 0.5
e 0.1 0.0 0.4 0.9 0.3
a 0.3 0.4 0.0 0.7 0.6
d 0.2 0.9 0.7 0.0 0.1
c 0.5 0.3 0.6 0.1 0.0
""")
df = pd.read_csv(data, sep=" ")
print df.sort_index().sort_index(axis=1)
输出:
a b c d e
a 0.0 0.3 0.6 0.7 0.4
b 0.3 0.0 0.5 0.2 0.1
c 0.6 0.5 0.0 0.1 0.3
d 0.7 0.2 0.1 0.0 0.9
e 0.4 0.1 0.3 0.9 0.0
关于python - 用命名的列/行python重新排列矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15443902/