Python:快速从自定义文件格式创建ndarray

时间:2014-08-17 07:05:13

标签: python parsing numpy multidimensional-array

我有一个看起来像这样的文件格式

0.1
0.02 0.03 0.04
0.05 0.06 0.07
0.08 0.09 0.10
0.2
0.11 0.12 0.13
0.14 0.15 0.16
0.17 0.18 0.19
0.3 ... ...

我想将此文件解析为数组,如下所示 -

0.02 0.11 ...
0.03 0.12 ...
0.04 0.13 ...
0.05 0.14 ...
0.06 0.15 ...
0.07 0.16 ...
...

这里我已经确定genfromtxt,loadtxt因为带有单列的中间行而无法工作。我不知道可能有更多的数据块,我不知道有多少数据直到文件结束。我现在手动将单个条目输入到数组中。有更快的方法吗?我正在寻找解析大文件和其中许多文件。

2 个答案:

答案 0 :(得分:0)

您可以一次读取一行文件,然后按空格分割,然后迭代,然后按句点字符拆分。然后像这样格式化整数部分和小数部分。

"{0:d}.{0:>2d}".format(characteristic, mantissa)

答案 1 :(得分:0)

您可以一次阅读整个文件内容,split空格和换行符处的字符串以及join所需顺序的各个部分:一行中的每十个元素,然后是一个新行和等等:

import re

with open("data.txt") as f:
    content = re.split(' |\n', f.read())
    print "\n".join([" ".join(content[i::10]) for i in range(1, 10)])

文件内容data.txt

0.1
0.02 0.03 0.04
0.05 0.06 0.07
0.08 0.09 0.10
0.2
0.11 0.12 0.13
0.14 0.15 0.16
0.17 0.18 0.19
0.3
1 2 3
4 5 6
7 8 9

输出:

0.02 0.11 1
0.03 0.12 2
0.04 0.13 3
0.05 0.14 4
0.06 0.15 5
0.07 0.16 6
0.08 0.17 7
0.09 0.18 8
0.10 0.19 9