Apakah Kepentingan -1 dalam Fungsi Pembentukan Semula NumPy?

Barbara Streisand
Lepaskan: 2024-10-20 22:10:30
asal
139 orang telah melayarinya

What is the Significance of -1 in NumPy's Reshape Function?

Memahami Peranan -1 dalam NumPy Reshape

Dalam NumPy, reshape ialah fungsi berkuasa yang membolehkan kita mengubah bentuk tatasusunan sambil mengekalkan data asas. Apabila menggunakan bentuk semula, kita boleh menentukan bentuk baharu tatasusunan sebagai satu tuple dimensi, tetapi kadangkala, kita mungkin menghadapi nilai enigmatik -1.

Merungkai Maksud -1

Kriteria untuk membentuk semula tatasusunan ialah bentuk baharu mestilah serasi dengan bentuk asal. Dalam konteks ini, -1 berfungsi sebagai pemegang tempat untuk dimensi yang tidak diketahui. Apabila kita menentukan satu dimensi sebagai -1, NumPy menentukan nilai sebenar dimensi itu berdasarkan jumlah panjang tatasusunan dan dimensi lain yang ditentukan.

Contoh Pembentukan Semula dengan -1

Mari kita pertimbangkan contoh untuk menggambarkan bagaimana -1 berfungsi dalam membentuk semula.

<code class="python">import numpy as np

z = np.array([[1, 2, 3, 4],
         [5, 6, 7, 8],
         [9, 10, 11, 12]])

print(z.shape)  # (3, 4)</code>
Salin selepas log masuk

Membentuk semula kepada (12,)

<code class="python">reshaped_z = z.reshape(-1)

print(reshaped_z.shape)  # (12,)</code>
Salin selepas log masuk

Dalam ini kes, bentuk baharu ditentukan sebagai (-1,), menunjukkan bahawa kita mahu tatasusunan 1D. NumPy mengira dimensi yang tidak diketahui sebagai 12, menghasilkan tatasusunan 1D yang mengandungi semua elemen tatasusunan asal.

Membentuk semula kepada (-1, 1)

<code class="python">reshaped_z = z.reshape(-1, 1)

print(reshaped_z.shape)  # (12, 1)</code>
Salin selepas log masuk

Di sini, NumPy mentafsirkan -1 sebagai dimensi baris yang tidak diketahui, manakala kami menentukan dimensi lajur sebagai 1. Hasilnya ialah tatasusunan 2D dengan 12 baris dan 1 lajur.

Membentuk semula kepada (1, - 1)

<code class="python">reshaped_z = z.reshape(1, -1)

print(reshaped_z.shape)  # (1, 12)</code>
Salin selepas log masuk

Dalam senario ini, kami menentukan bilangan baris sebagai 1, menjadikan bilangan lajur tidak diketahui. NumPy menentukan dimensi lajur sebagai 12, menghasilkan tatasusunan 2D dengan 1 baris dan 12 lajur.

Menggunakan -1 untuk Ciri Tunggal atau Sampel

Adalah penting untuk diperhatikan yang NumPy syorkan menggunakan (-1, 1) untuk membentuk semula data dengan satu ciri dan (1, -1) untuk data yang mengandungi satu sampel.

<code class="python"># Reshape for a single feature
single_feature = np.reshape(z, (-1, 1))

# Reshape for a single sample
single_sample = np.reshape(z, (1, -1))</code>
Salin selepas log masuk

Had -1

Walaupun -1 menawarkan fleksibiliti dalam membentuk semula, ia tidak boleh digunakan untuk menentukan kedua-dua dimensi sebagai tidak diketahui. Percubaan untuk berbuat demikian akan mencetuskan ValueError.

<code class="python"># Attempting to set both dimensions as -1
invalid_reshape = z.reshape(-1, -1)

# ValueError: can only specify one unknown dimension</code>
Salin selepas log masuk

Memahami peranan -1 dalam pembentukan semula NumPy adalah penting untuk membentuk semula tatasusunan dengan dimensi yang tidak diketahui, membolehkan kami memanipulasi data dengan berkesan sambil mengekalkan integritinya.

Atas ialah kandungan terperinci Apakah Kepentingan -1 dalam Fungsi Pembentukan Semula NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!