首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python酸洗错误: TypeError:对象选择不返回列表

Python酸洗错误: TypeError:对象选择不返回列表
EN

Stack Overflow用户
提问于 2017-03-06 19:54:21
回答 1查看 559关注 0票数 1

我知道,如果这个非常古老的问题Python泡沫化错误: TypeError:对象泡菜不返回列表。和numpy有意见吗?,但唯一的答案是相当模糊的。

这是在Python3.6中复制问题的代码。

代码语言:javascript
复制
import pickle
from astroquery.irsa import Irsa
from astropy import units as u

# Query region.
table = Irsa.query_region("m31", catalog="fp_psc", spatial="Cone",
                          radius=.5 * u.arcmin)

# Dump table.
with open('table.pkl', 'wb') as f:
    pickle.dump(table, f)

# This is where the issue appears.
with open('table.pkl', 'rb') as f:
    table = pickle.load(f)

当尝试加载经过腌制的数据时,它会失败,因为:

代码语言:javascript
复制
Traceback (most recent call last):
  File "/home/gabriel/Descargas/test.py", line 17, in <module>
    table2 = pickle.load(f)
  File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/astropy/table/column.py", line 238, in __setstate__
    super_class.__setstate__(self, state)
  File "/home/gabriel/anaconda3/envs/cat-match/lib/python3.6/site-packages/numpy/ma/core.py", line 5869, in __setstate__
    super(MaskedArray, self).__setstate__((shp, typ, isf, raw))
TypeError: object pickle not returning list

我怎么才能避开这一切?

使用康达,您可以使用以下方法在Python3环境中安装需求:

代码语言:javascript
复制
conda install astropy
conda install -c astropy astroquery
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 20:11:37

链接的答案提到了numpy掩码数组,在解开它们时会引起麻烦。考虑到不稳定的表可能确实有蒙面条目(并不是每个对象或位置都有值,例如,每个波段或任何相关列),这确实可能是问题的根源:蒙面数组。

numpy问题也说明了这个问题:带对象dtype的蒙面数组不解锁。这似乎在拉动请求8122中得到了解决。

浏览Numpy 1.12.0发布说明在那里显示了这个拉请求。因此,除非您已经使用了numpy 1.12,否则升级numpy可能是值得的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42634397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档