Ich schreibe eine Methode, um ein Array aus Datendatei zu erstellen. Das Verfahren sieht so aus:Entfernen dtype am Ende der numpy Array
import numpy
def readDataFile(fileName):
try:
with open(fileName, 'r') as inputs:
data = None
for line in inputs:
line = line.strip()
items = line.split('\t')
if data == None:
data = numpy.array(items[0:len(items)])
else:
data = numpy.vstack((data, items[0:len(items)]))
return numpy.array(data)
except IOError as ioerr:
print 'IOError: ', ioerr
return None
Meine Datendatei die Zeilen von Zahlen enthält, von denen jede die voneinander durch einen Tabulator getrennt, zB:
1 2 3
4 5 6
7 8 9
Und ich erwarte ein Array erhalten wie folgt :
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
enthält jedoch das Ergebnis dtype
davon am Ende:
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]], dtype='|S9')
Aus diesem Grund kann ich einige Operationen am Ergebnis nicht durchführen, z. wenn ich versuche, den Maximalwert für jede Zeile zu finden result.max(0)
verwenden, werde ich eine Fehlermeldung erhalten:
TypeError: cannot perform reduce with flexible type.
Also, kann mir jemand sagen, was mit meinem Code falsch ist und wie man es beheben? Danke vielmals.
Danke, funktioniert Ihr Code wirklich gut. Aber können Sie erklären, warum es eine schlechte Idee ist, numpy.vstack in eine Schleife zu setzen? Prost. –