我有一个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/

10-14 17:42
查看更多