4

2 つ以上の条件を満たす配列の値を保持したい。たとえば、次のようになります。

a = np.array([1,3,5,6,4,6,7,8,9])

3 より大きく 7 より小さい値のみを保持したいのですが、目的の出力は次のとおりです。

array([5, 6, 4, 6])

私はそれを行う1つの方法を見ます:

a = a[(a > 3) * (a < 7)]  

しかし、この乗算については冗長に感じます。このような組み込みのメソッドが欠けていると思います。

4

1 に答える 1

3

楽しみのために: numpy 配列の使用を反映するように修正しました。

import timeit
import numpy as np
a =np.array([1,3,5,6,4,6,7,8,9])
t1= timeit.Timer('a[(a > 3) * (a < 7)]', 'from __main__ import a' )
t2= timeit.Timer('a[(a > 3) & (a < 7)]','from __main__ import a')
t3 =timeit.Timer('[e for e in a if e < 7 and e > 3]','from __main__ import a')


print t1.timeit(1000)/1000
print t2.timeit(1000)/1000
print t3.timeit(1000)/1000


>>> 
1.01280212402e-05
1.23770236969e-05
1.51431560516e-05

もう一度実行する

1.06210708618e-05
1.16641521454e-05
1.76239013672e-05
于 2013-05-01T00:22:00.577 に答える