Question

Je voudrais effectuer une jonction de toutes sortes dans NumPy . Disons que j'ai deux tableaux, a et b:

>>> a
array([[ 1, 10],
       [ 2, 20],
       [ 5, 30]])
>>> b
array([[ 1, 11],
       [ 3, 31],
       [ 4, 41]])

que je veux raccorder ensemble dans le tableau suivant, c:

>>> c
array([[  1.,  10.],
       [  2.,  20.],
       [  3.,  nan],
       [  4.,  nan],
       [  5.,  30.]])

C'est, je Splice les valeurs de la première colonne de b en a sans se soucier de la deuxième colonne.

Je pourrais bien sûr mettre en œuvre moi-même assez facilement, mais il serait plus agréable d'avoir NumPy le faire pour moi à la place. Est-ce possible?

Était-ce utile?

La solution

La réponse par mishaF ne manque que la dernière étape - faire les entrées de la dernière colonne unique. Le code complet pour obtenir votre c (sauf pour le DTYPE, qui passe de int à float dans votre post) est

b[:,1]=numpy.nan
c = numpy.r_[a, b]
c.sort(0)
c = c[numpy.unique(c[:,0], True)[1]]

Autres conseils

Vous pouvez empiler les deux ensemble et puis trier. Toutefois, cela ne prend pas en charge le fait que vous avez deux occurrences de l'indice 1. Je ne sais pas c'est une grande amélioration ...

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)

Je ne pense pas qu'il y ait quoi que ce soit dans NumPy pour le faire. Avez-vous besoin exactement ce résultat (dans l'ordre, la seconde colonne avec une valeur non définie)? Peut-être il y a quelque chose de proche qui serait encore utile pour l'objectif final.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top