Verwenden von genfromtxt, um Daten zu teilen

Mit Python verwende ich genfromtxt (von numpy), um eine Textdatei in ein Array zu lesen:

 y = np.genfromtxt("1400list.txt", dtype=[('mystring','S20'),('myfloat','float')]) 

Was funktioniert okay, außer es scheint nicht, meine 2 Spalten in ein 2D-Array zu lesen. Ich bekomme:

[('string001', 123.0),('string002', 456.0),('string002', 789.0)]

Aber ich denke möchte:

[['string001', 123.0],['string002', 456.0],['string002', 789.0]]

Ich möchte grundsätzlich jede Information als separates Element, das ich dann manipulieren kann.

One Solution collect form web for “Verwenden von genfromtxt, um Daten zu teilen”

Was genfromtxt zurückgibt, heißt strukturiertes Array . Es gibt eine 1d Array von Tupeln , jedes Tupel hat die dtype , die Sie angegeben haben.

Diese sind wirklich sehr nützlich, sobald Sie lernen, wie man sie benutzt. Du kannst kein 2d Array mit Floats und Strings haben, aber mit einem strukturierten Array kannst du!

Beispielsweise:

 import numpy as np from StringIO import StringIO s = """string001 123 string002 456 string002 789""" f = StringIO(s) y = np.genfromtxt(f, dtype=[('mystring', 'S20'), ('myfloat', float)]) 

Was hast du so weit. Jetzt können Sie auf die folgende Weise auf y zugreifen. Sie können einen Feldnamen verwenden , um eine Spalte als 1d-Array zu erhalten:

 >>> y['mystring'] array(['string001', 'string002', 'string002'], dtype='|S20') >>> y['myfloat'] array([ 123., 456., 789.]) 

Beachten Sie, dass y['myfloat'] gibt float s wegen der dtype Argument, obwohl in der Datei sind sie int s.

Oder du kannst eine Ganzzahl verwenden, um eine Zeile als tuple mit dem angegebenen dtype :

 >>> y[1] ('string002', 456.0) 

Wenn Sie eine Menge Manipulation von Datenstrukturen wie diese machen, möchten Sie vielleicht in Pandas schauen

  • Verschiedene Ergebnisse bei der Verwendung von sklearn RandomizedPCA mit spärlichen und dichten Matrizen
  • Warum ist numpy.power 60x langsamer als in-Futter?
  • Spezielle Tensorkontraktion in Python
  • Wie überschreibe Array in h5 Datei mit h5py
  • Wie vergleiche grosse Kreisabstand mit euklidischen Abstand von zwei Sphärenpunkten mit Python?
  • Füge numpy array als Spalte zu Pandas Datenrahmen hinzu
  • Fehler: Microsoft Visual C ++ 10.0 ist erforderlich (Vcvarsall.bat kann nicht gefunden werden) [doppelte]
  • Überspringen Sie jeden n-ten Index von numpy Array
  • Liste der Array-Konvertierung
  • Numpy erweiterte Auswahl funktioniert nicht
  • Konvertieren Sie pandas dataframe zu numpy array, beibehalten Index
  • Python ist die beste Programmiersprache der Welt.