1

私が読んだ大きな(300,000行×25列)配列があります

dataset = numpy.genfromtxt(DataFileName,dtype="string",delimiter=',')

次に、改行と引用符をクリーンアップします。私は2つの方法でこれをやってみました:

1つ目の掃除方法

for i in range(len(dataset)): 
    for j in range(len(dataset[i])):
        dataset[i][j] = dataset[i][j].replace("\n", "").replace("\"", "")

クリーンアップの2番目の方法

dataset = [ [word.replace('\n','').replace('"','') for word in dataset[i]] for i in range(len(dataset))]

これに続いて、配列を集中的に検索して、さまざまなことを計算します。最初の方法よりも 2 番目の方法でクリーンアップを行うと、検索は5 倍速くなります。理由は何ですか?

4

1 に答える 1

0

一般に、リスト内包(2番目の方法)はforループよりも高速です。その理由を忘れてしまいました。

また、大きなデータセットがある場合、xrange()は小さなジェネレーターを返し、その場でデータを生成するため、xrange()の使用はrange()よりも高速です。一方、range()はリスト全体を返します[0..300,000]。

最後に、range()、xrange()を完全に廃止することを検討する必要があります。

dataset = [[word.replace('\n','').replace('"','') for word in line] for line in dataset]

この方法で行うと、時間がかかるアレイサブスクリプションを処理しないため、よりクリーンで高速になるはずです。

于 2013-02-05T19:45:45.950 に答える