Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将astropy表转换为字典列表_Python_List_Dictionary_Astropy - Fatal编程技术网

Python 将astropy表转换为字典列表

Python 将astropy表转换为字典列表,python,list,dictionary,astropy,Python,List,Dictionary,Astropy,我有一个astropy.table.table对象,其中包含星星数据。每颗星一行,列中包含星名、最大星等数据 我知道astropy表的内部表示是每列的dict,行作为dict对象的切片动态返回 我需要将astropy表转换为dict对象的Python列表,每星一个dict。本质上,这既是表的换位,也是转换 显然,我可以按行中的列遍历表,以构建dict并将其添加到列表中,但我希望有一种更有效的方法?“这里有一个想法。我不确定您是否能更高效,除非表很大,最好先使用.as\u数组转换为纯Numpy数组

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

我知道astropy表的内部表示是每列的dict,行作为dict对象的切片动态返回

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


显然,我可以按行中的列遍历表,以构建dict并将其添加到列表中,但我希望有一种更有效的方法?“

这里有一个想法。我不确定您是否能更高效,除非表很大,最好先使用.as\u数组转换为纯Numpy数组:


这里有一个想法。我不确定您是否能更高效,除非表很大,最好先使用.as\u数组转换为纯Numpy数组:


如果您正在寻找一种更紧凑、更难忘的方法,可以将表转换为pandas.DataFrame并使用pandas数据帧的todict方法。将表复制到新对象中可能不是最有效的方法,但根据要转换为的格式,pandas可能会更方便。Astropy表便于使用熊猫和熊猫方法


如果您正在寻找一种更紧凑、更难忘的方法,可以将表转换为pandas.DataFrame并使用pandas数据帧的todict方法。将表复制到新对象中可能不是最有效的方法,但根据要转换为的格式,pandas可能会更方便。Astropy表便于使用熊猫和熊猫方法


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

我最终迭代、切片和复制为列表,在相对较小的数据集上效果很好

你能添加一些数据样本吗?谢谢,将添加一个样本,但我离开atm机几天。你能添加一些数据样本吗?谢谢,将添加一个样本,但我离开atm机几天。
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'}]
>>> from astropy.table.table_helpers import simple_table
>>> simple_table().to_pandas().to_dict(orient='records')
[{'a': 1, 'b': 1.0, 'c': 'c'},
 {'a': 2, 'b': 2.0, 'c': 'd'},
 {'a': 3, 'b': 3.0, 'c': 'e'}]