У меня есть фреймворк pandas, содержащий идентификатор изображения, класс изображения и данные изображения:
img_train.head(5)
ID index class data
0 10472 10472 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
1 7655 7655 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
2 6197 6197 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
3 9741 9741 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
4 9169 9169 0 [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
Я пытаюсь преобразовать каждый из этих столбцов в массив numpy:
train_img_array = np.array([])
train_id_array = np.array([])
train_lab_array = np.array([])
count = 0
for index, row in img_train.iterrows():
imgid = row['ID']
imgclass = row['class']
imgdata = row['data']
#print(imgdata)
train_img_array = np.append(train_img_array, imgdata )
train_lab_array = np.append(train_lab_array, imgclass )
train_id_array = np.append(train_id_array, imgid )
Однако столбец, содержащий данные изображения и имеющий тип «объект», не переводится в соответствующую строку в массиве numpy. Например, это форма каждого массива numpy после обработки 58 строк из исходного фрейма данных:
train_img_array.shape
train_lab_array.shape
train_id_array.shape
(93615200,)
(58,)
(58,)
Как я могу это исправить?
Не могли бы вы дать больше информации? Особенно полезны row['ID'].values.dtype, row['class'].values.dtype и row['data'].values.dtype.
@ Scotty1- Вот dtypes: ID int64 *** class int64 *** data object *** dtype: object
Спасибо, но вам следует улучшить форматирование кода, чтобы он был удобочитаемым. И дополнительная информация о формах и т. д. Также поможет.
img_train.values должен дать вам массивный массив, не так ли?
@ Сорен: Да, это так
@ Scotty1-: я уже добавил детали, связанные с формой, в пост
Нет, не соответствующие. imgdata.shape?
img_train ['data']. shape дает следующее: (8020,)
Это не может быть нормально, так как в вашем вопросе вы говорите, что получившаяся форма - это (93615200,). Нет никакого способа, чтобы это умножалось на 58 или 8020. В ваших данных должны быть какие-то неправильные формы.
@ Scotty1-: Это проблема. Img_train - это фрейм данных pandas, который правильно хранит данные. Я пытаюсь преобразовать столбец данных фрейма данных pandas в массив numpy. Вот когда я сталкиваюсь с указанной проблемой






Я нашел ответ на этот вопрос. Это довольно просто, и я просто не видел этого с самого начала. Вот как я получаю данные объекта в массиве numpy (.values :))
train_img_array = np.array([])
train_id_array = np.array([])
train_lab_array = np.array([])
train_id_array = img_train['ID'].values
train_lab_array = img_train['class'].values
train_img_array =img_train['data'].values
#train_img_array = np.row_stack(img_train['data'])
Вам не нужно объявлять массивы заранее, если вы не хотите указывать размер массивов.
Он возвращает что-то вроде этого: array ([array ([[[255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0], ..., [255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0]],