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 listden mapRückgabewert aufrufen , wenn Sie ihn verwenden map, da mapjetzt 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.