Heim > Backend-Entwicklung > Python-Tutorial > Wie schneide ich ein 2D-Array in NumPy in kleinere 2D-Subarrays auf?

Wie schneide ich ein 2D-Array in NumPy in kleinere 2D-Subarrays auf?

Mary-Kate Olsen
Freigeben: 2024-11-08 07:08:02
Original
313 Leute haben es durchsucht

How to Slice a 2D Array into Smaller 2D Subarrays in NumPy?

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]]
Nach dem Login kopieren

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))
Nach dem Login kopieren

Demo :

np.random.seed(365)
c = np.arange(24).reshape((4, 6))
print(c)

print(blockshaped(c, 2, 3))
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage