Maison  >  Article  >  développement back-end  >  Comment concaténer des tableaux avec différents types de données et maintenir l'efficacité de la mémoire ?

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

Barbara Streisand
Barbara Streisandoriginal
2024-10-21 17:56:03594parcourir

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])

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')])

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!

Déclaration:
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