Como convertir
["1.1", "2.2", "3.2"]
a
[1.1, 2.2, 3.2]
en NumPy?
Bueno, si está leyendo los datos en una lista, simplemente haga np.array(map(float, list_of_strings))
(o de manera equivalente, use una lista de comprensión). (En Python 3, tendrá que llamar a la list
en el valor de retorno del map
si usa el map
, ya que el map
devuelve un iterador ahora).
Sin embargo, si ya es una gran cantidad de cadenas, hay una mejor manera. Utilice astype()
.
import numpy as np x = np.array(['1.1', '2.2', '3.3']) y = x.astype(np.float)
Puedes usar esto también
import numpy as np x=np.array(['1.1', '2.2', '3.3']) x=np.asfarray(x,float)
Si tiene (o crea) una sola cadena, puede usar np.fromstring :
import numpy as np x = ["1.1", "2.2", "3.2"] x = ','.join(x) x = np.fromstring( x, dtype=np.float, sep=',' )
Tenga en cuenta que x = ','.join(x)
transforma la matriz x en la cadena '1.1, 2.2, 3.2'
. Si lees una línea de un archivo txt, cada línea ya será una cadena.
Otra opción podría ser numpy.asarray :
import numpy as np a = ["1.1", "2.2", "3.2"] b = np.asarray(a, dtype=np.float64, order='C')
Para Python 2 *:
print a, type(a), type(a[0]) print b, type(b), type(b[0])
Resultando en:
['1.1', '2.2', '3.2'] [1.1 2.2 3.2]