Maison  >  Article  >  développement back-end  >  Quels sont les avantages d’un filtrage efficace par moyenne mobile à l’aide de Strides et quand l’utiliser ?

Quels sont les avantages d’un filtrage efficace par moyenne mobile à l’aide de Strides et quand l’utiliser ?

DDD
DDDoriginal
2024-10-19 11:26:29328parcourir

What are the Benefits of Efficient Moving Average Filtering Using Strides and when to Use it?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn