我想保留满足两个或更多条件的数组值,例如:
a = np.array([1,3,5,6,4,6,7,8,9])
我想只保留大于3且小于7的值,我想要的输出是:
array([5, 6, 4, 6])
我看到了一种方法:
a = a[(a > 3) * (a < 7)]
但是关于这种乘法的东西感觉多余,我认为我错过了这样的内置方法。
答案 0 :(得分: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