Maison > développement back-end > Tutoriel Python > Comment extraire efficacement des sous-tableaux avec une foulée spécifique dans NumPy ?

Comment extraire efficacement des sous-tableaux avec une foulée spécifique dans NumPy ?

Susan Sarandon
Libérer: 2024-12-06 09:41:11
original
819 Les gens l'ont consulté

How to Efficiently Extract Subarrays with a Specific Stride in NumPy?

Extraction de sous-tableaux avec Stride à l'aide de NumPy

Étant donné un tableau NumPy, il est souvent nécessaire de le partitionner en sous-tableaux avec des foulées spécifiques. Cette question explore comment y parvenir efficacement en utilisant la diffusion et les progrès NumPy.

Solution 1 : Diffusion

La fonction Broadcasting_app utilise la diffusion pour construire les sous-tableaux souhaités. Il calcule le nombre de lignes en fonction de la taille du tableau, de la longueur du sous-tableau et de la foulée. Il utilise ensuite la diffusion pour créer un nouveau tableau où chaque ligne représente un sous-tableau.

Solution 2 : NumPy Strides

La fonction stried_app utilise le mécanisme efficace de gestion des foulées de NumPy. Il calcule le nombre de lignes et de foulées comme auparavant. Ensuite, il exploite la fonction as_strided pour créer un nouveau tableau avec les foulées et la forme souhaitées.

Exemple d'utilisation

Pour illustrer ces solutions, considérons le code Python suivant :

import numpy as np

a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
L = 5  # Subarray length
S = 3  # Stride

print(broadcasting_app(a, L, S))
print(strided_app(a, L, S))
Copier après la connexion

Sortie :

[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
[[ 1  2  3  4  5]
 [ 4  5  6  7  8]
 [ 7  8  9 10 11]]
Copier après la connexion

Les deux approches produisent la matrice de sous-réseau souhaitée efficacement.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal