FITSファイルにPyFITSでブール構造化配列を書きたいと思います。いくつか問題がありました。簡単な例を次に示します。
テスト辞書を作成し、それを構造化配列に変換します。
In [241]: test = {'p':np.array([True]*10+[False]*10,dtype='b')}
In [242]: test = np.core.records.fromarrays(list(test.values()), names=list(test.keys()))
これは、.fit ファイルに出力したいテスト構造化配列です。
In [243]: test
Out[243]:
rec.array([(1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (1,), (0,),
(0,), (0,), (0,), (0,), (0,), (0,), (0,), (0,), (0,)],
dtype=[('p', 'i1')])
pyfits を使用して fit ファイルにテストを出力します
In [244]: pyfits.writeto('./test.fit',test,clobber=True)
In [245]: d = pyfits.open('./test.fit')
In [246]: d = d[1].data
ただし、次のように、すべてのエントリが False 値に設定されるようになりました。
In [247]: d
Out[247]:
FITS_rec([(False), (False), (False), (False), (False), (False), (False),
(False), (False), (False), (False), (False), (False), (False),
(False), (False), (False), (False), (False), (False)],
dtype=[('p', 'i1')])
さらに、元のテスト配列も pyfits によって何らかの形で変更されているようです。
In [248]: prova
Out[248]:
rec.array([(70,), (70,), (70,), (70,), (70,), (70,), (70,), (70,), (70,),
(70,), (70,), (70,), (70,), (70,), (70,), (70,), (70,), (70,),
(70,), (70,)],
dtype=[('p', 'i1')])
この問題を解決するのを手伝ってくれませんか? どうもありがとうございました!