Économie d'un tableau numpy csv produit TypeError Incompatibilité
J'ai un tableau numpy avec les données numériques de la forme:
example = numpy.array([[[i for i in range(0, 5)],[0 for j in range(0, 5)]] for k in range(0, 10)])
Il est donc tableau de 10 groupes, où chaque groupe se compose de 2 listes de même longueur et ne contient que des chiffres.
L'exécution de la suite enregistrer le code me donne l'erreur ci-dessous:
numpy.savetxt('exampleData.csv', test, delimiter=',')
TypeError: Mismatch between array dtype ('int32') and format specifier ('%.18e %.18e')
Je suppose que ce pourrait être fixé avec quelque chose dans la fmt='xyz' argument, mais la documentation n'est pas particulièrement clair. Toute aide serait appréciée.
(Dans mes données réelles, le i et j les listes sont des listes de long flotteurs, par exemple'0.0047322940571", etc.)
Essayez
Dans mon code, les données pour i et j sont les deux flotteurs, je pense que l'erreur provient du fait qu'il ne s'attendait pas à une troisième valeur dans k.
Quelle est la forme de la matrice?
Ahh, qui me l'expliquer, je suppose qu'on pourrait classer comme un tableau 3D... Que dois-je utiliser à la place?
Ce type de mise en page ne vous attendez-vous? Normalement CSV est juste le nombre de lignes de la correspondance des colonnes. Les lecteurs ont généralement des problèmes avec des lignes blanches ou des lignes avec un nombre différent de colonnes. Les colonnes peuvent différer dans le type de contenu chaînes de caractères, entiers, les chars, mais elles doivent être cohérentes.
example = numpy.array([[[float(i) for i in range(0, 5)],[0 for j in range(0, 5)]] for k in range(0, 10)])
et voir si l'erreur persiste. Sinon, essayez un format comme fmt='%04d'
dans le savetxt
appel.Dans mon code, les données pour i et j sont les deux flotteurs, je pense que l'erreur provient du fait qu'il ne s'attendait pas à une troisième valeur dans k.
Quelle est la forme de la matrice?
savetxt
ne fonctionne qu'avec des tableaux 2d. Quel est son dtype
?Ahh, qui me l'expliquer, je suppose qu'on pourrait classer comme un tableau 3D... Que dois-je utiliser à la place?
Ce type de mise en page ne vous attendez-vous? Normalement CSV est juste le nombre de lignes de la correspondance des colonnes. Les lecteurs ont généralement des problèmes avec des lignes blanches ou des lignes avec un nombre différent de colonnes. Les colonnes peuvent différer dans le type de contenu chaînes de caractères, entiers, les chars, mais elles doivent être cohérentes.
OriginalL'auteur Pingk | 2016-04-11
Vous devez vous connecter pour publier un commentaire.
Votre
example
est un tableau 3den essayant de sauver le tout résulte en une erreur (message différent en raison des différentes version):
mais l'enregistrement d'une 'ligne' est ok
Enregistrer avec le format de nombre entier fait une belle sortie
Alors, comment voulez-vous que le tableau 3d pour être sauvé? Gardez à l'esprit la façon dont vous allez l'utiliser/lire. Plusieurs fichiers? Plusieurs blocs dans un fichier?
https://stackoverflow.com/a/3685339/901925
en 6 ans, DONC réponse sur la façon de sauver un tableau 3d. La réponse la plus simple est d'ouvrir un fichier et d'effectuer de multiples
savetxt
pour les tranches de la matrice. Il enregistre les données dans des blocs. Mais le chargement de ces blocs est un autre DONC, la question (ce qui est venu avant).En réponse à votre commentaire, cela fonctionne
Un autre moyen de réaliser un tableau 3d est de le refaçonner à la 2d. Vous en modifier la forme de retour à la 3d après le chargement, éventuellement à l'aide des informations que vous avez stockées dans une ligne de commentaire
savetxt
itère sur la 1ère dimension de votre tableau, et pour chaquerow
, écritformat % tuple(row)
.format
est dérivée à partir de votrefmt
paramètre et la.shape[1]
de votre entrée.Merci beaucoup!
OriginalL'auteur hpaulj
Mise à jour, ce qui devrait résoudre le problème.
OriginalL'auteur Chris