我想从数据库中获取一些值,并对其中的"n“个值进行切片,比如在图上绘制。
我从一个Django QuerySet开始,但我不认为这是我可以通过ORM减少的东西,所以我可以获得一个值列表,然后使用Python库中的任何可用的库来获取数据样本。
因此,如果我有一个包含1000个项目的数据集,我希望能够从该数据集中抓取均匀分布的非随机样本范围,始终包括起点和终点,然后均匀分布介于两者之间的元素。
例如,如果:
data = [x for x in xrange(0, 777)]我想要10个,我怎么能得到一个列表,不是每10个项目,而是恰好10个列表项目均匀分布在列表中的元素总数上?
我在试着:
number_of_results = 10
step = len(data) / number_of_results
data[::step]但我希望有一种更有效的方法(也是一种保持端点并准确返回number_of_results项的方法,即使这些项之间的步长不能完全相等)。
发布于 2013-04-17 03:39:45
可能有更有效的方法来做这件事,但这只是一个想法:
qs_ids = list(ModelA.objects.order_by('id').values_list('id', flat=True))
number_of_results = 10
step = len(qs_ids) / number_of_results
ids = data[::step]
qs = ModelA.objects.filter(id__in=ids).order_by('id')https://stackoverflow.com/questions/16045437
复制相似问题