如何从txt文件创建矩阵/数组?

时间:2015-09-17 14:51:37

标签: python arrays regex matrix

kinetic_e = open('t.dat.txt', 'r')
print kinetic_e

p_word = re.compile(r'\S+')
for line in kinetic_e:
    m = re.findall(p_word, line)
    print m

有问题的文件:http://sirius.chem.vt.edu/~crawdad/programming/project3/h2o_sto3g/t.dat ...前两列的数字为1-7,我想要矩阵的尺寸。第1列和第2列指定第3列中数字的行/列号。(例如:第一行是row1,col1然后是row2,col1等。)

我的问题:我是否在正确的道路上解决这个问题,我可以使用正则表达式来解决这个问题吗?我找不到这样做的源来创建一个包含所有数据的7x7矩阵

2 个答案:

答案 0 :(得分:1)

不,错路。这里不需要正则表达式。初始化7x7 2D阵列。循环遍历行,拆分它们,从前两列中提取i,j索引,并使用第三个字段设置2d数组的值:

matrix = [[0 for i in range(7)] for j in range(7)]
with open('t.dat.txt', 'r') as source:
    for line in source:
        i, j, value = line.split()
        i, j = int(i), int(j)
        matrix[i - 1][j - 1] = float(value)

答案 1 :(得分:0)

没有正则表达式,您可以这样做。数据已经处于易于操纵的状态。您将要为文件中的每一行循环,并根据它的外观使用split方法。

就映射行和列而言,您可以将Python列表粘贴到另一个列表中(确保列表具有正确的列表分配大小)或者使用词典执行相同的操作,这样您就不需要了担心尺寸。无论你选择哪一种,你都可以在循环中的每一行进行分配以获得所有的行。

修改

看起来像上面的Bernhard在回复时比我快一点。