Python:从自定义文件格式快速创建ndarray
我有一个像这样的文件格式Python:从自定义文件格式快速创建ndarray,python,parsing,numpy,multidimensional-array,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
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不能工作,因为中间行只有一列。我不知道还会有更多的数据块,我也不知道在文件结束前会有多少数据块。我现在正在将单个条目手动输入数组。有没有更快的方法?我希望解析大型文件和其中的许多文件。您可以一次读取一行文件,然后按空格分割,然后迭代该文件并按句点字符分割。然后像这样格式化整数部分和小数部分
"{0:d}.{0:>2d}".format(characteristic, mantissa)
您可以一次读取整个文件内容,在空格和换行符处拆分字符串,并按要求的顺序连接各个部分:每十个元素在一行中,然后是新行,依此类推:
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.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
所以区块始终是3x3?不,区块并不总是3x3,但它们的大小是已知的,所以您的解决方案可以工作!谢谢
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