Rumah > pembangunan bahagian belakang > Tutorial Python > Bolehkah Data Kumpulan NumPy Secara Cekap Berdasarkan Nilai Unik Lajur?

Bolehkah Data Kumpulan NumPy Secara Cekap Berdasarkan Nilai Unik Lajur?

DDD
Lepaskan: 2024-12-05 09:32:10
asal
749 orang telah melayarinya

Can NumPy Group Data Efficiently Based on a Column's Unique Values?

Bolehkah NumPy Kumpulan Data mengikut Lajur Diberi?

Pengenalan:

Data pengelompokan ialah operasi penting dalam banyak senario analisis data. NumPy, perpustakaan berangka yang berkuasa dalam Python, menawarkan pelbagai fungsi untuk memanipulasi tatasusunan, tetapi ia tidak mempunyai fungsi kumpulan khusus. Artikel ini menunjukkan cara untuk mencapai pengelompokan dalam NumPy tanpa penggunaan eksplisit fungsi khusus.

Soalan:

Adakah terdapat fungsi dalam NumPy untuk mengumpulkan tatasusunan mengikut tatasusunannya lajur pertama, seperti yang ditunjukkan dalam tatasusunan yang disediakan?

array([[ 1, 275],
       [ 1, 441],
       [ 1, 494],
       [ 1, 593],
       [ 2, 679],
       [ 2, 533],
       [ 2, 686],
       [ 3, 559],
       [ 3, 219],
       [ 3, 455],
       [ 4, 605],
       [ 4, 468],
       [ 4, 692],
       [ 4, 613]])
Salin selepas log masuk

Dijangka Output:

array([[[275, 441, 494, 593]],
       [[679, 533, 686]],
       [[559, 219, 455]],
       [[605, 468, 692, 613]]], dtype=object)
Salin selepas log masuk

Jawapan:

Walaupun NumPy tidak secara eksplisit menyediakan fungsi "kumpulan mengikut", ia menawarkan pendekatan alternatif yang diilhamkan oleh Eelco Hoogendoorn's perpustakaan. Pendekatan ini bergantung pada andaian bahawa lajur pertama tatasusunan sentiasa meningkat. Jika ini tidak berlaku, mengisih tatasusunan mengikut lajur pertama adalah perlu menggunakan:

a = a[a[:, 0].argsort()]
Salin selepas log masuk

Menggunakan andaian untuk meningkatkan nilai lajur pertama, kod berikut melaksanakan operasi pengumpulan:

np.split(a[:, 1], np.unique(a[:, 0], return_index=True)[1][1:])
Salin selepas log masuk

Kod ini mengelompokkan elemen tatasusunan ke dalam subarray secara berkesan berdasarkan nilai unik dalam lajur pertama. Setiap subbaris mewakili kumpulan, yang mengandungi nilai lajur kedua untuk semua elemen dengan nilai lajur pertama yang sama.

Pertimbangan Tambahan:

  • Kerumitan kaedah ini ialah O (n log(n)) disebabkan oleh operasi pengisihan.
  • Senarai hasil ialah tatasusunan NumPy, menghapuskan keperluan untuk operasi penukaran untuk operasi NumPy berikutnya.
  • Perbandingan Prestasi: Kaedah ini secara empirikal ditunjukkan lebih pantas daripada pendekatan pengelompokan lain, termasuk Panda dan lalai, untuk set data yang lebih kecil.

Oleh itu, NumPy menyediakan cara yang fleksibel dan cekap untuk mengumpulkan data dengan menggunakan manipulasi tatasusunan dan fungsi pengisihan, walaupun tanpa fungsi pengumpulan khusus.

Atas ialah kandungan terperinci Bolehkah Data Kumpulan NumPy Secara Cekap Berdasarkan Nilai Unik Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan