Réponses:
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 de liste). (Dans Python 3, vous devrez appeler listla mapvaleur de retour si vous utilisez map, car maprenvoie 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)
list. Les tableaux Numpy sont délibérément typés de manière homogène. Si vous voulez vraiment, vous pouvez utiliser un tableau d'objets (par exemple np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)). Cependant, les tableaux d'objets n'ont pas d'avantages significatifs par rapport à l'utilisation d'une liste.
Vous pouvez également 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 d'un fichier txt, chaque ligne sera déjà une chaîne.