Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menggabungkan Tatasusunan dengan Jenis Data Berbeza dan Mengekalkan Kecekapan Memori?

Bagaimana untuk Menggabungkan Tatasusunan dengan Jenis Data Berbeza dan Mengekalkan Kecekapan Memori?

Barbara Streisand
Barbara Streisandasal
2024-10-21 17:56:03594semak imbas

How to Concatenate Arrays with Different Datatypes and Maintain Memory Efficiency?

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!

Kenyataan:
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