У меня есть переменная s str, содержащая список значений с плавающей запятой, все, что я хочу преобразовать в массив numpy с типом float64 в python

#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)