Speichern numpy-array in csv erzeugt TypeError Mismatch

Habe ich ein numpy-array mit numerischen Daten in der form:

example = numpy.array([[[i for i in range(0, 5)],[0 for j in range(0, 5)]] for k in range(0, 10)])

Es ist also array von 10 Gruppen, wobei jede Gruppe besteht aus 2 Listen die gleiche Länge und enthält nur die zahlen.
Mit dem folgenden code speichern gibt mir den folgenden Fehler:

numpy.savetxt('exampleData.csv', test, delimiter=',')
TypeError: Mismatch between array dtype ('int32') and format specifier ('%.18e %.18e')

Ich vermute, dies könnte behoben werden, mit etwas in der fmt='xyz' - argument, aber die Dokumentation ist nicht besonders deutlich. Jede Hilfe würde geschätzt werden.

(In meiner tatsächlichen Daten, die i-und j-Listen sind Listen von langen Schwimmern, z.B.'0.0047322940571' etc.)

  • Versuchen example = numpy.array([[[float(i) for i in range(0, 5)],[0 for j in range(0, 5)]] for k in range(0, 10)]) und sehen, ob der Fehler weiterhin besteht. Alternativ versuchen ein format wie fmt='%04d' im savetxtnennen.
  • In meinem eigentlichen code, der Daten für i und j sind beide Wagen, ich denke der Fehler rührt von der Tatsache, dass es ist nicht zu erwarten, ein Dritter Wert in k.
  • Was die Form des Arrays? savetxt funktioniert nur mit 2d-arrays. Was ist seine dtype?
  • Ahh, das würde es erklären, ich denke, es würde klassifizieren als 3D-array... Was sollte ich stattdessen verwenden?
  • Welche Art von layout erwarten Sie? Normalerweise CSV ist nur viele Zeilen der Spalten vergleichen. Die Leser haben in der Regel Probleme mit Leerzeilen oder Zeilen mit einer unterschiedlichen Anzahl von Spalten. Spalten unterscheiden sich in der Art des content - strings, ints, floats, aber Sie sollte konsistent sein.
  • Öffnen Sie eine 2D-CSV-Datei erzeugt ein zwei-line-Dokument, ich hätte gedacht, dass ein 3D-array erzeugen würde 2*k-Linien...

InformationsquelleAutor Pingk | 2016-04-11
Schreibe einen Kommentar