Форум сайта python.su
Добрый день, уважаемые!
Возможно, я торможу, но я не могу найти нормальный способ поиска маленького массива в большом и получения индексов, где маленький находится в большом.
Точнее, я знаю как это сделать через for и срезы, но это долго, массив большой.
Расскажу конкретней что требуется:
Есть массив, например:
Arr = numpy.array([[1,2,3,4,5], [5,6,7,8,9], [9,0,0,0,2], [6,5,4,3,2], [3,4,2,3,2]])
Arr_small = numpy.array([[5,4,3], [4,2,3]])
numpy.array([[[1,2,3], [5,6,7]], [[2,3,4], [6,7,8]], [[3,4,5], [7,8,9]], ... [[4,3,2], [2,3,2]]])
Отредактировано jor77 (Авг. 7, 2015 10:36:54)
Офлайн
А поиск нужно делать в одном большом массиве много маленьких или наборот? И размерность маленького массива меняется?
Офлайн
KixiroНужно в одном большом найти один маленький.
А поиск нужно делать в одном большом массиве много маленьких или наборот? И размерность маленького массива меняется?
Офлайн
jor77Это надо делать без срезов, потому что они как раз и занимают время.
Точнее, я знаю как это сделать через for и срезы, но это долго, массив большой.
Офлайн
Не знаю как там в нумпи, в питоне это делается так
s = [1, 3, 4, [1, 2, 3], 0, 0] print([x for x in s if isinstance(x, list)])
Офлайн
FishHookДа со списками/кортежами всё точно так же делается - через индексы. Это оптимальное решение (по памяти).
Не знаю как там в нумпи, в питоне это делается так
Есть массив
[[1, 2, 3, 4], [5, 6, 7, 8]]
Найти подмассив
[[2, 3], [6, 7]]
Отредактировано py.user.next (Авг. 7, 2015 11:37:45)
Офлайн
FishHook
Не знаю как там в нумпи, в питоне это делается так
s = [1, 3, 4, , 0, 0]
print()
Офлайн
А я не понял задачу, что значит найти массив? Мой код как раз буквально ищет список в списке.
Офлайн
FishHookНу, я привел пример что и в чем нужно найти.
А я не понял задачу, что значит найти массив? Мой код как раз буквально ищет список в списке.
Отредактировано jor77 (Авг. 7, 2015 11:55:25)
Офлайн
Можно попытаться расспаралелить обход по for на несколько процессов, чтобы ускорить выполнение задачи.
Или искать подходящий алгоритм, где поиск осуществляется по коэффициентам или различным преобразованиям, а не в лоб.
Офлайн