Maison > Article > développement back-end > Comment puis-je diviser un tableau NumPy 2D en tableaux 2D plus petits ?
Découper des tableaux 2D en tableaux plus petits
Problème :
Vous souhaitez fragmenter un élément bidimensionnel ( 2D) Tableau NumPy en tableaux 2D plus petits. Par exemple, vous souhaiterez peut-être transformer un tableau 2x4 en deux tableaux 2x2.
Solution :
Une combinaison de fonctions de remodelage et de swapaxes vous permet de diviser votre tableau en "blocs". " Voici une implémentation Python qui y parvient :
def blockshaped(arr, nrows, ncols): h, w = arr.shape assert h % nrows == 0, f"{h} rows is not evenly divisible by {nrows}" assert w % ncols == 0, f"{w} cols is not evenly divisible by {ncols}" return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols))
Dans cette solution :
Exemple :
Considérez le tableau d'entrée suivant :
c = np.arange(24).reshape((4, 6)) print(c) [out]: [[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
En utilisant blockshape avec nrows=2 et ncols=3, vous pouvez fragmenter ce tableau en blocs suivants :
print(blockshaped(c, 2, 3)) [out]: [[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
Cette démonstration illustre comment découper un tableau 2D en tableaux rectangulaires plus petits de dimensions spécifiées.
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!