Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich ein NumPy 2D-Array in kleinere 2D-Arrays aufteilen?

Wie kann ich ein NumPy 2D-Array in kleinere 2D-Arrays aufteilen?

Mary-Kate Olsen
Freigeben: 2024-11-09 07:44:02
Original
352 Leute haben es durchsucht

How can I divide a NumPy 2D array into smaller 2D arrays?

2D-Arrays in kleinere Arrays schneiden

Problem:
Sie möchten ein zweidimensionales ( 2D) NumPy-Array in kleinere 2D-Arrays. Beispielsweise möchten Sie möglicherweise ein 2x4-Array in zwei 2x2-Arrays umwandeln.

Lösung:
Eine Kombination aus Reshape- und Swapaxes-Funktionen ermöglicht es Ihnen, Ihr Array in „Blöcke“ zu unterteilen. " Hier ist eine Python-Implementierung, die dies erreicht:

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

In dieser Lösung:

  • nrows und ncols definieren die Abmessungen jedes kleineren Arrays.
  • Sie müssen sicherstellen dass das Eingabearray durch diese Werte gleichmäßig teilbar ist.
  • Die Reshape-Funktion ordnet das Array in Blöcke neu.
  • Die Swapaxes-Funktion vertauscht die Achsen, um die gewünschte Form zu erhalten.
  • Durch die endgültige Umformung wird das Array in eine Folge kleinerer Blöcke abgeflacht.

Beispiel:

Betrachten Sie das folgende Eingabearray:

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

Mit blockförmig mit nrows=2 und ncols=3 können Sie dieses Array in die folgenden Blöcke fragmentieren:

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

Diese Demonstration zeigt, wie Sie ein 2D-Array in kleinere rechteckige Arrays mit bestimmten Abmessungen aufteilen können.

Das obige ist der detaillierte Inhalt vonWie kann ich ein NumPy 2D-Array in kleinere 2D-Arrays aufteilen?. 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