Использование содержимого списка в переменной возвращает «TypeError: аргумент float () должен быть строкой или числом, а не ошибкой« set » - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь написать скрипт, который будет извлекать данные из CSV, а затем создавать линейные сегменты при значениях y, соответствующих данным, с использованием .linecollection (аналогично методу, показанному в https://stackoverflow.com/a/21357666/4488288)

Я могу создать список из файла CSV, но получаю "TypeError: float() argument must be a string or a number, not 'set'" ошибка.

Я использую Python 3.7.3

Я новичок в matplotlib и много лет не использовал python, поэтому любая помощь будет полезна - я не привязан к тому, чтобы нуждаться в этом конкретном методе, только в вводе CSV-файлов и выводе диаграмм.

(я пытаюсь создать простые диаграммы уровней ядерной энергии / гротрианы - ни одно из решений, с которыми я столкнулся, не сработало для моих нужд)

Я пытался использовать список (map (float и получил

ValueError: setting an array element with a sequence.

Сбор данных из CSV:

    for row in csv_reader:
        if line_count < 10:
            angmom0.append({row[0]})
            energy0.append({row[1]})
            line_count += 1

Попытка записи содержимого списка (я пытаюсь упростить только одну запись в списке)

lines = [[(0, energy0[0]), (1,energy0[0])], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]
c = np.array([(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1)])

Ожидаемый вывод будет диаграмма, похожая на (https://i.stack.imgur.com/Srl6l.png).] 1

В настоящее время я вообще не могу произвести вывод

Редактировать

Проблема заключалась в фигурных скобках! Спасибо всем за помощь !!

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Когда вы пишете

angmom0.append({row[0]})

Вы добавляете набор с row[0] в список angmom0.Набор - это встроенный в python набор неупорядоченных уникальных элементов.Например, {4, 5, 6, 2} является множеством.Вы создаете их путем написания фигурных скобок, а затем последовательности элементов внутри фигурных скобок.В вашем случае, единственным элементом будет row[0].

Я не знаю точный формат вашего CSV, поэтому не могу сказать точно, однако вы, вероятно, просто хотите сделать angmom0.append(row[0]):) * +1010 *

0 голосов
/ 04 апреля 2019

Вы используете {row[0]} и {row[1]} при сборе данных из файла csv, который в основном создает set, который имеет один элемент.Я не уверен, но вы можете использовать f strings как этот f'{row[0]}'.Вы можете просто удалить {} и сделать row[0], поскольку в любом случае это строка.Я не уверен, что это проблема, но надеюсь, что это помогло.

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