Menggabungkan Tatasusunan dengan Berbilang Jenis Data
Apabila berurusan dengan data pelbagai jenis, selalunya perlu untuk menggabungkannya menjadi satu tatasusunan. Ini boleh dilakukan dengan cekap tanpa menukar keseluruhan tatasusunan kepada satu jenis data.
Pertimbangkan senario berikut: Anda mempunyai dua tatasusunan, A mengandungi rentetan dan B mengandungi integer. Matlamatnya adalah untuk mencipta tatasusunan gabungan combined_array di mana setiap lajur mengekalkan jenis data asalnya.
Semasa menggabungkan A dan B dengan np.concatenate sebagai combined_array = np.concatenate((A, B), axis = 1) muncul mudah, ia menukar keseluruhan tatasusunan kepada dtype=rentetan secara lalai, mengakibatkan ketidakcekapan ingatan.
Penyelesaian: Catat Tatasusunan dan Tatasusunan Berstruktur
Pendekatan yang berkesan ialah menggunakan tatasusunan rekod atau tatasusunan berstruktur.
Tatasusunan Rekod:
Tatasusunan rekod menawarkan cara yang fleksibel untuk menyimpan berbilang jenis data dalam tatasusunan tunggal. Medan individu boleh diakses melalui atribut:
import numpy as np a = np.array(['a', 'b', 'c', 'd', 'e']) b = np.arange(5) records = np.rec.fromarrays((a, b), names=('keys', 'data')) print(records) # rec.array([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)], # dtype=[('keys', '|S1'), ('data', '<i8')]) print(records['keys']) # rec.array(['a', 'b', 'c', 'd', 'e'], # dtype='|S1') print(records['data']) # array([0, 1, 2, 3, 4])
Array Berstruktur:
Sama seperti tatasusunan rekod, tatasusunan berstruktur membenarkan spesifikasi jenis data untuk setiap medan :
arr = np.array([('a', 0), ('b', 1)], dtype=([('keys', '|S1'), ('data', 'i8')])) print(arr) # array([('a', 0), ('b', 1)], # dtype=[('keys', '|S1'), ('data', '<i8')])
Perhatikan bahawa tatasusunan rekod menyediakan akses atribut manakala tatasusunan berstruktur tidak.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Tatasusunan dengan Jenis Data Berbeza dan Mengekalkan Kecekapan Memori?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!