我有一个astropy.table.table对象,该对象包含星星数据。每颗星一行,每列包含诸如星名,最大幅度等数据。
我知道,一个天花的表的内部表示是每一列的字典,行作为返回字典对象的切片动态返回。
我需要将astropy表转换成dict对象的Python列表,每颗星一个dict。本质上,这既是表的转换又是转换。
很明显,我可以按行逐列遍历表格以构建字典并将其添加到列表中,但是我希望有一种更有效的方法?
最佳答案
这是一个主意。我不确定是否可以提高效率,除非表很大,最好先使用.as_array()
转换为纯Numpy数组:
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'}]
关于python - 将astropy表转换为词典列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53694408/