1

pyfits でファイルを連結しようとしています。それらが正しく行われていないため、列名の1つと列形式の1つが入力ファイル間で同じではないため、np.concatenateを使用してndarrayを連結できません...

列名を(巧妙な方法で)変更したいと思います。pyfits のドキュメントで pyfits.Coldefs.change_name 関数 ( http://pythonhosted.org/pyfits/api_docs/api_tables.html#coldefs ) を見つけたので、現在行っていることは次のとおりです。

hdu = pyfits.open(myfile,memmap=True)[1]
new_columns = pyfits.ColDefs(hdu.columns).change_name(前の名前,新しい名前)

私も試しました:

hdu = pyfits.open(myfile,memmap=True)[1]
new_columns = pyfits.ColDefs(hdu.columns).change_attrib(prev_name,'names',new_name)

これは None 型のオブジェクトを返します。私が欠けているものはありますか?

ありがとう

4

2 に答える 2

1

この質問に対する私の以前のコメントはまだ残っていますが、これらのメソッドが基本的に機能するように、Astropy v1.0.2 で実際にこれを修正しました ( https://github.com/astropy/astropy/pull/3283 )。列の名前を変更するには、次のように簡単です。

hdu.columns[prev_name] = new_name

これにより、Numpy 配列自体と、テーブルが FITS に書き戻されるときの両方で、列の名前が変更されます。

フォーマットの変更はそれほど単純ではなく、現時点では新しいテーブルを作成する必要があります。

于 2015-09-10T22:04:50.103 に答える
0

バージョン 4.0.1post1 のソリューション

hdu.columns[prev_name] = new_name

動作しません。「ColDefs」がアイテムの割り当てをサポートしていないと文句を言います。これを解決するには、名前を直接変更する必要があります。

hdu.columns[prev_name].name = new_name
于 2021-05-06T07:43:06.173 に答える