首页 文章

将astropy表转换为字典列表

提问于
浏览
1

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

我理解一个astropy表的内部表示是每列的一个dict,其中的行作为切片跨越dict对象即时返回 .

我需要将astropy表转换为dict对象的Python列表,每个星形有一个dict . 从本质上讲,这既是表的转置,也是转换 .

我显然可以通过行中的列遍历表,来构建dicts并将它们添加到列表中,但我希望有更有效的方法吗?

1 回答

  • 2

    这是一个想法 . 我不确定你是否可以更有效率,除非表格很大,最好先用 .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'}]
    

相关问题