我目前正在使用一些拟合表,而我在Astropy.io.fits中输出时出现问题。基本上,我正在切出一堆行,这些行包含我不感兴趣的对象的数据,但是当我保存新表时,所有这些行都神奇地重新出现。
例如:
sudo locale-gen sk_SK.UTF-8
sudo dpkg-reconfigure locales
现在,我天真的头脑期待" hdu"有6行,hdu_sliced有4行,这是你使用np.size()时会得到的。因此,如果我保存hdu_sliced,新的拟合文件也将有4行:
import astropy.io.fits as fits
import numpy as np
hdu = fits.open('some_fits_file.fits')[1].data
sample_slice = [True True True False False True]
hdu_sliced = hdu[sample_slice]
所以我用切片摆脱的那两行由于某种原因实际上并没有从表中删除,输出的文件与原始文件完全相同。
如何从表中删除我不想要的行,然后将新数据输出到新文件?
干杯, 阿什利
答案 0 :(得分:4)
您可以使用astropy.table.Table代替astropy.io.fits.BinTable吗?
它是一个更友好的表格对象。
进行行选择的一种方法是使用所需行的列表(或数组)索引到表对象:
$result = DB::table('User as U')
->join('Registration_Update as RU', 'RU.user_id', '=', 'U.id')
->select('U.*', DB::raw("DATE_FORMAT(MAX(RU.created_at),'%m/%d/%Y %H:%i:%s') as lastRegistrationUpdate"))
->whereNull('RU.deleted_at')
->groupBy('U.id')
->get();
您可以使用>>> from astropy.table import Table
>>> table = Table()
>>> table['col_a'] = [1, 2, 3]
>>> table['col_b'] = ['spam', 'ham', 'jam']
>>> print(table)
col_a col_b
----- -----
1 spam
2 ham
3 jam
>>> table[[0, 2]] # Table with rows 0 and 2 only, row 1 removed (a copy)
<Table length=2>
col_a col_b
int64 str4
----- -----
1 spam
3 jam
直接读取和写入FITS:
Table
存在潜在问题,例如使用table = Table.read('file.fits', hdu='mydata')
table2 = table[[2, 7, 10]]
table2.write('file2.fits')
时,不会保留FITS BINTABLE标头,只有密钥值信息才会存储在Table
中。您可以查看表格和FITS BINTABLE上的Astropy文档,了解有关两个表格对象的详细信息,它们如何表示数据或如何在两者之间进行转换,或者只是在此处或astropy-dev邮件列表中询问后续问题。 / p>
答案 1 :(得分:-1)
如果您想坚持使用print("⚜BaseHP = %-39d ⚜" % p1_basehp)
etc.
,可以尝试以下操作,这似乎是一种解决方法:
FITS_rec