сохранить в csv - объект numpy .ndarray не имеет атрибута append - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь добавить имена файлов изображений во время обучения в файл csv, но получаю сообщение об ошибке. Я могу распечатать значения нормально, но по какой-то причине не могу добавить в файл csv. Вот полный код:

  File "train_filename.py", line 140, in <module>
    names_preds.append() + '\n'
AttributeError: 'numpy.ndarray' object has no attribute 'append'
        with open('preds_base_model_teste1016.csv','a') as fd:
            #dict_writer = csv.writer(fd)
            #dict_writer.writerow('Target' + '\n')
            #dict_writer.writerow( ','.join(map(str, preds.detach().tolist())) + '\n')
            #dict_writer.writerow('Prediction' + '\n')
            #dict_writer.writerow( ','.join(map(str, targets.detach().tolist())) + '\n')
            #fd.write('Target' + '\n')
            fd.write(','.join(map(str, preds.detach().tolist())) + '\n')
            #fd.write('Prediction' + '\n')
            fd.write( ','.join(map(str, targets.detach().tolist())) + '\n')
            #fd.write('Image_Name' + '\n')
            np.append(paths)
            #fd.write([filename])

1 Ответ

1 голос
/ 08 июля 2020

Используйте concatenate вместо append, как описано в документации .

Однако похоже, что вы ничего не пытаетесь добавить в массив.

Вы должны использовать его так:

names_preds.concatenate(some_value), где значение внутри concatenate - это то, что вы хотите добавить в массив.

Чтобы сохранить массив numpy в csv существует более простой способ:

numpy.savetxt("foo.csv", names_preds, delimiter=",")

См. подробности в этот ответ.

Замените строку:

np.append(paths)

на

with open('preds_base_model_teste1016.csv','a') as fd:
    np.savetxt(fd, names_preds, delimiter=",")

Это добавит все пути к уже указанному вами файлу.

Обновление:

По вашему вопросу в комментарии, чтобы объединить несколько массивов, чтобы вы получите столбцы, вы можете попробовать:

with open('preds_base_model_teste1016.csv','a') as fd:
    np.savetxt(fd, list(zip(a,b,c)), delimiter=",")

, где a, b и c - это массивы, которые вы хотите использовать в качестве столбцов.

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