Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Memilih Lajur Khusus setiap Baris dengan Cekap dalam NumPy Menggunakan Senarai atau Tatasusunan Boolean?

Bagaimana untuk Memilih Lajur Khusus setiap Baris dengan Cekap dalam NumPy Menggunakan Senarai atau Tatasusunan Boolean?

DDD
DDDasal
2024-11-01 10:52:30343semak imbas

How to Efficiently Select Specific Columns per Row in NumPy Using Lists or Boolean Arrays?

Memilih Lajur Khusus setiap Baris dalam NumPy Dengan Cekap Menggunakan Senarai atau Tatasusunan Boolean

NumPy menawarkan keupayaan yang luas untuk memanipulasi tatasusunan pelbagai dimensi. Walau bagaimanapun, memilih lajur tertentu berdasarkan senarai indeks untuk setiap baris boleh mencabar dan menuntut penyelesaian yang cekap.

Satu pendekatan untuk menyelesaikan isu ini ialah menggunakan tatasusunan boolean. Setiap lajur tatasusunan boolean boleh mewakili pemilihan yang diingini untuk baris tertentu. Dengan menggunakan pemilihan langsung dengan tatasusunan boolean, lajur tertentu boleh diekstrak dengan cekap. Contohnya:

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

a = np.array([1, 2, 3])
b = np.array([[False, True, False], [True, False, False], [False, False, True]])
a[b]
# Output: [2, 4, 9]</code>

Sebagai alternatif, anda boleh membuat tatasusunan yang mewakili julat lajur dan menggunakan pemilihan langsung padanya. Pendekatan ini, walau bagaimanapun, mungkin tidak sentiasa optimum.

<code class="python">a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
a[np.arange(len(a)), [1, 0, 2]]
# Output: [2, 4, 9]</code>

Dengan memanfaatkan kaedah ini, adalah wajar untuk memilih lajur khusus setiap baris dengan cekap dalam tatasusunan NumPy, tidak kira sama ada kriteria pemilihan disediakan sebagai senarai indeks atau tatasusunan boolean.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Lajur Khusus setiap Baris dengan Cekap dalam NumPy Menggunakan Senarai atau Tatasusunan Boolean?. 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