Сама задача.
Есть двумерный массив. В массиве несколько тысяч последовательностей из 12 чисел. Некая база данных. Первое число – просто порядковый номер последовательности, остальные 11 чисел собственно последовательность. Как это выглядит (здесь случайные числа):
baza = np.array([[1, 25, 8, 9, 65, 34, 35, 68, 35, 98, 23, 46, 64], ----------------------------------------------------- [2005, 35, 9, 10, 69, 37, 45, 78, 55, 113, 143, 416, 44],])
У нас на вход поступает (вводится последовательность из 7 чисел). Эти 7 чисел по порядку надо сравнить с первыми 7 числами из последовательностей, находящихся в массиве, исключая первое число в последовательности массива. То есть 1 число вводимой последовательности надо сравнить со 2 числом в последовательности из массива (потому что первое число в последовательности массива это просто порядковый номер и оно не входит в саму последовательность). Если выразить в индексах, то так это выглядит. Первая колонка вводимая последовательность, вторая последовательность из массива:
[0] = [1] [1] = [2] [2] = [3] [3] = [4] [4] = [5] [5] = [6] [7] = [8]
Требуется найти и вывести на печать все последовательности в массиве удовлетворяющие следующим условиям:
Число с индексом 0 из первой последовательности должно быть равно или больше на 5 или же меньше на 5 числу с индексом 1 из второй последовательности. Вот так выглядит условие:
Если (число с индексом 0 из первой последовательности)–5 < (число с индексом 1 из второй последовательности) и (число с индексом 0 из первой последовательности)+5 > (число с индексом 1 из второй последовательности) то условие соблюдено и мы ищем совпадение следующего числа в последовательностях. То есть число из второй последовательности должно входить в диапазон плюс/минус 5 числа из первой последовательности.
И далее так же сравнить все остальные числа, с таким же диапазоном, то есть 2-е число из первой сравнить с 3-м числом из второй и так далее до всех 7 чисел. Если такая последовательность в массиве находится, то вывести в отдельный массив все такие последовательности и вывести на печать их также.
Надеюсь все понятно изложил. Помогите решить исключительно методами библиотеки NumPy, потому что скорость в данном случае важна, так как массив содержит много очень последовательностей. Если будет решение, то можно будет реализовать для любого числа последовательностей. Я думаю многим будет полезно.
Я понял. В общем пока и так работает достаточно быстро, но на будущее буду изучать NumPy основательно, по-любому пригодится.