Что означает формат в fits.Column ()? - PullRequest
0 голосов
/ 27 мая 2020
• 1000 И что их изменение означает для моего файла подгонок? Ответа, похоже, нет нигде в документации по астропии.

Это код из руководства по документации:

import numpy as np
from astropy.io import fits

a1 = np.array(['NGC1001', 'NGC1002', 'NGC1003'])
a2 = np.array([11.1, 12.3, 15.2])
col1 = fits.Column(name='target', format='20A', array=a1)
col2 = fits.Column(name='V_mag', format='E', array=a2)

cols = fits.ColDefs([col1, col2])

hdu = fits.BinTableHDU.from_columns(cols)

hdu.writeto('table3.fits')

1 Ответ

0 голосов
/ 28 мая 2020

Ответ на ваш вопрос в документации здесь . Однако это низкоуровневые детали формата FITS. Если вы еще не очень хорошо знакомы с FITS и просто хотите создать таблицу, используйте Table

более высокого уровня. Например, та же таблица может быть создана как:

>>> from astropy.table import Table
>>>  t = Table({
...     'target': np.array([b'NGC1001', b'NGC1002', b'NGC1003'], dtype='S20'),
...     np.array([11.1, 12.3, 15.2])
...})

Теперь у вас есть репрезентация таблицы, которая совсем не c соответствует FITS, но вы можете записать ее в файл FITS, например:

>>> t.write('table.fits', format='fits')

И результат будет примерно тот же самый. Он будет обрабатывать преобразование dtypes в соответствующие типы столбцов FITS. Обычно необходимо использовать низкоуровневую библиотеку только в том случае, если вам нужен детальный контроль над точным форматом файла FITS, но ваш опыт может отличаться.

Кстати, когда вы делаете таблицу так, как вы это делали, это в большинстве случаев в течение долгого времени не было необходимости явно создавать объект ColDefs. Вы можете просто передать простой список столбцов в BinTableHDU.from_columns, например BinTableHDU.from_columns([col1, col2]). Тот факт, что класс ColDefs вообще доступен пользователям, в основном является устаревшим случаем или для некоторых очень специальных целей. Документы могли бы лучше подчеркнуть, что это не важно.

...