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))
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]]
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!