J'ai deux matrices 1D, une pour les données mesurées et l'autre pour l'emplacement. Par exemple, les données de mesure peuvent être la température et l'autre tableau les hauteurs de la mesure:Moyenne d'intervalle des données 1D
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
Comme vous pouvez le voir, la hauteur des mesures ne sont pas régulièrement espacées.
Je souhaite calculer la température moyenne dans des intervalles de hauteur régulièrement espacés. C'est une sorte de moyenne mobile, mais la taille de la fenêtre est variable, car les points de données dans l'intervalle d'intérêt ne sont pas toujours les mêmes.
Cela pourrait se faire avec une boucle de la manière suivante:
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))
Je n'aime pas cette approche beaucoup et je me demandais s'il y aurait une solution plus « style numpy ».
Voulez-vous un « moyenne mobile » ou « la température moyenne dans des intervalles réguliers »? C'est-à-dire, si vous avez N intervalles, vous voulez N moyennes, ou voulez-vous une moyenne continue en utilisant une fenêtre mobile (qui couvre une gamme de hauteurs à chaque emplacement)? – tom10
Comme je le dis dans ma réponse de commnet à @elyase, j'ai probablement besoin de di d'abord une moyenne dans des intervalles régulièrement espacés et puis lisser avec une spline. Cependant, une moyenne mobile pourrait aussi être bonne en combinaison avec une spline. –