2D-Arrays in kleinere 2D-Subarrays aufteilen
Frage:
Können wir ein 2D-Array in kleinere unterteilen? 2D-Arrays in NumPy?
Beispiel:
Transformiert ein 2x4-Array in zwei 2x2-Arrays:
[[1,2,3,4] -> [[1,2] [3,4] [5,6,7,8]] [5,6] [7,8]]
Mechanismus:
Anstatt neue Arrays zu erstellen, besteht ein besserer Ansatz darin, das vorhandene Array mit reshape() und umzuformen Tauschen Sie Achsen mit swapaxes() aus.
Blockförmige Funktion:
Unten finden Sie die Implementierung der blockförmigen Funktion:
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))
Demo :
np.random.seed(365) c = np.arange(24).reshape((4, 6)) print(c) print(blockshaped(c, 2, 3))
Alternative Lösung:
Blockwise_view von SuperBatFish bietet eine weitere Option, die eine andere Blockanordnung und ansichtsbasierte Darstellung bietet.
Das obige ist der detaillierte Inhalt vonWie schneide ich ein 2D-Array in NumPy in kleinere 2D-Subarrays auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!