2010-10-06 20 views

Répondre

106

Eh bien, si vous lisez les données sous la forme d'une liste, faites simplement np.array(map(float, list_of_strings)) (ou de manière équivalente, utilisez une liste de compréhension). (En Python 3, vous aurez besoin d'appeler list sur la valeur map de retour si vous utilisez map, depuis map retourne un itérateur maintenant.)

Cependant, si elle est déjà un tableau numpy de chaînes, il y a une meilleure façon. Utilisez astype().

import numpy as np 
x = np.array(['1.1', '2.2', '3.3']) 
y = x.astype(np.float) 
+0

et si vous avez un tableau avec une chaîne que je veux maintenir? comme ['a', '1.1', '2.2', '3.3'] -> ['a', 1.1,2.2,3.3] – ePascoal

+4

@MrMartin - Utilisez ensuite 'list'. Les tableaux de 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' = Aucun, 'c' = objet()}], dtype = objet)') . Cependant, les tableaux d'objets n'ont pas d'avantages significatifs par rapport à l'utilisation d'une liste. –

1

Vous pouvez utiliser aussi bien

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

Si vous avez (ou créer) 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=',') 

Note, 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.

Questions connexes