Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menghiris Tatasusunan 2D kepada Tatasusunan 2D yang Lebih Kecil dengan NumPy?
Menghiris Tatasusunan 2D kepada Tatasusunan 2D yang Lebih Kecil dengan Numpy
Selalunya, ia menjadi perlu untuk memisahkan tatasusunan 2D kepada tatasusunan 2D yang lebih kecil. Sebagai contoh, pertimbangkan tugas membahagikan tatasusunan 2x4 kepada dua tatasusunan 2x2.
Penyelesaian:
Gabungan bentuk semula dan fungsi swapax terbukti berkesan dalam senario ini:
import numpy as np def blockshaped(arr, nrows, ncols): """ Converts a 2D array into a 3D array with smaller subblocks. """ h, w = arr.shape assert h % nrows == 0, f"{h} rows is not divisible by {nrows}" assert w % ncols == 0, f"{w} columns is not divisible by {ncols}" return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols))
Contoh Penggunaan:
Pertimbangkan tatasusunan berikut:
c = np.arange(24).reshape((4, 6)) print(c)
Output:
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11] [12 13 14 15 16 17] [18 19 20 21 22 23]]
Menghiris ini tatasusunan menjadi blok yang lebih kecil:
print(blockshaped(c, 2, 3))
Output:
[[[ 0 1 2] [ 6 7 8]] [[ 3 4 5] [ 9 10 11]] [[12 13 14] [18 19 20]] [[15 16 17] [21 22 23]]]
Nota Tambahan:
Atas ialah kandungan terperinci Bagaimana untuk Menghiris Tatasusunan 2D kepada Tatasusunan 2D yang Lebih Kecil dengan NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!