Respostas:
Bem, se você está lendo os dados como uma lista, apenas faça np.array(map(float, list_of_strings))
(ou, de forma equivalente, use uma compreensão de lista). (No Python 3, você precisará chamar list
o map
valor de retorno se usar map
, já que map
retorna um iterador agora.)
No entanto, se já for uma série de strings, existe uma maneira melhor. Use astype()
.
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
list
. Matrizes Numpy são deliberadamente digitadas de forma homogênea. Se você realmente quiser, pode usar um array de objetos (por exemplo np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object)
). No entanto, as matrizes de objetos não têm nenhuma vantagem significativa sobre o uso de uma lista.
Você pode usar isso também
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Outra opção pode 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 em:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
Se você tiver (ou criar) uma única string, poderá 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=',' )
Observe, x = ','.join(x)
transforma o array x em string '1.1, 2.2, 3.2'
. Se você ler uma linha de um arquivo txt, cada linha já será uma string.