我々はnumpyの内蔵np.maximum
、その目的のために正確に作られた使用することができます -
np.maximum(array1, array2)
もう一つの方法は、第1の軸(axis=0)
に沿っ2D
積み重ねられたアレイとmax-reduce
にnumpyのufunc np.max
を使用することです -
100万個のデータセットに
np.max([array1,array2],axis=0)
タイミング -
In [271]: array1 = np.random.randint(0,9,(1000000))
In [272]: array2 = np.random.randint(0,9,(1000000))
In [274]: %timeit np.maximum(array1, array2)
1000 loops, best of 3: 1.25 ms per loop
In [275]: %timeit np.max([array1, array2],axis=0)
100 loops, best of 3: 3.31 ms per loop
# @Eric Duminil's soln1
In [276]: %timeit np.where(array1 > array2, array1, array2)
100 loops, best of 3: 5.15 ms per loop
# @Eric Duminil's soln2
In [277]: magic = lambda x,y : np.where(x > y , x, y)
In [278]: %timeit magic(array1, array2)
100 loops, best of 3: 5.13 ms per loop
0あなたの条件はますます複雑になっている場合
AHAH。 'timeit'をありがとうございますが、標準の最適化されたnumpyの方がカスタムの方が速いことははっきりしています。私の方法はもっと複雑な条件でしか意味をなさないでしょう。 –
@EricDuminilよ、まったく!ちょうど私と他の人のために、さまざまな方法がどのように積み重なっているか見てみよう。 – Divakar