python - 在 python 中如何将 ascii 表转换为适合表?

标签 python numpy scipy pyfits

我在带标题的 ascii 文件中有一个数据表,我想将我的 ascii 表转换为带标题的适合文件

#ID ra  dec x   y   Umag    Bmag    Vmag    Rmag    Imag    
1.0 53.146  -27.8123    3422.98 3823.58 24.4528 24.7995 23.6266 22.64   20.8437 
2.0 53.1064 -27.801         3953.49 3994.62 23.3284 22.6716 22.1762 21.6189 21.2141 
3.0 53.1322 -27.7829    3608.34 4269.29 21.2676 20.1937 19.6743 19.0707 18.6983 
4.0 53.1017 -27.8022    4017.09 3975.24 23.6987 22.84   21.9946 21.0781 19.8616 
5.0 53.118  -27.8021    3798.98 3978.42 23.3087 22.1932 21.2205 20.1842 18.6448     
6.0 53.1479 -27.8239    3397.92 3648.27 25.0347 24.598  23.7259 22.9945 21.9228     
7.0 53.1334 -27.7758    3592.51 4375.76 21.5159 20.4777 19.6065 18.6609 17.188      
8.0 53.1048 -27.8259    3974.47 3617.5  22.3266 22.3517 22.0677 21.7664 21.6781     
9.0 53.1249 -27.8109    3706.47 3843.89 24.0539 23.3009 22.4001 21.4732 20.1244     
10.0 53.1207 -27.7822   3763.3  4278.76 24.417  23.7635 22.9405 22.1379 21.5564     
11.0 53.0886 -27.7611   4193.25 4596.77 22.012  22.3081 22.125  21.9488 21.9071     
12.0 53.1272 -27.7498   3676.7  4768.82 19.3631 19.7458 19.5979 19.4438 19.4002 

知道如何用 python 做到这一点吗? 干杯。

最佳答案

我找到了解决我自己问题的方法: 将文件作为数组读取

import pyfits
from scipy.io import *
M=read_array(filename)

将每一列专用于标题名称

c1=pyfits.Column(name='ID', format='E', array=M[:,0])
c2=pyfits.Column(name='RA', format='E', array=M[:,1])
c3=pyfits.Column(name='DEC', format='E', array=M[:,2])
c4=pyfits.Column(name='X', format='E', array=M[:,3])
c5=pyfits.Column(name='Y', format='E', array=M[:,4])
c6=pyfits.Column(name='Umag', format='E', array=M[:,5])   
c7=pyfits.Column(name='Bmag', format='E', array=M[:,6])      
c8=pyfits.Column(name='Vmag', format='E', array=M[:,7])      
c9=pyfits.Column(name='Rmag', format='E', array=M[:,8])      
c10=pyfits.Column(name='Imag', format='E', array=M[:,9])      
cols = pyfits.ColDefs([c1, c2, c3, c4, c5, c6, c7, c8, c9, c10])

将标题和列写成适合的文件:

tbhdu = pyfits.new_table(cols)
hdu = pyfits.PrimaryHDU(data=M)
thdulist = pyfits.HDUList([hdu,tbhdu])
thdulist.writeto(outfilename)
thdulist.close()

成功了!!

关于python - 在 python 中如何将 ascii 表转换为适合表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19689036/

相关文章:

python - Holoviews 是否能够在绘图中用 0 填充缺失的日期?

python - 平滑列表中的激进值

python - 在 numpy 中对巨大的密集矩阵进行操作

python-3.x - 反向传播神经网络

python - sed 在 python 中带有空格

python - 是否可以从 test_step() 函数保存文件?

python - 读取 jupyter 笔记本的随机种子

python - 稀疏矩阵中非零值的平均值?

python - 名义有序列表中 scipy.stats.spearmanr 的参数是什么?

python - 有没有办法在Python中执行文本的概念匹配?