Использование массива индикаторов для построения таблицы Astropy - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть два каталога, которые я хочу встроить в таблицу Astropy, и я не могу заставить их работать.Оба массива имеют разную длину, и у меня есть третий массив, который содержит индексы, которые мне нужно использовать для построения таблицы.Два каталога выглядят следующим образом:

c1['x'] = [11.7, 13.8, 19.2, 15.0]
c2['x'] = [12.0, 13.6, 14.5]
idx = [0, 2]

Мне нужно создать таблицу, которая включает в себя только первую и третью записи в двух каталогах.Я попытался:

from astropy.table import Table
t = Table([idx, c1, cat2], names=('idx', 'x', 'x'))   
t

Это дает мне ошибку: «Непоследовательная длина столбца данных: {4, 3}» Я чувствую, что могу пойти по этому странному пути.

1 Ответ

0 голосов
/ 04 февраля 2019

Используйте массивы Numpy вместо списков Python для представления ваших данных и примените индекс выбора строки idx перед созданием Table.

>>> import numpy as np
>>> from astropy.table import Table
>>> c1x = np.array([11.7, 13.8, 19.2, 15.0])
>>> c2x = np.array([12.0, 13.6, 14.5])
>>> idx = np.array([0, 2])
>>> c1x[idx]
array([11.7, 19.2])
>>> c2x[idx]
array([12. , 14.5])
>>> table = Table()
>>> table['c1x'] = c1x[idx]
>>> table['c2x'] = c2x[idx]
>>> table
<Table length=2>
  c1x     c2x  
float64 float64
------- -------
   11.7    12.0
   19.2    14.5

В таблице Astropy внутренне хранятся данные в виде массивов Numpy, поэтомуесли у вас уже есть две таблицы c1 и c2, вы можете сделать это:

>>> c1 = Table()
>>> c1['x'] = [11.7, 13.8, 19.2, 15.0]
>>> c2 = Table()
>>> c2['x'] = [12.0, 13.6, 14.5]
>>> idx = [0, 2]
>>> t = Table()
>>> t['c1x'] = c1['x'][idx]
>>> t['c2x'] = c2['x'][idx]
>>> t
<Table length=2>
  c1x     c2x  
float64 float64
------- -------
   11.7    12.0
   19.2    14.5

Существует множество различных способов создания таблиц, выбора из них строк и столбцов или объединения данных из двухтаблицы в новую таблицу.Например, в вашем случае вы можете применить idx, чтобы выбрать соответствующие строки в каждой таблице c1 и c2, а затем объединить две таблицы (которые теперь имеют одинаковое количество строк).См. Таблицы Астропии .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...