¿Cómo convertir una matriz de cadenas en una matriz de flotantes en numpy?

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]