文件格式:.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]])