Как преобразовать массив, сохраненный в виде строки в csv, обратно в массив с плавающей точкой? - PullRequest
0 голосов
/ 12 апреля 2020

Мне пришлось объединить много файлов (содержащих вложения слов и другие действительные векторы) на основе некоторых общих атрибутов, поэтому я использовал Pandas DataFrame и сохранил промежуточные файлы как csv.

В настоящее время у меня есть Фрейм данных, столбцы которого выглядят примерно так:

enter image description here

Я хочу объединить все последние 4 столбца (t-1embedding1a, t-1embedding7b, t-2embedding1a , t-2embedding7b) в один вектор для перехода к нейронной сети.

Я планировал перебрать текущий фрейм данных, взять 4 временных тензора со значением каждого столбца, объединить и записать в новый фрейм данных. Однако torch.tensor не работает, как говорится:

torch_tensor = torch.tensor(final['t-1embedding1a'].astype(float).values)

could not convert string to float: '[-6.12873614e-01 -5.58319509e-01 -9.73452032e-01  3.66993636e-01\n  

Я также пытался np.fromstring(), но в этом случае исходные значения теряются.

Извините, если вопрос неоправданно Сложно, я новичок ie для pytorch. Любая помощь приветствуется!

1 Ответ

1 голос
/ 12 апреля 2020

Прежде всего, тип данных для столбцов с "t-lembeddingXX" - это строка, которая выглядит как "[-6.12873614e-01 -5.58319509e-01 -9.73452032e-01 3.66993636e-01]". Вы должны преобразовать их в список с плавающей точкой.

final["t-lembeddingXX"] = final["t-lembeddingXX"].apply(lambda x : [float(x) for x in x.replace("[", "").replace ("]", "").split()])

Затем вы должны проверить, что каждый список final.loc[i,"t-lembeddingXX"] имеет одинаковую длину.

Если я не ошибся , вы хотите объединить 4 столбца в один вектор.

all_values = list(df["t-lembeddingX1"]) + list(df["t-lembeddingX2"]) + list(df["t-lembeddingX3"]) + list(df["t-lembeddingX4"])
# there is sureliy a better way

Затем перейти к тензору:

torch_tensor = torch.tensor(all_values)

------------

Наконец, я советую вам взглянуть на функцию torch.cat. Вы можете преобразовать каждый столбец в вектор, а затем использовать эту функцию для объединения их вместе.

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