我被困住了(时间紧迫),希望能有所帮助。这可能是一个简单的任务,但我似乎无法解决。

我有一个矩阵,用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/

10-16 22:54