猿问

将astropy表转换为字典列表

我有一个包含星星数据的 astropy.table.table 对象。每颗星占一行,其中列包含星名、最大幅度等数据。

我知道一个astropy表的内部表示是每列的一个dict,行作为跨越dict对象的切片即时返回。

我需要将 astropy 表转换为 dict 对象的 Python 列表,每颗星一个 dict。本质上,这既是表格的换位,也是转换。

我显然可以按行内的列遍历表,以构建字典并将它们添加到列表中,但我希望有更有效的方法?


繁星淼淼
浏览 145回答 3
3回答

长风秋雁

这是一个想法。我不确定你是否可以更有效率,除非表很大,最好先转换为纯 Numpy 数组.as_array():In [1]: from astropy.table.table_helpers import simple_tableIn [2]: t = simple_table()In [3]: tOut[3]:&nbsp;<Table length=3>&nbsp; a&nbsp; &nbsp; &nbsp; b&nbsp; &nbsp; &nbsp;c&nbsp;&nbsp;int64 float64 str1----- ------- ----&nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp;1.0&nbsp; &nbsp; c&nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp;2.0&nbsp; &nbsp; d&nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp;3.0&nbsp; &nbsp; eIn [4]: names = t.colnamesIn [5]: [dict(zip(names, row)) for row in t]Out[5]:&nbsp;[{'a': 1, 'b': 1.0, 'c': 'c'},&nbsp;{'a': 2, 'b': 2.0, 'c': 'd'},&nbsp;{'a': 3, 'b': 3.0, 'c': 'e'}]

江户川乱折腾

我最终迭代、切片和复制为列表,这在相对较小的数据集上运行良好。
随时随地看视频慕课网APP

相关分类

Python
我要回答