Comment convertir
["1.1", "2.2", "3.2"]
à
[1.1, 2.2, 3.2]
dans NumPy?
Eh bien, si vous lisez les données sous forme de liste, faites simplement np.array(map(float, list_of_strings))
(ou de manière équivalente, utilisez une compréhension par liste). (Dans Python 3, vous devrez appeler list
sur la valeur de retour map
si vous utilisez map
, puisque map
renvoie un itérateur maintenant. .)
Cependant, s'il s'agit déjà d'un tableau numpy de chaînes, il existe un meilleur moyen. Utilisez astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
Vous pouvez aussi l'utiliser
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Une autre option pourrait être numpy.asarray :
import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')
Pour Python 2 *:
print a, type(a), type(a[0])
print b, type(b), type(b[0])
résultant en:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
Si vous avez (ou créez) une seule chaîne, vous pouvez utiliser np.fromstring:
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )
Remarque: x = ','.join(x)
transforme le tableau x en chaîne '1.1, 2.2, 3.2'
. Si vous lisez une ligne à partir d'un fichier txt, chaque ligne sera déjà une chaîne.