Cara Cekap untuk Mencari Baris Tertentu dalam Tatasusunan NumPy: Soalan dan Penyelesaian

Susan Sarandon
Lepaskan: 2024-10-21 18:22:03
asal
872 orang telah melayarinya

Efficient Ways to Find a Specific Row in a NumPy Array: Questions and Solutions

Mencari Contoh Baris Tertentu dalam Tatasusunan NumPy Dengan Cekap

Apabila bekerja dengan tatasusunan NumPy, seseorang mungkin menghadapi keperluan untuk menentukan sama ada tatasusunan mengandungi baris tertentu, tetapi kaedah mengandungi standard untuk ndarray menimbulkan persoalan. Artikel ini membentangkan penyelesaian yang cekap dan Pythonic untuk isu ini.

Satu pendekatan melibatkan menukar tatasusunan NumPy kepada senarai Python menggunakan .tolist() dan melaksanakan semakan keahlian pada senarai.

a = np.array([[1,2],[10,20],[100,200]])
[1,2] in a.tolist() # Returns True
[1,20] in a.tolist() # Returns False
Salin selepas log masuk

Kaedah lain ialah menggunakan paparan pada tatasusunan dan menggunakan fungsi .all(1) untuk membandingkan setiap baris dengan elemen baris sasaran dari segi.

any((a[:]==[1,2]).all(1)) # Returns True
any((a[:]==[1,20]).all(1)) # Returns False
Salin selepas log masuk

Selain itu, seseorang boleh menjana melalui senarai NumPy untuk peningkatan prestasi yang berpotensi. Walau bagaimanapun, pendekatan ini boleh menjadi tidak cekap jika keputusan tidak ditemui lebih awal.

any(([1,2] == x).all() for x in a) # Stops on first occurrence
Salin selepas log masuk

Akhir sekali, fungsi logik NumPy menyediakan cara ringkas untuk melakukan perbandingan.

any(np.equal(a,[1,2]).all(1)) # Returns True
Salin selepas log masuk

Hasil penanda aras menunjukkan bahawa rutin numpy mengekalkan kelajuan carian yang konsisten tanpa mengira senario hit atau miss. Pandangan, logik sama dan Python dalam pendekatan pengendali adalah setanding dari segi kecekapan, manakala penjana atas NumPy tidak disyorkan untuk carian tatasusunan penuh.

Atas ialah kandungan terperinci Cara Cekap untuk Mencari Baris Tertentu dalam Tatasusunan NumPy: Soalan dan Penyelesaian. 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!