Как преобразовать массив строк в массив с плавающей точкой в ​​NumPy? - PullRequest
98 голосов
/ 07 октября 2010

Как конвертировать

["1.1", "2.2", "3.2"]

до

[1.1, 2.2, 3.2]

в NumPy?

Ответы [ 4 ]

149 голосов
/ 07 октября 2010

Что ж, если вы читаете данные в виде списка, просто сделайте np.array(map(float, list_of_strings)) (или эквивалентно, используйте понимание списка).(В Python 3 вам нужно вызвать list для возвращаемого значения map, если вы используете map, поскольку map теперь возвращает итератор.)

Однако, если это ужемассив строк, есть лучший способ.Используйте astype().

import numpy as np
x = np.array(['1.1', '2.2', '3.3'])
y = x.astype(np.float)
4 голосов
/ 17 сентября 2017

Вы также можете использовать это

import numpy as np
x=np.array(['1.1', '2.2', '3.3'])
x=np.asfarray(x,float)
2 голосов
/ 12 июня 2018

Другой вариант может быть 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'>
2 голосов
/ 04 октября 2017

Если у вас есть (или вы создали) одну строку, вы можете использовать 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'. Если вы читаете строку из текстового файла, каждая строка уже будет строкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...