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.Digunakan untuk membentuk kembali sebuah array.
Katakanlah kita memiliki array dimensi 3 dimensi 2 x 10 x 10:
Sekarang kami ingin membentuk kembali menjadi 5 X 5 x 8:
akan melakukan pekerjaan itu.
Perhatikan bahwa, setelah Anda memperbaiki redup pertama = 5 dan redup kedua = 5, Anda tidak perlu menentukan dimensi ketiga. Untuk membantu kemalasan Anda, python memberikan opsi -1:
akan memberi Anda array bentuk = (5, 5, 8).
Juga,
akan memberi Anda array bentuk = (50, 4)
Anda dapat membaca lebih lanjut di http://anie.me/numpy-reshape-transpose-theano-dimshuffle/
sumber
Menurut
the documentation
:sumber
[8]
karena dokumentasi mengatakan demikian (1-D array
). Cobanumpy.reshape(a, [8])
. Ini menghasilkan hasil yang sama dengannumpy.reshape(a, [1,8])
untuk matriks.numpy.reshape (a, newshape, order {}) periksa tautan di bawah untuk informasi lebih lanjut. https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
untuk contoh di bawah ini Anda menyebutkan output menjelaskan vektor yang dihasilkan menjadi satu baris. (- 1) menunjukkan jumlah baris menjadi 1. jika
keluaran:
matriks ([[1, 2, 3, 4, 5, 6, 7, 8]])
ini dapat dijelaskan lebih tepat dengan contoh lain:
output: (adalah array kolom 1 dimensi)
array ([[0],
b = np.arange (10) .reshape ((1, -1))
output: (adalah array baris 1 dimensi)
array ([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]))
sumber
Cukup mudah dimengerti. "-1" adalah singkatan dari "dimensi tidak diketahui" yang dapat disimpulkan dari dimensi lain. Dalam hal ini, jika Anda mengatur matriks Anda seperti ini:
Ubah matriks Anda seperti ini:
Ini akan memanggil beberapa operasi tuli untuk matriks a, yang akan mengembalikan 1-d numpy array / martrix.
Namun, saya pikir itu bukan ide yang baik untuk menggunakan kode seperti ini. Kenapa tidak mencoba:
Ini akan memberi Anda hasil yang sama dan lebih jelas bagi pembaca untuk memahami: Tetapkan b sebagai bentuk lain dari a. Untuk a, kita tidak berapa banyak kolom yang seharusnya (atur ke -1!), Tetapi kita menginginkan array 1 dimensi (atur parameter pertama menjadi 1!).
sumber
Singkat cerita : Anda menetapkan beberapa dimensi dan membiarkan NumPy mengatur sisanya.
sumber
Ini hanya berarti bahwa Anda tidak yakin tentang jumlah baris atau kolom yang dapat Anda berikan dan Anda meminta numpy untuk menyarankan jumlah kolom atau baris untuk dibentuk kembali.
numpy memberikan contoh terakhir untuk -1 https://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html
periksa kode di bawah ini dan hasilnya untuk lebih memahami tentang (-1):
KODE:-
OUTPUT: -
sumber
sumber
Hasil akhir dari konversi adalah bahwa jumlah elemen dalam array akhir sama dengan array awal atau bingkai data.
-1 berhubungan dengan jumlah baris atau kolom yang tidak diketahui. kita dapat menganggapnya sebagai
x
(tidak diketahui).x
diperoleh dengan membagi jumlah elemen dalam array asli dengan nilai lain dari pasangan yang dipesan dengan -1.Contohnya
12 elemen dengan membentuk kembali (-1,1) sesuai dengan array dengan
x
= 12/1 = 12 baris dan 1 kolom.12 elemen dengan membentuk kembali (1, -1) sesuai dengan array dengan 1 baris dan
x
= 12/1 = 12 kolom.sumber