2017-09-21 2 views
1

Je rencontre des problèmes lors de la conversion d'un tableau numérique de type bytes8 en chaîne. Je suppose que j'ai besoin de décoder les données mais je ne suis pas sûr de savoir comment le faire pour un tableau numpy. Le tableau est de taille [1200,8] mais les données sont répétées le long de la plus grande dimension, je n'ai donc vraiment besoin de convertir qu'une ligne en une chaîne.Convertir/décoder un tableau numpy de caractères octets8 en chaîne

La première entrée du tableau donne la sortie suivante sur la ligne de commande: array ([b'5 ', b'5', b'5 ', b'7', b'0 ', b' ', b' ', b' '], dtype =' | S1 ')

J'ai essayé des choses comme .tostring() mais sans chance. Le problème semble être que l'objet est un tableau numpy.

Répondre

0

Utilisez une compréhension de liste incluant encoding="utf-8", sinon le b restera dans la liste.

array = [str(s, encoding='UTF-8') for s in array] 

retours

['5', '5', '5', '7', '0', ' ', ' ', ' '] 

si vous le souhaitez ensuite faire une chaîne complète que vous pouvez faire

''.join(array) 

qui retournera la chaîne

55570 

Vous pouvez obtenir le même en utilisant une seule ligne ND parenthèse qui va créer un generator object.

Un objet générateur ne créera pas de liste en mémoire, il sera donc plus rapide.

array = ''.join(str(s, encoding='UTF-8') for s in array)