Antworten:
Wenn Sie die Daten als Liste einlesen, tun Sie dies einfach np.array(map(float, list_of_strings))
(oder verwenden Sie gleichwertig ein Listenverständnis). (In Python 3 müssen Sie list
den map
Rückgabewert aufrufen , wenn Sie ihn verwenden map
, da map
jetzt ein Iterator zurückgegeben wird.)
Wenn es sich jedoch bereits um eine 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)
list
. Numpy Arrays werden bewusst homogen typisiert. Wenn Sie wirklich wollen, können Sie ein Objektarray verwenden (z np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)
. B. ). Objektarrays haben jedoch keine wesentlichen Vorteile gegenüber der Verwendung einer Liste.
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 numpy.asarray sein :
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, x = ','.join(x)
dass das x-Array in einen String umgewandelt wird '1.1, 2.2, 3.2'
. Wenn Sie eine Zeile aus einer txt-Datei lesen, ist jede Zeile bereits eine Zeichenfolge.