Filtrage efficace de moyenne mobile à l'aide de foulées
Dans cet article, nous abordons l'utilisation de foulées pour construire un filtre de moyenne mobile efficace. Les foulées fournissent un moyen de créer des vues de tableaux existants, permettant des calculs optimisés sans modifier les données d'origine.
Approche existante
L'approche existante utilise des foulées pour générer un tableau représentant un noyau de filtre en mouvement. Ce noyau est ensuite roulé verticalement pour capturer les valeurs nécessaires, et leur somme est calculée pour arriver à la moyenne.
Approche améliorée
L'approche améliorée utilise la « fantaisie » techniques de progression pour obtenir directement les 9 valeurs ou l'agrégation des éléments du noyau, offrant ainsi une solution plus complète. Cela peut être implémenté pour les tableaux à N dimensions.
Considérations sur la mémoire
Bien que les foulées permettent des opérations efficaces de fenêtre mobile sur un seul axe, il est crucial de noter les implications potentielles en matière de mémoire lorsque travailler avec des tableaux multidimensionnels. Les étapes intermédiaires impliquant la copie du tableau peuvent entraîner une augmentation significative de l'utilisation de la mémoire.
Fonctions spécialisées
Lorsqu'il s'agit de fenêtres mobiles multidimensionnelles, des fonctions spécialisées comme celles de scipy. ndimage sont recommandés plutôt que les tricks de foulée. Ces fonctions offrent une gestion efficace des limites, effectuent des calculs sur place et excellent en performances.
Démonstration
L'extrait de code ci-dessous illustre la fonction de fenêtre déroulante pour un filtre spécifique. size :
<code class="python">filtsize = (3, 3) a = np.zeros((10,10), dtype=np.float) a[5:7,5] = 1 b = rolling_window(a, filtsize) blurred = b.mean(axis=-1).mean(axis=-1)</code>
Conclusion
Bien que les foulées offrent une approche pratique pour les opérations de fenêtre mobile sur un seul axe, elles sont moins efficaces pour les tableaux multidimensionnels. Des fonctions spécialisées telles que scipy.ndimage offrent une solution plus efficace et plus polyvalente pour de tels scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!