Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Memelihara Jenis Data dalam Gabungan Tatasusunan NumPy: Tatasusunan Rekod lwn Tatasusunan Berstruktur

Memelihara Jenis Data dalam Gabungan Tatasusunan NumPy: Tatasusunan Rekod lwn Tatasusunan Berstruktur

Patricia Arquette
Patricia Arquetteasal
2024-10-21 18:00:04371semak imbas

Preserving Data Types in NumPy Array Concatenation: Record Arrays vs. Structured Arrays

Menggabungkan Tatasusunan NumPy dengan Jenis Data Berbeza

Mencipta tatasusunan NumPy tunggal yang menggabungkan data daripada berbilang tatasusunan dengan djenis berbeza boleh menjadi satu cabaran. Satu pendekatan biasa melibatkan penggunaan fungsi concatenate(), tetapi ini boleh mengakibatkan keseluruhan tatasusunan ditukar kepada satu jenis data, seperti rentetan. Ini boleh menjadi tidak cekap dari segi penggunaan memori.

Penyelesaian: Tatasusunan Rekod

Untuk mengekalkan jenis data asal semasa menggabungkan tatasusunan, pertimbangkan untuk menggunakan tatasusunan rekod. Tatasusunan rekod membolehkan anda membuat tatasusunan berstruktur dengan lajur bernama, setiap satu mempunyai jenis datanya sendiri. Pendekatan ini membolehkan anda mengakses lajur individu dengan namanya, sama seperti atribut objek Python.

Untuk mencipta tatasusunan rekod, anda boleh menggunakan fungsi rec.fromarrays() daripada modul numpy:

<code class="python">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'))</code>

Kod ini mencipta tatasusunan rekod bernama rekod dengan dua lajur: 'kunci' dengan jenis data rentetan dan 'data' dengan jenis data integer.

Tatasusunan Berstruktur

Pilihan lain untuk menggabungkan tatasusunan dengan jenis d yang berbeza ialah membuat tatasusunan berstruktur secara langsung. Tatasusunan berstruktur adalah serupa dengan tatasusunan rekod tetapi tidak menyediakan akses atribut kepada lajur individu:

<code class="python">arr = np.array([('a', 0), ('b', 1)], 
                dtype=([('keys', '|S1'), ('data', 'i8')]))</code>

Kod ini mencipta tatasusunan berstruktur bernama arr dengan dua lajur: 'kunci' dengan jenis data rentetan dan 'data ' dengan jenis data integer.

Pendekatan Manakah yang Lebih Baik?

Pendekatan terbaik untuk kes penggunaan khusus anda bergantung pada keperluan anda. Tatasusunan rekod lebih mudah digunakan, terutamanya jika anda perlu mengakses lajur individu mengikut nama. Tatasusunan berstruktur adalah lebih cekap untuk penggunaan memori jika anda tidak memerlukan akses atribut.

Atas ialah kandungan terperinci Memelihara Jenis Data dalam Gabungan Tatasusunan NumPy: Tatasusunan Rekod lwn Tatasusunan Berstruktur. 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