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
Mary-Kate OlsenOriginal
2024-11-09 07:44:02368Durchsuche

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))

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]]

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]]]

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!

Stellungnahme:
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