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