Reshape Array NumPy

Merubah bentuk array

Merubah bentuk bermaksud mengubah bentuk array.

Bentuk array adalah jumlah elemen di dalam setiap dimensi.

Dengan merubah bentuk, kami boleh menambah atau menghapuskan dimensi atau mengubah jumlah elemen di dalam setiap dimensi.

Dari 1-D kepada 2-D

Contoh

Tukar array 1-D yang mempunyai 12 elemen kepada array 2-D.

Dimensi luar paling besar akan mempunyai 4 array, di mana setiap array mengandungi 3 elemen:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(4, 3)
print(newarr)

Jalankan Contoh

Dari 1-D kepada 3-D

Contoh

Tukar array 1-D yang mempunyai 12 elemen kepada array 3-D.

Dimensi luar paling besar akan mempunyai 2 array, di mana setiap array mengandungi 3 array, dan setiap array mengandungi 2 elemen:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
newarr = arr.reshape(2, 3, 2)
print(newarr)

Jalankan Contoh

Kami boleh merubah bentuk kepada apa sahaja?

Ya, selama elemen yang diperlukan untuk merubah bentuk adalah sama di kedua bentuk.

Kami boleh merubah array 1D 8 elemen kepada 4 elemen di dalam 2 baris array 2D, tetapi kami tidak boleh merubahnya kepada array 3 baris 3 elemen 2D kerana ia memerlukan 3x3 = 9 elemen.

Contoh

Cuba mengubah array 1D yang mempunyai 8 elemen kepada array 2D dengan setiap dimensi mempunyai 3 elemen (akan menghasilkan ralat):

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(3, 3)
print(newarr)

Jalankan Contoh

Kembalikan salinan atau papar?

Contoh

Periksa sama ada array yang diperoleh adalah salinan atau papar

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
print(arr.reshape(2, 4).base)

Jalankan Contoh

Contoh di atas mengembalikan array asal, jadi ia adalah paparan.

Dimensi Tak Diketahui

Anda boleh gunakan satu 'dimensi yang tak diketahui'.

Ini bermakna anda tidak perlu menentukan nombor pasti untuk salah satu dimensi dalam kaedah reshape.

Diambil -1 Sebagai nilai, NumPy akan menghitung nombor ini untuk anda.

Contoh

Mengubah array 1D yang mengandungi 8 elemen kepada array 3D dengan 2x2 elemen:

import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8])
newarr = arr.reshape(2, 2, -1)
print(newarr)

Jalankan Contoh

Keterangan:Kami tidak boleh mengubah -1 Diambil untuk lebih daripada satu dimensi.

Pempanasan Array

Pempanasan array (Flattening the arrays) adalah untuk merubah array multidimensi kepada array 1D.

Kami boleh gunakan reshape(-1) Untuk mencapai ini.

Contoh

Mengubah array kepada array 1D:

import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
newarr = arr.reshape(-1)
print(newarr)

Jalankan Contoh

Keterangan:Ada banyak fungsi yang boleh diubah bentuk array flatten, ravel, dan dapat diatur semula elemen rot90, flip, fliplr, flipud. Fungsi ini termasuk bahagian menengah hingga tinggi numpy.