j'ai un fichier binaire dans laquelle les données sont organisées en blocs entiers de 16 bits comme ceci:lecture des données binaires au niveau des bits
- bit 15: bit numérique 1
- bit 14: bit numérique 2
- bits 13 à 0: 14 bits entier signé
La seule façon que je trouve comment extraire les données du fichier à 3 rangées est la suivante:
data = np.fromfile("test1.bin", dtype=np.uint16)
digbit1 = data >= 2**15
data = np.array([x - 2**15 if x >= 2**15 else x for x in data], dtype=np.uint16)
digbit2 = data >= 2**14
data = np.array([x-2**14 if x >= 2**14 else x for x in data])
data = np.array([x-2**14 if x >= 2**13 else x for x in data], dtype=np.int16)
Maintenant, je sais que je pourrais faire la même chose avec la boucle for sur les données d'origine et remplir 3 tableaux séparés, mais ce serait encore moche. Ce que je voudrais savoir est comment faire ceci plus efficacement dans le style de dtype=[('db', [('1', bit), ('2', bit)]), ('temp', 14bit-signed-int)])
de sorte qu'il soit facile d'accéder comme data['db']['1'] = array of ones and zeros
.
Jamais entendu parler de 'pack'. Je ne vois pas vraiment ce que numpy a à voir avec les fichiers binaires. –
Pourriez-vous formuler votre commentaire d'une manière plus aidante? Peut-être que cela n'a pas grand chose à voir avec les fichiers binaires, mais avec leur contenu, c'est vraiment utile. Au moins dans mon cas. – TheoryX