5

我正在使用带有 numpy 的 python 从格式相当复杂的文本文件中的数值模型中读取数据。

Numpy 的 genfromtxt 和 fromfile 函数运行良好,但前提是数据是结构化的。我的数据文件如下所示:

------剪辑

[sitename] [dimemsion 1 size] [dimension 2 size]
[data for dim 1]
[data for dim 2]
[date/time]
[header data]
[data (dim1 * dim2)]
[header]
[data]
...
.  
.   
[data/time]
[header]
[data]
.
.
etc...

---- 剪断

因此,我混合了文本和数字以及复杂(但重复)的布局。使用 numpy 阅读本文的最佳方式是什么?

干杯,

克里斯

4

2 回答 2

6

Numpy 不擅长泛化解析,因此您最好超越它,您选择的内容主要取决于文件的一致性。

如果它们异常一致,也就是说,您可以从已知位置和已知行中提取数字,而不是您可以逐行读取文件作为字符串并将其索引到您想要的字符。(逐步浏览文件,例如,使用 file.readlines 将每一行作为字符串获取。)

通常的情况(至少我发现)是它比上面更多样化,但是可以使用简单的字符串操作来解析行,例如string.split(这几乎总是我的第一步)等。

除此之外,Python 中还有很多解析库。我偏爱pyparsing(但我不太了解其他人,所以这不是一个公平的比较)。这是各种解析库的摘要

于 2012-04-12T23:06:34.683 回答
1

我同意前面的回答。以下步骤链效果最好,并且比 pyparsing 或numpy.genfromtxt

inp = open(textfilename).readlines()
my_list = []
for line in inp:
    item = str.split(line)
    my_list.append(float(item[0]))

然后,您可以轻松地将列表转换为 numpy 数组/矩阵并从那里继续

于 2012-04-17T14:59:30.687 回答