Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Barbara Streisandasal
2024-11-01 00:09:28521semak imbas

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>

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>

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>
  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>

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>

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:
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