Хотя метод ниже использует простую логику и прост в написании, он медленный.Мы можем ускорить его, используя украшенную Numba функцию.Это ускорит выполнение простых задач зацикливания до скоростей, близких к языку ассемблера.
Установите Numba с pip install numba
.
from numba import jit
import numpy as np
# Create a numpy array of length 10000 with float values between 0 and 10
random_values = np.random.uniform(0.0,10.0,size=(100*100,))
@jit(nopython=True, nogil=True)
def find_nearest(input):
result = []
for e in input:
counter = 0
for j in input:
if j >= (e-0.5) and j < e:
counter += 1
result.append(counter)
return result
result = find_nearest(random_values)
Обратите внимание, что ожидаемый результат возвращается для теста:
test = [0.1, 0.7, 0.8, 0.85, 0.9, 1.5, 1.7]
result = find_nearest(test)
print result
Возвращает:
[0, 0, 1, 2, 3, 0, 1]