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ù arr3est 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.concatenateet et supprimer les doublons avec np.unique:

arr3 = np.unique(np.concatenate([arr1, arr2]))

Commentaires

Posts les plus consultés de ce blog

Erreur Symfony : "Une exception a été levée lors du rendu d'un modèle"

Détecter les appuis sur les touches fléchées en JavaScript

Une chaîne vide donne "Des erreurs ont été détectées dans les arguments de la ligne de commande, veuillez vous assurer que tous les arguments sont correctement définis"