Comment puis-je sérialiser un tableau numpy, tout en préservant la matrice de dimensions?

numpy.array.tostring ne semble pas conserver les informations relatives aux dimensions de la matrice (voir cette question), demandant à l'utilisateur de lancer un appel à numpy.array.reshape.

Est-il un moyen pour sérialiser un tableau numpy au format JSON, tout en préservant cette information?

Remarque: Les tableaux peuvent contenir des entiers, des flotteurs ou des booléens. Il est raisonnable de s'attendre à un tableau transposé.

Note 2: ce qui est fait avec l'intention de passer le tableau numpy par une Tempête de topologie à l'aide de streamparse, dans le cas où ces informations finit par être pertinentes.

  • Pourquoi avez-vous downvote? Ma solution est correcte et fonctionne pour les tableaux numpy de toute dimension et de tout type de données.
  • Downvotes ne viennent pas de moi. Quelqu'un a une mauvaise journée, je pense :/
  • Wow...qui est downvoting une solution dans un fil de discussion où il est lui-même pas le propriétaire?^^ Alors..désolé pour la gêne occasionnée. J'espère que vous êtes heureux avec la solution 🙂
  • Peut-être parce qu'il échoue sur structurée tableaux? Il faut aussi que la matrice C est contigu, et je soupçonne qu'il pourrait aussi faire la mauvaise chose si un tableau est sérialisé sur un little-endian système et désérialisé sur un big-endian système ou vice-versa, mais je n'ai pas le matériel pour vérifier. Je ne suis pas le downvoter et ne sais pas le downvoter de raisons, mais je ne voudrais pas upvote il.
  • Est-il besoin d'être un format de texte? Parce que numpy.save et numpy.load (qui utilisent un format binaire) faire enregistrer la forme du tableau (et le type et l'ordre).
  • Il doit être JSON-sérialisable, en fait. C'est un peu une exigence de l'étrange, mais la Tempête du JSON-driven multilang protocole ne me donne pas trop le choix :/
  • Eh bien, vous pourriez save à un StringIO, read la StringIO, et de transformer les octets avec base64 ou quelque chose.
  • ouais, il ne fonctionnera pas sans quelques "bidouilles" sur la structure de tableaux structurés mais les tableaux (dans mon expérience) ne sont pas utilisés très souvent, et de traiter avec eux est toujours relativement complexes, comme la sérialisation de montre...
  • ...et même plus important: la question était sur la sérialisation des tableaux numpy avec certains matrice dimenions (afin de flotteurs, entiers, ...). La question n'était pas comment sérialiser multi-type structuré tableaux.
  • J'apprécie vos commentaires pour cette question, alors, passons à ces stupides downvoters. Il ressemble à la tendance s'est inversée, de toute façon.
  • J'ai édité la question de l'essayer et de le rendre clair qu'il convient de TEMPÊTE compatible. Mais vous devriez vraiment avoir compris que. Nous ne pouvons pas lire dans les pensées. 🙂
  • Merci. Mon intention était de pas pour défendre ma réponse ou offenser personne. Je voulais juste faire remarquer que, dans mon esprit, la question était de savoir comment sérialiser des tableaux numpy (flotteurs, entiers, ...) ayant des dimensions variables et non pas sur le multi-type structuré tableaux^^
  • Je ne suis pas sûr si je suis d'accord avec votre dernier lot de modifications. La sérialisation JSON est suffisant pour en faire une tempête compatible; pas besoin de le rendre plus complexe qu'elle ne l'est...
  • Se sentir libre de les annuler. 🙂 Mais je pense que la tempête et/ou JSON doit être mentionnée, car ils sont pertinents à la question.
  • Ouais, je crois que la question est plus de savoir si vous voulez "normal" des tableaux numpy être sérialisé ou vraiment tout scipy/numpy tableau d'objets que l'on peut penser, y compris multi-type structuré des tableaux et des trucs. J'ai vraiment pensé à "normal" des tableaux lorsque j'ai lu votre question et je suppose que c'est ce que @RolandSmith voulais dire avec "STORM-compatible"?!
  • fait. Je viens de penser à un sympathique heads-up serait poli 🙂
  • actuellement, les tableaux d'entiers, des flotteurs et des booléens sont tout ce qui est nécessaire. Il est raisonnable de s'attendre à ce transposée tableaux. Je vais mettre à jour la question.
  • C'est exactement ce que j'ai pensé quand j'ai lu votre question...pour toutes ces raisons mentionnées ma solution fonctionne bien 🙂
  • Avez-vous essayé jsonpickle?

InformationsquelleAutor blz | 2015-06-07