J'ai une matrice NUMPY 3D et je ne veux que des sous-tableaux de 2D uniques.
entrée: p> 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
3 Réponses :
Une solution serait d'utiliser un ensemble pour garder une trace de laquelle des sous-tableaux que vous avez vue: 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]]]
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.
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:
en utilisant exécution d'échantillon - p> @ jaime's Post Code>
, 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 code> étape -
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 code>. 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.
Ceci est un Nouvelle fonctionnalité dans le prochain 1.13, comme
np.unique ( a, axe = 0) code>. Vous pouvez simplement copier la nouvelle implémentation et l'utiliser dans votre code, puisque 1.13 n'est pas encore publié.