webentwicklung-frage-antwort-db.com.de

Wie konvertiert man ein Array von Strings in ein Array von Floats in Numpy?

Wie konvertiere ich

["1.1", "2.2", "3.2"]

zu

[1.1, 2.2, 3.2]

in NumPy?

101
Meh

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)
150
Joe Kington

Sie können dies auch verwenden

import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
4
pradeep bisht

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'>
2
KutalmisB

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.

2
Thomio