У меня есть очень большой Numpy массив, который выглядит следующим образом (первые 5 статей):Python - Наиболее эффективный способ сортировки массива для поиска в нем
[[ 1. 0.01 0.02 0.6 0.01 0.5 0.01 0.5 0.5 0.5 ]
[ 0.5 0.01 0.01 0.6 0.01 0.5 0.5 0.5 0.5 0.6 ]
[ 0.6 0.01 0.5 0.5 0.5 0.5 0.7 0.01 0.01 0. ]
[ 0.01 0.5 0.8 0.02 0.02 0.81 0.01 0.77 0.02 0.01]
[ 0.5 0.02 0.5 0. 0.5 0.5 0.01 0.6 0.01 0. ]]
Я поиск этого массива для конкретных последовательностей, также 10 значений. Итак, я сохраняю входящие последовательности после специального правила, просто 0 1 2 3 ... и тот же я ищу этот массив. Это мой метод поиска (silo_arrays [] [] является массивом выше, array_pattern [] является 1D Numpy 10 значений длиной массива, для которого я искать silo_arrays):
new_pattern=True
for z in range(0, self.silo_arrays_c):
eq_rate = 0
for y in range(0, self.length):
if(self.silo_arrays[z][y] != array_pattern[y]):
break
else:
eq_rate += 1
if(eq_rate == self.length):
new_pattern = False
break
Это занимает около 0.006257s, если это silo_arrays - это что-то вроде 1585 записей. Есть ли идеи о том, как ускорить этот поиск от Сортировка или Изменения в конструкции? Спасибо за поддержку :)
'np.where ((silo_arrays == array_pattern) .all (1))'? – Divakar