1

データベースからいくつかの値を取得し、それらの「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 アイテムを返す方法もあります)。

4

1 に答える 1

1

もっと効率的な方法があるかもしれませんが、これは単なる考えです。

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')
于 2013-04-16T19:39:44.667 に答える