Имеется массив x. Нужно найти все элементы массива x, удовлетворяющие условию (x-i)<2 для x от 1 до N. Ниже три варианта решения. Можно ли сделать быстрее?
x=numpy.array([1.1,2.2,3.3,4.4])
N=100000
t1=time.clock()
y=[]
for i in numpy.linspace(0,1,N):
y=numpy.r_[ y, x[(x-i)<2] ]
t2=time.clock(); print t2-t1
t1=time.clock()
z=numpy.concatenate(map(lambda i: x[(x-i)<2],numpy.linspace(0,1,N)))
t2=time.clock(); print t2-t1
t1=time.clock()
i=numpy.linspace(0,1,N)
f=numpy.array([ item for item in x if filter(lambda i_n:item-i_n<2, i) ])
t2=time.clock(); print t2-t1
$ ./test.py
71.44
0.92
0.69