Ошибка выбора Python: TypeError: объект выбора не возвращает список.Проблема с NumPy? - PullRequest
2 голосов
/ 18 января 2012

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

Traceback (most recent call last):
  File "script.py", line 980, in <module>
    main()
  File "script.py", line 956, in promoter_main
    open(os.path.join(pickle_dir, 'doublep.pickle'), 'rb'))
  File "/usr/lib/python2.6/pickle.py", line 1370, in load
    return Unpickler(file).load()
  File "/usr/lib/python2.6/pickle.py", line 858, in load
    dispatch[key](self)
  File "/usr/lib/python2.6/pickle.py", line 1217, in load_build
    setstate(state)
  File "/home/jmerkin/software/numpy/numpy/ma/core.py", line 5468, in __setstate__
    ndarray.__setstate__(self, (shp, typ, isf, raw))
TypeError: object pickle not returning list

Как я уже говорил, у одного все в порядке (список экземпляров SingleP), а при выдаче (экземпляры) у меня возникает эта ошибкаDoubleP).Я не решаюсь опубликовать весь код для класса, потому что он длинный, но в основном у него есть пара методов, которые заполняют некоторые атрибуты.Эти атрибуты состоят из логических значений, списков кортежей, строк, целых или списков numpy.ma.arrays.Некоторые из этих массивов замаскированы numpy.nan.

Возможно, это связано с проблемой: http://projects.scipy.org/numpy/ticket/897. В этом случае проблема заключается в массивах с np.object в качестве dtype массива.Тем не менее, я собирал и обрабатывал numpy.ma.arrays, в том числе массивы, которые маскировали numpy.nan, без проблем в течение достаточно долгого времени.

Я что-то глупо теряю при травлении?Я не изменяю объект между тем, когда он был протравлен, и когда я пытаюсь открепить.


я переписал биты кода так, чтобы вместо того, чтобы иметь массив измерений nxmxl в качестве некоторых атрибутов, у меня естьсписок с n записями, каждая из которых является массивом mxl, и теперь она счастлива и расслаивается.Я очень смущен, но это работает.Я не собираюсь закрывать это, потому что мои вопросы остаются, почему я получил эту ошибку?

1 Ответ

0 голосов
/ 16 июля 2014

У меня была очень похожая проблема: я переписал скрипт, чтобы значения np.nan также были замаскированы (я бы хотел, чтобы numpy, scipy и matplotlib могли обрабатывать массивы последовательно), но это вызвало ошибку pickle.load(). Я избавился от замаскированных массивов, и все снова заработало. Решение, кажется, состоит в том, чтобы добавить и удалить маски, чтобы угодить мариновать. Я знаю, что это не слишком удачное решение, но, похоже, оно работает.

...