Astropy:将FITS表拆分为训练和测试集

问题描述 投票:0回答:1

我有一张FITS表格,我正忙得不可开交。我想将表随机分为训练和测试数据,以创建两个新的FITS表。

[我首先想到使用scikit-learn函数test_train_split,但是随后我不得不将我的数据来回转换为numpy.array

到目前为止,我已经从FITS文件中读取了astropy.table.Table data,并尝试了以下操作

training_fraction = 0.5
n = len(data)
indexes = random.sample(range(n), k=int(n*training_fraction))
testing_sample = data[indexes]
training_sample = ?

但是,我不知道如何获取索引不在indexes中的所有行。也许有更好的方法可以做到这一点?如何获得表格的随机分区?


我表中的样本碰巧都具有唯一的ID,该ID是1到len(data)之间的整数。所以我想,我可以做到

indexes = random.sample(range(1, n+1), k=int(n*training_fraction))
testing_sample = data[data['ID'] in indexes]
training_sample = data[data['ID'] not in indexes]

但是第一行引发ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

python astropy
1个回答
0
投票

我如何做到这一点的方法是

training_indexes = sorted(random.sample(range(n), k=int(n*training_fraction)))
testing_indexes = [i for i in range(n) if i not in training_indexes]


testing_sample = data[testing_indexes]
training_sample = data[training_indexes]

但是我不知道这是最有效的方法还是最pythonic的方法。

© www.soinside.com 2019 - 2024. All rights reserved.