Maison > développement back-end > Tutoriel Python > Comment découper un tableau Numpy 2D en tableaux 2D plus petits ?

Comment découper un tableau Numpy 2D en tableaux 2D plus petits ?

Susan Sarandon
Libérer: 2024-11-11 21:27:02
original
721 Les gens l'ont consulté

How to Slice a 2D Numpy Array into Smaller 2D Arrays?

Découper des tableaux 2D en tableaux 2D plus petits avec Numpy

Numpy est une bibliothèque polyvalente permettant de manipuler des tableaux multidimensionnels en Python. Il propose diverses méthodes de manipulation des tableaux, notamment le découpage pour extraire des sections spécifiques. Cet article explore une solution pour découper un tableau 2D en tableaux 2D plus petits, en émulant l'exemple fourni :

[[1,2,3,4],   ->    [[1,2] [3,4]   
 [5,6,7,8]]          [5,6] [7,8]]
Copier après la connexion

L'approche Reshape et Swapaxes

La solution suggérée exploite les fonctions reshape et swapaxes pour obtenir le découpage souhaité. La fonction reshape modifie la forme du tableau et la fonction swapaxes modifie les axes spécifiés. Dans le code Python suivant, la fonction blockshape encapsule cette approche :

def blockshaped(arr, nrows, ncols):
    h, w = arr.shape
    return (arr.reshape(h//nrows, nrows, -1, ncols)
               .swapaxes(1,2)
               .reshape(-1, nrows, ncols))
Copier après la connexion

Explication :

  • h, w = arr.shape : stocke les dimensions du tableau d'entrée arr.
  • arr.reshape(h//nrows, nrows, -1, ncols) : remodèle le tableau en un tableau à 4 dimensions. Les deux premières dimensions garantissent qu'il comporte des blocs h/nrows, chacun contenant des lignes nrows. La troisième dimension est utilisée pour préserver les colonnes, et la quatrième dimension a des colonnes ncols dans chaque bloc.
  • swapaxes(1,2) : permute les deuxième et troisième dimensions, ce qui permute efficacement les blocs le long des lignes et columns.
  • reshape(-1, nrows, ncols) : remodèle le tableau à la forme souhaitée, composé de h/nrows * w/ncols tableaux 2D, chacun avec des nrows et des ncols.

Exemple d'utilisation

Pour illustrer l'utilisation, considérons l'exemple de tableau c:

np.random.seed(365)
c = np.arange(24).reshape((4, 6))
Copier après la connexion

Slicing c en blocs de 2x3 :

sliced = blockshaped(c, 2, 3)
Copier après la connexion

les tranches contiendront la 2D souhaitée blocs :

[[[ 0  1  2]
  [ 6  7  8]]

 [[ 3  4  5]
  [ 9 10 11]]

 [[12 13 14]
  [18 19 20]]

 [[15 16 17]
  [21 22 23]]]
Copier après la connexion

Conclusion

Cette solution montre comment découper un tableau numpy 2D en tableaux 2D plus petits à l'aide des fonctions reshape et swapaxes. Il offre une approche flexible et efficace pour traiter et manipuler des images ou d'autres matrices.

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