1

おそらくアシュリーの投稿と重複しています(ただし、まだコメントできません;))。

最初のFITS_rec ( numpyrecarrayに基づく)のサブセレクション/サンプルに列を追加しようとすると、同じ問題が発生します。すべての行が再表示されます(そして、この新しい列の入力は尊重されていないようです...)。Vlas Sokolov によって提案された" hdu_sliced._get_raw_data() " は、私にとって非常にうまく機能しているソリューションですが、私は疑問に思っていました:

1) イグアナノートが提案する「より良い方法」とは? 私は確かに誰かが私のためにそれをグーグルする必要があります。初心者の私は行き詰まりを感じています:$ ( FITS_recにとどまる必要があります)。

2) それは予想される動作ですか? つまり、元の配列のコピーである「マスクされた配列」で作業したいのでしょうか? 私が最も心配しているのは、新しい計算列の値の「崩壊」です。下記参照:

# A nice FITS_rec
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)

ori_rec=hdu.data

ori_rec
`

FITS_rec([('NGC1001', 11.1), ('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag' 、 '

# Sub-selection
bug=ori_rec[ori_rec["V_mag"]>12.]
bug

FITS_rec([('NGC1002', 12.3), ('NGC1003', 15.2)], dtype=(numpy.record, [('target', 'S20'), ('V_mag', '

ここまでは順調ですね...

# Let's add a new column
col0=bug.columns
col1 =fits.ColDefs([fits.Column(name='new',format='D',array=bug.field("V_mag")+1.)])
newbug = fits.BinTableHDU.from_columns(col0 + col1).data

FITS_rec([('NGC1001', 11.1, 13.30000019), ('NGC1002', 12.3, 16.20000076), ('NGC1003', 15.2, 0.)], dtype=(numpy.record, [('ターゲット', 'S20 '), ('V_mag', '

...AND ... NGC1002 と NGC1003 の新しい列の値は正しいですが、それぞれ NGC1001 と NGC1002 の行にあります... :|

どんな啓発も歓迎されます:)

4

1 に答える 1