web-dev-qa-db-fra.com

Comment convertir un tableau de chaînes en tableau de flotteurs numpy?

Comment convertir

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

à

[1.1, 2.2, 3.2]

dans NumPy?

101
Meh

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

Vous pouvez aussi l'utiliser

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

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

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.

2
Thomio