python-2.7 - 具有非均匀数组的 Bin 平均值
问题描述
我有一组不均匀的速度剖面(速度与高度),我需要对所有剖面进行平均(bin 1 km)。这是三个“合成”配置文件的示例:
testalt1 = np.arange(70,75,1)
testalt2 = np.arange(72,80,1)
testalt3 = np.arange(60,69,1)
vtest1 = np.arange(-2,3,1)
vtest2 = np.arange(-3,5,1)
vtest3 = np.arange(-3,6,1)
print testalt1,testalt2, testalt3
print vtest1,vtest2, vtest3
输出:
[70 71 72 73 74] [72 73 74 75 76 77 78 79] [60 61 62 63 64 65 66 67 68]
[-2 -1 0 1 2] [-3 -2 -1 0 1 2 3 4] [-3 -2 -1 0 1 2 3 4 5]
所以我的代码的最终结果应该是一个配置文件,只要有重叠,它就会取平均值,并且只取它存在的一个数组的值。例如:
结果altmean
应该是:
[60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79]
从海拔 60 公里到 68 公里,输出vmean
应为:
[-3 -2 -1 0 1 2 3 4 5]
对于海拔 69,我们应该有一个NaN
. 那么altmean = [70 71]
应该有vmean = [-2 -1]
,对应的值vtest1
。只要在 72 到 74 公里之间的范围内有重叠,就会开始平均,这应该输出:
altmean = [72 73 74]
vmean = [-1.5 -0.5 0.5]
最终输出应该是:
altmean = [60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79]
vmean = [-3 -2 -1 0 1 2 3 4 5 NaN -2 -1 -1.5 -0.5 0.5 0 1 2 3 4]
该解决方案应扩展到 50 个配置文件。
非常感谢你们
解决方案
该问题的解决方案如下(u 只是具有不同风分量的数组):
def averagingarrays(alt1,v1,u1,alt2,v2,u2):
altmin = np.min([np.min(alt1),np.min(alt2)])
altmax = np.max([np.max(alt1),np.max(alt2)])
altarray = np.arange(altmin,altmax+1,1)
vmean = np.zeros(np.size(altarray))
umean = np.zeros(np.size(altarray))
vc = 0
for alt in altarray:
altw1 = np.where(alt1 == alt)[0]
altw2 = np.where(alt2 == alt)[0]
if np.size(altw1) != 0 and np.size(altw2) != 0:
vmean[vc] = np.nanmean([v1[altw1], v2[altw2]])
umean[vc] = np.nanmean([u1[altw1], u2[altw2]])
if np.size(altw1) != 0 and np.size(altw2) == 0:
vmean[vc] = v1[altw1]
umean[vc] = u1[altw1]
if np.size(altw2) != 0 and np.size(altw1) == 0:
vmean[vc] = v2[altw2]
umean[vc] = u2[altw2]
if np.size(altw1) == 0 and np.size(altw2) == 0:
vmean[vc] = np.NaN
umean[vc] = np.NaN
#print altw1, alt
vc = vc+1
return altarray,vmean,umean
aux = averagingarrays(testalt1,vtest1,utest1, testalt2,vtest2,utest2)
print averagingarrays(aux[0],aux[1],aux[2], testalt3,vtest3,utest3)
推荐阅读
- javascript - 当从具有多个元素的事件中调用 $(this) 时,将使用哪个选择器?
- java - 在没有科学计数法的情况下将字符串转换为双精度
- swagger - 如何编写自定义排序器以在 UI 中按名称对 springdoc swagger 标签进行排序?
- javascript - zeit serve 命令不允许在 url 上显示 `index.html` 字符串
- javascript - 更改spreadjs中的默认字体
- wordpress - 在 WooCommerce 中将类别添加到购物车的时间
- sql - String concatenation in SQLITE with NA values?
- javascript - 如果服务器没有响应,使用缓存?
- azure - 通过来自不同域的前端的 .NET Core Web api 对 Azure Active Directory 进行身份验证
- javascript - 如何检查参数是否是对象中的日期