#python #numpy
#python #numpy
Вопрос:
s = "[-3.34 -0.34]"
тип s — str, а его размер равен 1
что нужно, так это преобразовать этот str в массив numpy float64 примерно так
s = [-3.34 -0.34]
Комментарии:
1. Как правило, для решения этих проблем просмотр конкретной строки недостаточно информации. Например, всегда ли будет работать правило удаления первого, последнего и отдельного в пространстве (которое тривиально для записи и работает здесь)?
2. Это выглядит как
str
отображение массива. Это не предназначено для восстановления массива. Вам нужно превратить его в список строк, которые по отдельности могут быть преобразованы в float.
Ответ №1:
np.array(list(map(float, s[1:-1].split())))
s[1:-1]
распечатает все между скобками в виде строки.
.split()
разделит строку по пробелам на список из 2 строк.
map()
преобразует строки в числа с плавающей запятой.
list()
преобразует объект map в список.
np.array()
преобразует список в массив numpy.
print(s[1:-1].split())
# "-3.34 -0.34"
print(map(float, s[1:-1].split()))
# <map object at 0x108146128>
print(list(map(float, s[1:-1].split())))
# [-3.34, -0.34]
print(np.array(list(map(float, s[1:-1].split()))))
# [-3.34 -0.34]
Ответ №2:
Не уверен, что вы ищете, потому что в вашем выражении нет запятой, но, предполагая, что вы просто хотите создать массив, вы можете сделать это :
expr = "[-3.34, -0.34]"
s = eval(expr)