Я хочу выяснить, появляется ли мой numpy вектор, needle
внутри другого вектора, haystack
, в виде среза или смежного субвектора.
Мне нужна функция find(needle, haystack)
возвращает true тогда и только тогда, когда существуют возможные целочисленные индексы p и q , такие что needle
равно haystack[p:q]
, где "равно" означает, что элементы равны во всех позициях.
Пример:
find([2,3,4], [1,2,3,4,5]) == True
find([2,4], [1,2,3,4,5]) == False # not contiguous inside haystack
find([2,3,4], [0,1,2,3]) == False # incomplete
Здесь я использую списки для упрощения иллюстрации, но на самом деле они будут numpy векторов (одномерных массивов).
Для строки в Python, эквивалентная операция тривиальна: это in
: "bcd" in "abcde" == True
.
Приложение о размерности.
Уважаемый читатель, вас может соблазнить подобное ищущие вопросы, такие как проверка, содержит ли массив Numpy заданную строку , или Проверка, содержит ли массив NumPy другой массив . Но мы можем отклонить это сходство как бесполезное при рассмотрении измерений.
Вектор - это одномерный массив. В терминах numpy
вектор длины N будет иметь .shape == (N,)
; его форма имеет длину 1.
Другие упомянутые вопросы, как правило, направлены на поиск точного соответствия для строки в двумерной матрице.
Я пытаюсь скользить 1 игла вдоль той же оси моего 1-мерного стога сена как окно, пока вся игла не совпадет с частью стога сена это видно через окно.