7
votes

Sous-tableau unique unique 2D

J'ai une matrice NUMPY 3D et je ne veux que des sous-tableaux de 2D uniques.

entrée: p> xxx pré>

sortie: p>

[b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00', b'\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00', b'\t\x00\x00\x00\n\x00\x00\x00\x0b\x00\x00\x00\x0c\x00\x00\x00', b'\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08\x00\x00\x00']
[b'\x01\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x04'
 b'\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08'
 b'\t\x00\x00\x00\n\x00\x00\x00\x0b\x00\x00\x00\x0c'
 b'\x05\x00\x00\x00\x06\x00\x00\x00\x07\x00\x00\x00\x08']

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-86-6772b096689f> in <module>()
      5 c = np.array(b)
      6 print(c)
----> 7 print(np.array([np.fromstring(x) for x in c]))

<ipython-input-86-6772b096689f> in <listcomp>(.0)
      5 c = np.array(b)
      6 print(c)
----> 7 print(np.array([np.fromstring(x) for x in c]))

ValueError: string size must be a multiple of element size


1 commentaires

Ceci est un Nouvelle fonctionnalité dans le prochain 1.13, comme np.unique ( a, axe = 0) . Vous pouvez simplement copier la nouvelle implémentation et l'utiliser dans votre code, puisque 1.13 n'est pas encore publié.


3 Réponses :


1
votes

Une solution serait d'utiliser un ensemble pour garder une trace de laquelle des sous-tableaux que vous avez vue: xxx pré>

ou à l'aide de NUMPY uniquement: p>

print np.unique(a).reshape((len(unique) / 4, 2, 2))

>>> [[[ 1  2]
      [ 3  4]]

     [[ 5  6]
      [ 7  8]]

     [[ 9 10]
      [11 12]]]


3 commentaires

Donc Cette réponse de la Dupe a commenté ci-dessus


Vous perdez l'ordre des sous-tableaux avec cette réponse


Si l'on vient de copier la matrice sur un ensemble, puis de retour à une matrice, la commande serait perdue, c'est vrai, mais fait de la manière dont cela est fait dans le code ci-dessus, la commande ne sera pas perdue.



2
votes

le Package numy_indexed (Disclaimer: Je suis son auteur) est conçu pour faire des opérations telles que celles-ci de manière efficace et vectorisée: xxx


0 commentaires

4
votes

en utilisant @ jaime's Post , pour résoudre notre cas de recherche de sous-chers 2D uniques, i est venu avec cette solution qui ajoute essentiellement un remodelage à la vue étape - xxx

exécution d'échantillon - xxx


2 commentaires

Merci pour votre réponse! Donc, si j'ai bien compris Dtype spécifie une séquence d'octets (pas vraiment de type) de taille A.dtype.itemise * Taille de la sous-réseau? Et la matrice contiguë Besoin, car DTYPE spécifié comme une séquence d'octets? Je suis tellement désolé pour une question en double, mais je ne comprends pas du message de @ Jaime.


@ Peťan bien vous avez raison sur la première partie. Sur la deuxième partie sur la nécessité d'être contigu . Je ne suis pas trop clair sur cela non plus. Pourrait être utile de poster un commentaire sur ce poste, je suppose. Si je dois deviner, je dirais que votre deuxième partie semble logique, mais oui, ces deux parties sont liées.