Wie konvertiere ich
["1.1", "2.2", "3.2"]
zu
[1.1, 2.2, 3.2]
in NumPy?
Wenn Sie die Daten als Liste einlesen, führen Sie einfach np.array(map(float, list_of_strings))
aus (oder verwenden Sie entsprechend ein Listenverständnis). (In Python 3 müssen Sie list
für den Rückgabewert map
aufrufen, wenn Sie map
verwenden, da map
gibt jetzt einen Iterator zurück.)
Wenn es sich jedoch bereits um eine ganze Reihe von Zeichenfolgen handelt, gibt es einen besseren Weg. Verwenden Sie astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
Sie können dies auch verwenden
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Eine andere Option könnte sein numpy.asarray :
import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')
Für Python 2 *:
print a, type(a), type(a[0])
print b, type(b), type(b[0])
ergebend:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
Wenn Sie eine einzelne Zeichenfolge haben (oder erstellen), können Sie np.fromstring verwenden:
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )
Beachten Sie, dass x = ','.join(x)
das x-Array in den String '1.1, 2.2, 3.2'
Umwandelt. Wenn Sie eine Zeile aus einer txt-Datei lesen, ist jede Zeile bereits eine Zeichenfolge.