Kriteria yang harus dipenuhi untuk menyediakan bentuk baru adalah bahwa 'Bentuk baru harus kompatibel dengan bentuk asli'
numpy memungkinkan kita untuk memberikan salah satu parameter bentuk baru sebagai -1 (misalnya: (2, -1) atau (-1,3) tetapi tidak (-1, -1)). Ini hanya berarti bahwa itu adalah dimensi yang tidak diketahui dan kami ingin numpy mengetahuinya. Dan numpy akan mencari ini dengan melihat 'panjang array dan dimensi yang tersisa' dan memastikan itu memenuhi kriteria yang disebutkan di atas
Sekarang lihat contohnya.
z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12]])
z.shape
(3, 4)
Sekarang mencoba untuk membentuk kembali dengan (-1). Bentuk baru yang dihasilkan adalah (12,) dan kompatibel dengan bentuk asli (3,4)
z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
Sekarang mencoba untuk membentuk kembali dengan (-1, 1). Kami telah menyediakan kolom sebagai 1 tetapi baris sebagai tidak diketahui. Jadi kita mendapatkan hasil bentuk baru sebagai (12, 1). Lagi pula kompatibel dengan bentuk asli (3,4)
z.reshape(-1,1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8],
[ 9],
[10],
[11],
[12]])
Di atas konsisten dengan numpy
saran / pesan kesalahan, untuk digunakan reshape(-1,1)
untuk fitur tunggal; yaitu kolom tunggal
Bentuk kembali data Anda menggunakan array.reshape(-1, 1)
jika data Anda memiliki fitur tunggal
Bentuk baru sebagai (-1, 2). baris tidak diketahui, kolom 2. kita mendapatkan hasil bentuk baru seperti (6, 2)
z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8],
[ 9, 10],
[11, 12]])
Sekarang mencoba untuk menjaga kolom sebagai tidak dikenal. Bentuk baru sebagai (1, -1). yaitu baris 1, kolom tidak dikenal. kami mendapatkan hasil bentuk baru sebagai (1, 12)
z.reshape(1,-1)
array([[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]])
Di atas konsisten dengan numpy
saran / pesan kesalahan, untuk digunakan reshape(1,-1)
untuk sampel tunggal; yaitu satu baris
Bentuk kembali data Anda menggunakan array.reshape(1, -1)
jika itu berisi sampel tunggal
Bentuk baru (2, -1). Baris 2, kolom tidak dikenal. kami mendapatkan hasil bentuk baru sebagai (2,6)
z.reshape(2, -1)
array([[ 1, 2, 3, 4, 5, 6],
[ 7, 8, 9, 10, 11, 12]])
Bentuk baru sebagai (3, -1). Baris 3, kolom tidak dikenal. kami mendapatkan hasil bentuk baru sebagai (3,4)
z.reshape(3, -1)
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
Dan akhirnya, jika kita mencoba memberikan kedua dimensi sebagai tidak dikenal yaitu bentuk baru sebagai (-1, -1). Itu akan melempar kesalahan
z.reshape(-1, -1)
ValueError: can only specify one unknown dimension
reshape
untuk mempertahankan jumlah elemen yang sama.