我是python新手,正在尝试从文件中读取“块”数据。文件是这样写的:
# Some comment
# 4 cols of data --x,vx,vy,vz
# nsp, nskip = 2 10
# 0 0.0000000
# 1 4
0.5056E+03 0.8687E-03 -0.1202E-02 0.4652E-02
0.3776E+03 0.8687E-03 0.1975E-04 0.9741E-03
0.2496E+03 0.8687E-03 0.7894E-04 0.8334E-03
0.1216E+03 0.8687E-03 0.1439E-03 0.6816E-03
# 2 4
0.5056E+03 0.8687E-03 -0.1202E-02 0.4652E-02
0.3776E+03 0.8687E-03 0.1975E-04 0.9741E-03
0.2496E+03 0.8687E-03 0.7894E-04 0.8334E-03
0.1216E+03 0.8687E-03 0.1439E-03 0.6816E-03
# 500 0.99999422
# 1 4
0.5057E+03 0.7392E-03 -0.6891E-03 0.4700E-02
0.3777E+03 0.9129E-03 0.2653E-04 0.9641E-03
0.2497E+03 0.9131E-03 0.7970E-04 0.8173E-03
0.1217E+03 0.9131E-03 0.1378E-03 0.6586E-03
and so on
现在,我希望能够指定和读取这些块中的一个数据块。我正在使用numpy.loadtxt('filename',comments='#')
读取数据,但它会一次性加载整个文件。我在网上搜索了一下,有人为numpy io例程创建了一个补丁来指定读取块,但它不在主流numpy中。
在gnuplot中选择数据块要容易得多,但我必须编写例程来绘制分布函数。如果我能读懂特定的块,那么在python中就容易多了。另外,我将把所有可视化代码从IDL和gnuplot移到python中,因此最好将所有内容都放在python中,而不是分散在多个包中。
我考虑过从python内部调用gnuplot,将一个块绘制到一个表,并将输出分配给python中的某个数组。但我仍然在开始,我无法找出语法来做这件事。
解决这个问题的任何想法和指针都会有很大帮助。
下面的代码可能会帮助您开始。你可能需要重新模块。
可以使用以下命令打开文件进行读取:
您可以使用
要跳到以“#”开头的下一行,可以使用:
若要分析类似“i j”的行,可以使用以下正则表达式:
有关更多信息,请参阅“re”模块的文档。
要分析块,可以使用以下代码位:
如果需要,可以将块转换为numpy数组:
如果你已经将numpy作为np导入。 如果您想读取i和j之间的多个块,只需将上面的代码放入一个函数中读取一个块并多次使用它。
希望这有帮助!
快速阅读:
现在我想你可以用numpy来读台词了。。。
相关问题 更多 >
编程相关推荐