IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

[numpy] fromstring/tostring : problème!


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 36
    Points : 31
    Points
    31
    Par défaut [numpy] fromstring/tostring : problème!
    bonjour bonjour,

    je viens de passer de numarray à numpy 1.0b, pour gagner en rapidité. A part qq détails, la transition marchait à merveille, les méthodes gardaient le même nom, etc...

    Mais là, je bute!
    Je manipule des données 16 bits par paquets. Au cours du traitement, les données sont plusieurs fois écrites, puis lues dans des fichiers intermédiaires (pour permettre la reprise du traitement, par exemple). L'écriture et la lecture sont effectuées avec tostring() et fromstring() .

    Une étape du traitement comprend une 'égalisation' de la longueur des paquets, par exemple à 40 000 octets. Un paquet de 45 000 est tronqué à 40 000, un paquet de 39 000 est concaténé à 40 000 avec des 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if len(ligne) < 40000:
        return n.concatenate( (ligne, n.repeat( [0], 40000 - len(ligne)) )
    else:
        return ligne[:40000]
    Après écriture (avec tostring) puis lecture (avec fromstring), les lignes (ou paquets, kif kif) qui avaient été complétées par des 0 sont bizarrement transformées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    # avant écriture/lecture, une ligne complétée par des 0:
    [30000, 35000, 32000, 34000, ... 0, 0, 0, 0] 
     
    # après:
    [30000, 0, 35000, 0, 32000, 0, 34000, 0, ... 0,0,0,0]
    Mais la longueur est bien 40000 octets. Donc perte de données, pourrissage de données,...
    Problème de mémoire non-contigue? tostring inclut un nouvel argument sous numpy, order qui prend les valeurs 'C', 'Fortran' ou 'None' (je crois). Mais mes qq essais n'ont pas été concluants...

    Pleaaase help!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Erreur bête! (il fallait s'y attendre )

    Je viens de passer 5 petites minutes, à tête reposée, sur le probème. Le problème n'a même rien à voir avec les différences numarray/numpy : il est survenu au moment où j'ai fait le changement et c'est une coïncidence. Du coup, mauvaise piste!

    Avec numpy comme avec numarray, le fait de concaténer 2 arrays crée un nouvel array, qui par défaut est codé sur 32 bits. En essayant de transposer en 16 bits des données 32 bits, ça pose forcément problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>>n.fromstring(n.array([7]).tostring(), 'uint16')
    array([7, 0], dtype=uint16)
    >>>n.fromstring(n.array([7], 'uint16').tostring(), 'uint16')
    array([7], dtype=uint16)
    Donc, attention! Il vaut mieux rappeler à chaque manipulation d'arrays quel encodage on veut, ça évite les erreurs bêtes comme ça...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Numpy][vstack] MemoryError Problème
    Par sir_nebuchadnezzar dans le forum Général Python
    Réponses: 6
    Dernier message: 24/10/2012, 11h30
  2. DataRow[item].ToString() - problème d'encodage ?
    Par herr_jd dans le forum ASP.NET
    Réponses: 1
    Dernier message: 13/10/2009, 20h25
  3. [numpy] problème dans mes imports
    Par Kuroro dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 28/05/2007, 23h07
  4. Problème d'affichage avec le méthode toString()
    Par Premium dans le forum Langage
    Réponses: 8
    Dernier message: 26/10/2006, 11h36
  5. Réponses: 1
    Dernier message: 17/05/2006, 20h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo