Odpowiedzi:
Cóż, jeśli czytasz dane jako listę, po prostu zrób np.array(map(float, list_of_strings))(lub równoważnie, użyj rozumienia listy). (W Pythonie 3, trzeba zadzwonić listna mapwartości zwracanej, jeśli używasz map, ponieważ mapzwraca iterator teraz).
Jeśli jednak jest to już numeryczna tablica ciągów, jest lepszy sposób. Użyj astype().
import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
list. Numpy tablice są celowo jednorodnie wpisywane. Jeśli naprawdę chcesz, możesz użyć tablicy obiektów (np np.array(['apple', 1.2, 1, {'b'=None, 'c'=object()}], dtype=object).). Jednak tablice obiektów nie mają żadnych znaczących zalet w porównaniu z używaniem listy.
Możesz również tego użyć
import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
Inną opcją może być numpy.asarray :
import numpy as np
a = ["1.1", "2.2", "3.2"]
b = np.asarray(a, dtype=np.float64, order='C')
W przypadku Pythona 2 *:
print a, type(a), type(a[0])
print b, type(b), type(b[0])
w wyniku:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'>
[1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>
Jeśli masz (lub tworzysz) pojedynczy ciąg, możesz użyć np.fromstring :
import numpy as np
x = ["1.1", "2.2", "3.2"]
x = ','.join(x)
x = np.fromstring( x, dtype=np.float, sep=',' )
Uwaga, x = ','.join(x)przekształca tablicę x na ciąg '1.1, 2.2, 3.2'. Jeśli czytasz wiersz z pliku txt, każda linia będzie już ciągiem.