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

Barbara Streisand
Lepaskan: 2024-10-21 17:56:03
asal
602 orang telah melayarinya

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])
Salin selepas log masuk

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')])
Salin selepas log masuk

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!

sumber:php
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!