2017-07-04 15 views
-1

私は、次のような方法があります。csvファイルからn個のランダムな行を選択する最も速い方法は何ですか?

ids = random.sample(list(map(int, open(file_path))), 10) 

10個のランダムなintのリストを返します。

スピードアップするには?これを行うもう1つの方法は何ですか?

+0

あなたのやり方では、ファイル全体がメモリにロードされ、サンプリングされます。より良い方法は、特定のランダムな行だけを読むことです。 –

+0

それは依存します:)例えば、線は同じ長さであるとします。あなたは非常に迅速にすることができます:) – mayu

+0

@ Ev.Kounisこれを行うには? –

答えて

0

ハングアップは常にファイルの長さを見つけることになります。それについてはHow to get line count cheaply in Python?を参照してください。

そして、あなたはそのような

import random 

lines = random.sample(range(length_of_file), 10) 

with open(file) as f: 
    lines_from_file = [f.readline(line) for line in lines] 

か何かを行うことができます。それはどのようにスピードで比較されますか?

関連する問題