Python 如何使用正确的轴格式将多维数组写入fits?

Python 如何使用正确的轴格式将多维数组写入fits?,python,multidimensional-array,fits,Python,Multidimensional Array,Fits,我有一个两个数组的列表,它返回两个数组,如下所示: mainarray = array1, array2 array1的大小可以说是50。然而,array2是形状的多维[100,100,50],其中说[100,100]是天空坐标,对于每个天空坐标,我们有50值对应于array1。现在,我想将这些数据写入一个fits文件,其中前两个轴对应于[100100]数据点,第二个轴对应于array1和array2[axis=2]的[50,50]值。这样做的正确方式是什么?威尔 hdu = fits

我有一个两个数组的列表,它返回两个数组,如下所示:

mainarray = array1, array2
array1
的大小可以说是
50
。然而,
array2
是形状的多维
[100,100,50]
,其中说
[100,100]
是天空坐标,对于每个天空坐标,我们有
50
值对应于
array1
。现在,我想将这些数据写入一个fits文件,其中前两个轴对应于
[100100]
数据点,第二个轴对应于
array1
array2[axis=2]
的[50,50]值。这样做的正确方式是什么?威尔

    hdu = fits.PrimaryHDU(mainarray)
    hdu.writeto('skymap.fits', clobber = True)

工作

你试过了吗?如果没有,出了什么问题?通常情况下可能不是这样——FITS文件可以包含一个或多个数组,每个数组位于单独的HDU(头数据单元——一个数组加元数据对)中。每个阵列都是异构的,您可以将两个不同形状的阵列组合成一个HDU。但是,您可以将每个阵列写入单独的HDU。或者,根据您的解释,表格也可能是合适的。我会担心将数据写入FITS文件的具体机制,首先更好地解释数据的抽象表示。实际上,它是有效的。在操作数据立方体时我需要小心,但是存储工作得很好。真的这样吗?如果您正确地解释了所做的操作,则表示您正在将两个不同形状的
ndarray
s的元组传递到
PrimaryHDU
构造函数中。如果,奇迹般的是,它没有立即崩溃,它最终会崩溃,因为对于一个单一的HDU来说,这不是一个合理的数据结构。是的,我刚刚尝试了这个,它像我预期的那样立即崩溃。是的,我再次尝试,它崩溃了。有趣的是,它似乎第一次工作,但当我查看DS9中的fits文件时,它没有显示任何内容,因此出于某种原因,它没有显示任何错误,即使它第一次不工作。