3 votes

Ecrire un tableau numpy.bool dans un fichier compact ?

J'utilise numpy et Python 2.7 pour calculer des tableaux booléens de grande taille (plus de 100 millions d'éléments) pour un tamis de prime super-massif et les écrire dans des fichiers binaires pour les lire plus tard. Les bools NumPy sont sur 8 bits, donc la taille du fichier que j'écris est beaucoup plus grande que nécessaire. Comme j'écris un grand nombre de ces fichiers, j'aimerais les garder aussi petits que possible sans avoir à perdre beaucoup de temps et de mémoire à les convertir en bitarray et vice-versa.

J'allais initialement passer à l'utilisation du module bitarray pour réduire la taille des fichiers, mais le temps de calcul du tamis a augmenté d'environ 400% avec les mêmes algorithmes, ce qui est un peu inacceptable. Existe-t-il un moyen rapide d'écrire et de relire le ndarray dans un fichier plus petit, ou est-ce un compromis avec lequel je vais devoir composer ?

3voto

user2357112 Points 37737

numpy.packbits pour le transformer en uint8 pour l'écriture, puis numpy.unpackbits après l'avoir relu. numpy.packbits rembourre l'axe que vous emballez avec des zéros pour obtenir un multiple de 8. Veillez donc à garder une trace du nombre de zéros que vous devrez couper à l'extrémité lorsque vous déballerez le tableau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X