Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menghimpunkan Elemen Tatasusunan NumPy Berdasarkan Lajur Tertentu?
Kumpulkan Mengikut Fungsi dalam NumPy
NumPy menyediakan beberapa fungsi untuk manipulasi tatasusunan, termasuk operasi untuk mengumpulkan elemen. Satu operasi sedemikian ialah groupby, yang membolehkan anda mengumpulkan elemen dalam tatasusunan berdasarkan kunci yang ditentukan.
Masalah Khusus
Pertimbangkan tatasusunan berikut a:
a = 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]])
Andaikan anda mahu mengumpulkan elemen dalam satu berdasarkan lajur pertama. Dalam kes ini, anda menjangkakan outputnya ialah:
array([[[275, 441, 494, 593]], [[679, 533, 686]], [[559, 219, 455]], [[605, 468, 692, 613]]], dtype=object)
Penyelesaian
Walaupun tiada fungsi kumpulan mengikut langsung dalam NumPy, adalah mungkin untuk mencapai ini menggunakan pendekatan berikut:
# Sort the array by the first column a = a[a[:, 0].argsort()] # Find the unique values in the first column as keys keys = np.unique(a[:, 0]) # Create an array to hold the grouped elements grouped = [] # Iterate through the keys for key in keys: # Create a mask to select elements with the given key mask = (a[:, 0] == key) # Append the selected elements to the grouped array grouped.append(a[mask][:, 1])
Penyelesaian ini mengelompokkan elemen dalam tatasusunan dengan cekap berdasarkan lajur pertama, walaupun ia tidak menggunakan fungsi kumpulan mengikut secara eksplisit.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghimpunkan Elemen Tatasusunan NumPy Berdasarkan Lajur Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!