В эластичном поиске одно из моих полей хранит массив значений с плавающей запятой. Например,
-0.13672447204589844, 0.18057402968406677, -0.0991324931383133,
Я пытаюсь получить эти значения и сохранить их в массиве с плавающей точкой. Я использую следующий код:
res=es.search(index="g6jy834005er",body=data)
arr=[]
for hit in res['hits']['hits']:
r="%(encod)s" % hit["_source"]
print(r)
Это печатает массив следующим образом:
[[-0.11659730970859528, 0.019643619656562805, 0.08672580868005753]]
[[-0.11659730970859528, 0.019643619656562805, 0.08672580868005753]]
[[-0.11659730970859528, 0.019643619656562805, 0.08672580868005753]]
[[-0.11659730970859528, 0.019643619656562805, 0.08672580868005753]]
Когда я проверяю тип массива, используя print(type(r))
, я получаю
<class 'str'>
<class 'str'>
<class 'str'>
Я попробовал следующее для преобразования массива str в float:
Trial 1
res = [ eval(x[0]) for x in r ]
Trial 2
res = np.asarray(r, dtype=np.float64, order='C')
Trial 3
res = list(map(float,r))
Никто из них не работал. Как я могу преобразовать массив str в массив float?