Maison > Article > développement back-end > Comment découper un tableau 2D en tableaux 2D plus petits avec NumPy ?
Découper un tableau 2D en tableaux 2D plus petits avec Numpy
Souvent, il devient nécessaire de diviser un tableau 2D en tableaux 2D plus petits. Par exemple, considérons la tâche consistant à diviser un tableau 2x4 en deux tableaux 2x2.
Solution :
Une combinaison de fonctions de remodelage et de swapaxes s'avère efficace dans ce scénario :
import numpy as np def blockshaped(arr, nrows, ncols): """ Converts a 2D array into a 3D array with smaller subblocks. """ h, w = arr.shape assert h % nrows == 0, f"{h} rows is not divisible by {nrows}" assert w % ncols == 0, f"{w} columns is not divisible by {ncols}" return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols))
Exemple d'utilisation :
Considérez le tableau suivant :
c = np.arange(24).reshape((4, 6)) print(c)
Sortie :
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
Découper ceci tableau en blocs plus petits :
print(blockshaped(c, 2, 3))
Sortie :
[[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
Remarques supplémentaires :
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!