Как преобразовать строку из pandas dataframe в 3-мерный массив в numpy - PullRequest
0 голосов
/ 13 июня 2019

Я экспортировал фрейм данных pandas, содержащий массив фигур (75, 100, 3), в csv. Когда я импортирую этот CSV-файл, чтобы получить мой dataframe, мой массив numpy представляет собой строку. У меня так много проблем, пытаясь преобразовать эту строку в массив массивов (75, 100, 3).

Моя строка похожа на:

[[[198 113 144],  [212 137 157],  [213 133 158]

Я пробовал несколько способов преобразовать это в массив 3d-NUmpy без успеха. Например, во фрагменте кода я продолжаю получать массив строк.


train = pd.read_csv(os.path.join(data_dir, 'trainset.csv'))
train['image'] = train['image'].map(lambda x: x.replace('\n',','))
train['image'] = train['image'].map(lambda x: np.asarray(x))

Кто-нибудь знает простой способ справиться с этим?

1 Ответ

0 голосов
/ 13 июня 2019

По умолчанию метод asarray выведет тип данных из самих данных.Поскольку вы читаете из файла CSV, все они являются строками.

Вы можете использовать параметр dtype метода np.asarray, чтобы установить тип данных.

import numpy as np
data = [['3','4'],['45','75']]
num_array = np.asarray(data, dtype=np.int)
print(num_array.dtype)

Такваш код просто должен измениться на:

train = pd.read_csv(os.path.join(data_dir, 'trainset.csv'))
train['image'] = train['image'].map(lambda x: x.replace('\n',','))
train['image'] = train['image'].map(lambda x: np.asarray(x, dtype=np.int))

Где вы можете изменить dtype = int на np. Какой бы тип данных вы ни выбрали.

...