Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menukar Tatasusunan Indeks kepada Tatasusunan Berekod Satu-Hot dalam NumPy?

Bagaimana untuk Menukar Tatasusunan Indeks kepada Tatasusunan Berekod Satu-Hot dalam NumPy?

Barbara Streisand
Lepaskan: 2024-11-01 00:09:28
asal
690 orang telah melayarinya

How to Convert an Array of Indices to a One-Hot Encoded Array in NumPy?

Menukar Tatasusunan Indeks kepada Tatasusunan Berekod Satu-Hot dalam NumPy

Selalunya, ia menjadi perlu untuk mengubah tatasusunan indeks 1D ke dalam tatasusunan 2D di mana setiap baris mewakili pengekodan satu-panas indeks yang sepadan dalam tatasusunan asal.

Contoh:

Mari kita mempunyai tatasusunan 1D indeks ' a':

<code class="python">a = np.array([1, 0, 3])</code>
Salin selepas log masuk

Kami menyasarkan untuk mencipta tatasusunan 2D 'b' di mana setiap baris adalah pengekodan satu panas bagi indeks yang sepadan dalam 'a':

<code class="python">b = np.array([[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1]])</code>
Salin selepas log masuk

Penyelesaian:

Untuk mencapai transformasi ini, kita boleh menggunakan langkah berikut:

  1. Penciptaan Tatasusunan Sifar:
    Buat sifar tatasusunan 'b' dengan lajur yang mencukupi untuk menampung nilai indeks maksimum dalam 'a', tambah satu ('a.max() 1').
<code class="python">b = np.zeros((a.size, a.max() + 1))</code>
Salin selepas log masuk
  1. Satu -Pengekodan Panas:
    Untuk setiap baris 'i' dalam tatasusunan, tetapkan lajur 'a[i]' kepada 1. Langkah ini mengubah setiap indeks dalam 'a' menjadi baris berkod satu panas dalam 'b'.
<code class="python">b[np.arange(a.size), a] = 1</code>
Salin selepas log masuk

Output:

Melaksanakan kod ini menghasilkan tatasusunan terkod satu-panas yang dikehendaki 'b':

<code class="python">[[ 0.  1.  0.  0.]
 [ 1.  0.  0.  0.]
 [ 0.  0.  0.  1.]]</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar Tatasusunan Indeks kepada Tatasusunan Berekod Satu-Hot dalam NumPy?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China 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