Comment combiner/fusionner les valeurs de deux tableaux structurés avec deux clés ?
J'ai deux tableaux structurés avec les mêmes clés et types de données.
import numpy as np
# Define a dtype with x and y integers
arr1 = np.empty(6, dtype=[('x', int), ('y', int)])
arr2 = np.empty(8, dtype=[('x', int), ('y', int)])
# Add the data to the structured array
arr1['x'] = np.array([ 32, 32, 32, 32, 32, 39])
arr1['y'] = np.array([449, 451, 452, 453, 454, 463])
arr2['x'] = np.array([ 39, 34, 32, 32, 37, 32,23, 12])
arr2['y'] = np.array([463, 393, 453, 452, 261, 449, 1243, 263])
Les deux tableaux structurés peuvent avoir des longueurs différentes, comme indiqué. Les valeurs apparaissent en paires x et y.
Je voudrais combiner ces deux tableaux structurés, tels que
- Les valeurs qui sont partagées entre eux (même combinaison de valeurs x et y) ne sont pas dupliquées et n'apparaîtront qu'une seule fois
- Les valeurs qui ne sont pas partagées entre eux (combinaison différente de valeurs x et y) seront incluses dans le tableau de structure fusionné
- Un ordre ou un modèle n'est pas nécessaire pour la façon dont les valeurs sont ajoutées. Tant que le résultat contient toutes les paires x et y qui existent entre les deux et sont uniques.
S'il existe une méthode efficace pour combiner plus de deux tableaux structurés, tels que 3 ou 4 de ces tableaux structurés, alors une solution serait appréciée.
Dans l'exemple ci-dessus, je voudrais qu'il fusionne comme suit, où arr3
est le résultat de la fusion :
arr3['x'] = np.array([32,32,32,32,32,39,34,37,23,12])
arr3['y'] = np.array([449,451,452,453,454,463,393,261,1243,263])
Toutes les paires uniques de valeurs entre les deux tableaux structurés sont dans arr3
.
J'ai essayé de créer du code, mais je ne sais pas par où commencer. Merci.
Solution du problème
Vous pouvez simplement concaténer les valeurs avec np.concatenate
et et supprimer les doublons avec np.unique
:
arr3 = np.unique(np.concatenate([arr1, arr2]))
Commentaires
Enregistrer un commentaire