Numpy: Как преобразовать массив строк в плавающее, в то время как некоторые элементы содержат дополнительные строки в кавычках - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь преобразовать строку в тип с плавающей запятой следующим образом

X = arr[:,:-1].astype(np.float32)

Однако появляется ошибка, как показано ниже

ValueError: could not convert string to float: '"53"'

Я знаю, это означает, что у меня есть некоторые элементы с дополнительнымицитата в массиве.Моя проблема в том, как мне решить эту проблему.Как я могу преобразовать элемент "53" в 53 внутри массива?

ОБНОВЛЕНИЕ 1: Вот пример для воспроизведения

import numpy as np
a = np.array([['12','13'],['"53"','44']])
a = a.astype(np.float32)

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Вы также можете использовать numpy.char.replace() для поэлементной замены строки в массиве строк.

Подпись: np.char.replace(a, old, new, count=None)

Документация: Для каждый элемент в a, возвращает копию строки со всеми вхождениями подстроки old заменены на new. Звонки str.replace поэлементно.


import numpy as np
a = np.array([["12","13"],['"53"',"44"]])

b = np.char.replace(a, '"', '')
c = b.astype(np.float32)
0 голосов
/ 14 ноября 2018

Попробуйте зачистить двойные кавычки из массива, затем приведение к плавающему.

Вот так:

arr = np.char.strip(arr, '"')
X = arr[:,:-1].astype(np.float32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...