#python #pandas #numpy #iterator
#python #pandas #numpy #итератор
Вопрос:
Я новичок в Pandas, и я часами пытаюсь решить свою проблему, но мне не удалось ее решить. Я видел несколько диалогов stackoverflow, но ни один из них не похож на мою проблему.
У меня есть два фрейма данных, обучающий с формой (256, 800) и метками (1, 800), каждая метка соответствует одной цифре 0-9, и я хочу создать 10 массивов numpy, где каждый содержит только обучающие данные i разряда.
Если первый обучающий пример (1*256) имеет метку 0, чтобы присвоить столбец (1*256) обучения первому массиву numpy и так далее. т.е. повторяя один фрейм данных, присваивайте массив numpy на основе условия другому фрейму данных. Если, например, у меня 89 «нулей», то массив numpy «нулей» будет равен 256 * 89..
Заранее спасибо
Комментарии:
1. можете ли вы быть более конкретными, приведя несколько примеров
2. Предположим, у вас есть обучающий набор данных (df), состоящий из 256 строк и 800 столбцов, то есть 800 экземпляров (изображений) по 256 пикселей, и у вас также есть другой набор данных, называемый labels 1 * 800 каждый, каждое изображение набора обучающих данных имеет метку в соответствующей позиции набора данных меток. Метки равны 0-9, и вы хотите извлечь из каждой все нули и создать новый массив numpy, все единицы в новый массив numpy и так далее
Ответ №1:
Это должно сработать: dict — это словарь, а ключи ссылаются на метки. Я предполагаю, что labels — это фрейм данных с одной строкой и несколькими столбцами, вот почему я его транспонировал.
dict = {0:[], 1:[], 2:[], 3:[], 4:[], 5:[], 6:[], 7:[], 8:[], 9:[]}
for i in range(df.shape[0]):
dict[labels.T.[i]].append(df.iloc[i, :])