toy*_*las 5 python numpy block
我是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
Run Code Online (Sandbox Code Playgroud)
现在我希望能够从这些多个块中指定和读取一个数据块.我正在使用numpy.loadtxt('filename',comments='#')
读取数据,但它一次性加载整个文件.我在网上搜索,有人为numpy io例程创建了一个补丁来指定阅读块,但它不是主流的numpy.
在gnuplot中选择数据块要容易得多,但是我必须编写例程来绘制分布函数.如果我能弄清楚读取特定块,那么在python中会更容易.此外,我正在将所有可视化代码从IDL和gnuplot移动到python,因此将所有内容都放在python中而不是将内容分散在多个包中会很好.
我想过在python中调用gnuplot,将一个块绘制到一个表并将输出分配给python中的某个数组.但我还在开始,我无法弄清楚这样做的语法.
任何想法,解决这个问题的指针都会有很大的帮助.
快速基本阅读:
>>> def read_blocks(input_file, i, j):
empty_lines = 0
blocks = []
for line in open(input_file):
# Check for empty/commented lines
if not line or line.startswith('#'):
# If 1st one: new block
if empty_lines == 0:
blocks.append([])
empty_lines += 1
# Non empty line: add line in current(last) block
else:
empty_lines = 0
blocks[-1].append(line)
return blocks[i:j + 1]
>>> for block in read_blocks(s, 1, 2):
print '-> block'
for line in block:
print line
-> block
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
-> block
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
>>>
Run Code Online (Sandbox Code Playgroud)
现在我想你可以使用numpy来读取这些行......
归档时间: |
|
查看次数: |
12227 次 |
最近记录: |