天文数据文件读写注意事项

该博客讲述了如何处理.txt格式的表格数据,尤其是含有空值(用'--'或'nan'填充)的情况。作者遇到的问题是在进行纵向堆叠多个表格时,由于数据类型的不一致导致错误。解决方案包括使用astropy.io库进行读写,并将所有空值统一转换为float型的np.inf。博客详细介绍了使用np.where和np.vstack函数来处理和堆叠数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件格式:.txt
需操作文件数目:1743
文件描述:文件内容为表格;表格内有空值,有的用字符(str)“--”填充,有的为"nan"(float)
需求:纵向堆叠1743个表格,每列表示相同参数的值

所遇问题:
1. .txt格式的表格有多种读法,不同读法,后续操作表格的命令不同
2. 对没有测量值的参数,源文件填充空值的方式不同,导致同一列vstack时报错

解决方法:
1. 对比fiel, astropy.io读、写命令的用法
2. 将空值统一用float型数据填充

Fiel.read

"""
表格中空值用'--'(class=str)填充,vstack时数据类型不统一,
将str转为float型, np.inf(class=float,表示无穷大)
"""

data_o = open(path+str(c1[i]))
#print(data_o.read())
o=np.array([line.split() for line in data_o])
o[np.where(o=='--')]=np.inf    
names = o[0]
for i in range(1,len(c1)):
    data_add = open(path+str(c1[i]))
    f=np.array([line.split() for line in data_add])
    f[np.where(f=='--')]=np.inf
    f1=np.vstack((o,f[1:]))
    o = f1

str.split(str=' ', num)
               str---被分割的字符,默认空格
               num--- 指定进行分割的行数

np.array(object,dtype=None)
               object ---array格式 [ ] 
               dtype---生成数组后数据格式,float, int, str ... 

np.where(condition)
                condition --- bool

array[np.where(condition)]:array满足condition的值

np.vstack()

a = np.array([1, 2, 3])
b = np.array([2, 3, 4])
np.vstack((a,b))
array([[1, 2, 3],
       [2, 3, 4]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值