Découper des tableaux 2D en sous-tableaux 2D plus petits
Question :
Pouvons-nous subdiviser un tableau 2D en plus petits Tableaux 2D dans NumPy ?
Exemple :
Transformer un tableau 2x4 en deux tableaux 2x2 :
[[1,2,3,4] -> [[1,2] [3,4] [5,6,7,8]] [5,6] [7,8]]
Mécanisme :
Au lieu de créer de nouveaux tableaux, une meilleure approche consiste à remodeler le tableau existant à l'aide de reshape() et échangez les axes à l'aide de swapaxes().
Fonction Blockshape :
Vous trouverez ci-dessous l'implémentation de la fonction blockshape :
def blockshaped(arr, nrows, ncols): """ Partitions an array into blocks. Args: arr (ndarray): The original array. nrows (int): Number of rows in each block. ncols (int): Number of columns in each block. Returns: ndarray: Partitioned array. """ 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))
Démo :
np.random.seed(365) c = np.arange(24).reshape((4, 6)) print(c) print(blockshaped(c, 2, 3))
Alternative Solution :
blockwise_view de SuperBatFish fournit une autre option, offrant une disposition de blocs différente et une représentation basée sur la vue.
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!