1
反復アルゴリズムでは、大量の配列を何回も使用するのが一般的です。私は既存の大規模な配列に値を書きたいと思っていますが、新しい配列を作成することがさらに速いことがわかりました。既存のnumpy配列を再利用するか、新しい配列を作成しますか?
>>>import numpy as np
>>>a=np.arange(10000)
>>>b=a.copy()
>>>%timeit b=a+a # Every time create a new array
100000 loops, best of 3: 9.59 µs per loop
>>>%timeit b[:]=a+a # Use existing array
100000 loops, best of 3: 13.3 µs per loop
>>>%timeit np.copyto(b,a+a) # Another way to use existing array
100000 loops, best of 3: 13.4 µs per loop
- 既存のアレイを再利用する任意のより高速な方法はありますか? (例えば、上記の
b
) - このような方法がない場合、なぜ新しいアレイを作成する方が速いのですか?
- 毎回新しいアレイを再作成するという欠点はありますか?私のデータが大きいので、私はそれについて躊躇し、すべての反復でそれを異なる値で割り当てる必要があります。
私は 'b [:] = a + a'を実行すると+ aを最初に計算し、それを配列に入れ、その配列をbのメモリに割り当てます。 – Peter