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]])
Dijangka Output:
array([[[275, 441, 494, 593]], [[679, 533, 686]], [[559, 219, 455]], [[605, 468, 692, 613]]], dtype=object)
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()]
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:])
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:
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!