Jak konwertować
["1.1", "2.2", "3.2"]
do
[1.1, 2.2, 3.2]
w NumPy?
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ć list
na map
wartości zwracanej, jeśli używasz map
, ponieważ map
zwraca 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 (npnp.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ć
źródło
Inną opcją może być numpy.asarray :
W przypadku Pythona 2 *:
w wyniku:
źródło
Jeśli masz (lub tworzysz) pojedynczy ciąg, możesz użyć np.fromstring :
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.źródło