Comment concaténer des tableaux avec différents types de données et maintenir l'efficacité de la mémoire ?

Barbara Streisand
Libérer: 2024-10-21 17:56:03
original
602 Les gens l'ont consulté

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

Concaténation de tableaux avec plusieurs types de données

Lorsque vous traitez des données de différents types, il est souvent nécessaire de les combiner en un seul tableau. Cela peut être fait efficacement sans convertir l'intégralité du tableau en un seul type de données.

Considérez le scénario suivant : vous disposez de deux tableaux, A contenant des chaînes et B contenant des entiers. Le but est de créer un tableau combiné combiné_array où chaque colonne conserve son type de données d'origine.

Pendant la concaténation de A et B avec np.concatenate comme Combined_array = np.concatenate((A, B), axis = 1) apparaît simple, il convertit l'intégralité du tableau en dtype=string par défaut, ce qui entraîne des inefficacités de mémoire.

Solution : tableaux d'enregistrement et tableaux structurés

Une approche efficace consiste à utiliser tableaux d'enregistrement ou tableaux structurés.

Tableaux d'enregistrement :

Les tableaux d'enregistrement offrent un moyen flexible de stocker plusieurs types de données dans un seul tableau. Les champs individuels sont accessibles via les attributs :

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])
Copier après la connexion

Tableaux structurés :

Semblables aux tableaux d'enregistrement, les tableaux structurés permettent de spécifier un type de données pour chaque champ. :

arr = np.array([('a', 0), ('b', 1)], 
                dtype=([('keys', '|S1'), ('data', 'i8')]))

print(arr)
# array([('a', 0), ('b', 1)], 
#   dtype=[('keys', '|S1'), ('data', '<i8')])
Copier après la connexion

Notez que les tableaux d'enregistrements fournissent un accès aux attributs, contrairement aux tableaux structurés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!