如何从一个csv文件读取多个矩阵?

时间:2019-02-18 16:43:52

标签: python pandas csv matrix

我正在尝试从一个文本文件中加载多个矩阵。

我想从同一个文件中读取几个矩阵,以便可以在网络中绘制它们。当输入文件仅包含一个矩阵时,我设法做到了,但是当文件很多时,我不知道该怎么做。 输入文件看起来像这样,只是更大了:

x [*,*,0]
:    0   1   2   3   4   :=
0    .   0   0   1   1   
1    1   .   0   0   0   
2    1   0   .   0   0   
3    0   0   0   .   0   
4    0   0   0   0   .   

我的代码是这样的:

infile = "testfile.sol"
edges = []
import pandas as pd
colNames = [i for i in range(11)]
df = pd.read_csv('testfile.sol', sep=' ', skipinitialspace=True, index_col=0,names=colNames, skiprows=[0, 1])

for i in range(len(df)):
    for j in range(len(df)):
        if df[i][j] == "1":
            index_i = i
            index_j = j
            edge = (i,j)
            edges.append(edge)
import networkx as nx
G = nx.Graph()
G.add_edges_from(edges)

这种工作方式,但是我的输入文件中有一些写在文件的后面:

x [*,*,0]
:    0   1   2   3   4   :=
0    .   0   0   1   1   
1    1   .   0   0   0   
2    1   0   .   0   0   
3    0   0   0   .   0   
4    0   0   0   0   .   

x [*,*,1]
:    0   1   2   3   4   :=
0    .   0   0   1   0   
1    1   .   0   0   0   
2    1   0   .   0   1   
3    0   0   0   .   0   
4    0   0   0   0   .   

我如何阅读所有这些内容,并使列表为edge0,edge1等?

1 个答案:

答案 0 :(得分:0)

我没有尝试过,但是您可以将numpy.genfromtxt()与正确的定界符一起使用。您需要使用两次。首先获取矩阵,然后通过迭代矩阵数组使用第二次。