为了账号安全,请及时绑定邮箱和手机立即绑定

将astropy表转换为字典列表

将astropy表转换为字典列表

繁星淼淼 2021-09-11 17:51:41
我有一个包含星星数据的 astropy.table.table 对象。每颗星占一行,其中列包含星名、最大幅度等数据。我知道一个astropy表的内部表示是每列的一个dict,行作为跨越dict对象的切片即时返回。我需要将 astropy 表转换为 dict 对象的 Python 列表,每颗星一个 dict。本质上,这既是表格的换位,也是转换。我显然可以按行内的列遍历表,以构建字典并将它们添加到列表中,但我希望有更有效的方法?
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

这是一个想法。我不确定你是否可以更有效率,除非表很大,最好先转换为纯 Numpy 数组.as_array():


In [1]: from astropy.table.table_helpers import simple_table


In [2]: t = simple_table()


In [3]: t

Out[3]: 

<Table length=3>

  a      b     c  

int64 float64 str1

----- ------- ----

    1     1.0    c

    2     2.0    d

    3     3.0    e


In [4]: names = t.colnames


In [5]: [dict(zip(names, row)) for row in t]

Out[5]: 

[{'a': 1, 'b': 1.0, 'c': 'c'},

 {'a': 2, 'b': 2.0, 'c': 'd'},

 {'a': 3, 'b': 3.0, 'c': 'e'}]


查看完整回答
反对 回复 2021-09-11
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我最终迭代、切片和复制为列表,这在相对较小的数据集上运行良好。


查看完整回答
反对 回复 2021-09-11
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信