1

我是这个领域的初学者。我有一个包含三列的文本文件:X,Y,(X,Y)处的强度。它们基本上是数组(1X10000),每个数组都通过 python 写在文本文件中。要在 python 中绘制数据集,我可以简单地使用 trisurf 来实现这一点。但为了进一步处理,我需要从中创建一个适合的图像。如何从此文本文件中制作 FITS 图像(而不是简单的 FITS 表)(最好通过 python 或 matlab)。

4

2 回答 2

3

您应该能够主要使用 Astropy 来执行此操作。细节有点模糊,但您应该能够将文本文件读入 Astropy 表,例如:

>>> from astropy.table import Table
>>> table = Table.read('/path/to/text/file.txt', format='ascii')

您最终传递给的选项Table可能在很大程度上取决于表格的格式。

然后,您需要将列转换为 Numpy 数组。您的问题陈述有点含糊,但如果您表中的坐标只是像素坐标,您应该能够执行以下操作:

>>> import numpy as np
>>> img = np.zeros((len(table), len(table))
>>> for x, y, intensity in table:
...     img[x, y] = intensity

(我不得不怀疑 Numpy 是否有更巧妙的方式来做到这一点,但我不知道。)

然后将图像保存到 FITS 文件:

>>> from astropy.io import fits
>>> fits.writeto('filename.fits', img)

这是非常高级的过程。细节很大程度上取决于您的数据。

于 2015-03-06T15:54:53.873 回答
0

实际上它更容易,因为您不需要转换为 NumPy 数组阶段。

  1. 打开 ASCII
from astropy.table import Table
from astropy.io import fits
table = Table.read('filename.txt', format='ascii')
  1. 写入适合文件:
table.write('filename.fits', format='fits')
于 2017-04-24T08:36:12.220 回答