我正在使用在野外项目中发射的13个下拉探空仪剖面。我一直试图使用python创建它们的复合配置文件,但我有点卡住了。以下是我正在处理的问题:
- 每个下探器开始下降和结束下降的高度对每个下探器都是不同的。此外,每个下拉探空仪的高度剖面都不同,因此总数据点的数量也不同
- 虽然每个下拉探空仪每0.25秒传输一次数据,但每个下拉探空仪传输的数据并不相同。例如,该下拉探空仪数据的填充值为-9999,该值与另一个在相同或类似高度没有-9999填充值的下拉探空仪处于相同或类似高度。
- 由于在同一高度或与其他下拉探空相同高度的一个下拉探空缺少数值,由于一些下拉探空在彼此相同的高度传输数据,或只有一个下拉探空在某一高度传输数据,因此复合剖面的计算将是倾斜的。
以下是数据的示例:
Time_Start | TimeFLStart | 压力 | 温度 | RH | 速度 | 方向 | 纬度 | 经度 | 高度 | GPS高度 | 露点 | Uwnd | Vwnd | 提升 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
73810.00 | 0.00 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 |
73810.25 | 0.25 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 |
73810.50 | 0.50 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 |
73810.75 | 0.75 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 |
73811.00 | 1.00 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 | -9999年 |
下面是两个下拉探空仪的代码片段:
import numpy as np import pandas as pd #读取数据dropsonde_2030 = pd.read_csv(` ~/Dropsonde_DC8_202108212030_RA. txt)dropsonde_2058 = pd.read_csv('~/Dropsonde_DC8_202108212058_RA. txt ', skiprows = 103)ict', skiprows = 103) #为海拔和温度剖面创建变量并屏蔽数据。因为第一个数组的长度为2615,所以我在0:2615对高度数组进行了切片。dropsonde_2030_alt = dropsonde_2030['GPS高度']。取值dropsonde_2030_alt = np.ma。masked_where(dropsonde_2030_alt == -9999, dropsonde_2030_alt) dropsonde_2030_alt = np.array([dropsonde_2030_alt]) dropsonde_2030_alt = dropsonde_2030_alt[0,0:2615] dropsonde_2030_temp = np.array(dropsonde_2030['Temperature'].values) dropsonde_2030_temp = np.ma。masked_where(dropsonde_2030_temp == -9.999E3, dropsonde_2030_temp) dropsonde_2058_alt = dropsonde_2058['GPS高度']。取值dropsonde_2058_alt = np.ma。masked_where(dropsonde_2058_alt == -9999, dropsonde_2058_alt) dropsonde_2058_alt = lp .array([dropsonde_2058_alt]) dropsonde_2058_alt = dropsonde_2058_alt[0,0:2615] dropsonde_2058_temp = dropsonde_2058['Temperature']。取值dropsonde_2058_temp = np.ma。masked_where(dropsonde_2058_temp == -9999, dropsonde_2058_temp) #将dropsonde_2058_temp合并为一个数组combined = np。vstack ((dropsonde_2030_alt dropsonde_2058_alt))。t#的形状为(2615,2)#计算每个点的平均高度means_all = [] for i in range(len(combined)): for j in range(len(combined[i])): means = np.mean(combined[i][j]) means_all.append(means) means_all = np.array(means_all) #将列表转换回np.array(means_all) #数组的含义是all_2d = np。重塑(means_all,(2615, 2)) #转换回2d数组,以便沿着轴1 means_alt = np取均值。Mean (means_all_2d, axis = 1) = np.ma。masked_where(means_alt == -9999, means_alt) #掩码-9999个值
上面,我试图计算两个下拉探空仪的平均高度剖面,但我认为我可能过于复杂了。我试图创建一个嵌套的for循环,以计算每个索引的均值,但输出的均值看起来不正确。
如果任何人有一个想法,我应该改变,增加或删除,请告诉我。任何反馈都非常感谢。提前谢谢你。