Как преобразовать массив строк в массив поплавков в numpy?
Как преобразовать
["1.1", "2.2", "3.2"]
до
[1.1, 2.2, 3.2]
в NumPy?
4 ответа:
Ну, если Вы читаете данные в виде списка, просто сделайте
np.array(map(float, list_of_strings))
(или эквивалентно, используйте понимание списка). (В Python 3, вам нужно будет позвонитьlist
наmap
возвращаемое значение, если вы используетеmap
Сmap
теперь возвращает итератор.)однако, если это уже массив строк numpy, есть лучший способ. Используйте
astype()
.import numpy as np x = np.array(['1.1', '2.2', '3.3']) y = x.astype(np.float)
вы можете использовать этот инструмент
import numpy as np x=np.array(['1.1', '2.2', '3.3']) x=np.asfarray(x,float)
Если у вас есть (или создать) одну строку, вы можете использовать np.fromstring:
import numpy as np x = ["1.1", "2.2", "3.2"] x = ','.join(x) x = np.fromstring( x, dtype=np.float, sep=',' )
Примечание
x = ','.join(x)
преобразует массив x в строку'1.1, 2.2, 3.2'
. Если Вы читаете строку из txt-файла, каждая строка будет уже строка.
другой вариант может быть numpy.asarray:
import numpy as np a = ["1.1", "2.2", "3.2"] b = np.asarray(a, dtype=np.float64, order='C')
Для Python 2*:
print a, type(a), type(a[0]) print b, type(b), type(b[0])
в результате:
['1.1', '2.2', '3.2'] <type 'list'> <type 'str'> [1.1 2.2 3.2] <type 'numpy.ndarray'> <type 'numpy.float64'>