我有两个一维数组,一个是测量数据,另一个是位置。例如,测量数据可以是温度,而另一个数组则是测量高度:
temp = np.asarray([10, 9.6, 9.3, ..., -20.3, -21.0]) # Temperature in celsius
height = np.asarray([129, 145, 167, ..., 5043, 5112]) # Height in meters
如您所见,测量高度不是等间距的。
我想计算在等间距的高度间隔中的平均温度。这是一种移动平均值,但窗口大小是可变的,因为感兴趣的区间内的数据点不总是相同的。
可以通过以下方式使用for循环来完成:
regular_heights = np.arange(0, 6000, 100) # Regular heights every 100m
regular_temps = []
for i in range(len(regular_heights)-1):
mask = np.logical_and(height > regular_heights[i], height < regular_heights[i+1])
mean = np.mean(temp[mask])
regular_temps.append(mean)
regular_temps = np.hstack((regular_temps))
我不太喜欢这种方法,我想知道是否有更符合“numpy风格”的解决方案。