Numpy версия этого конкретного списка понимания - PullRequest
0 голосов
/ 30 апреля 2019

Итак, несколько дней назад мне потребовалось определенное понимание списка в этой теме: Выбор подмножества целых чисел по двум спискам конечных точек

, и я получил удовлетворительный ответ.Теперь, как бы то ни было, мне нужно повысить производительность, поскольку я работаю с циклом, и на каждой итерации длина этих массивов конечных точек составляет не менее нескольких тысяч.

Итак, мой вопрос: есть ли в numpy функции, которые могут выполнить работу, но намного быстрее?Я заглянул в пространство вокруг numpy, повторил, arange и прочее, и не смог найти никакого прорыва.И если есть способ сделать работу быстрее, вы, ребята, можете показать мне путь?

Заранее спасибо, ребята.

1 Ответ

1 голос
/ 30 апреля 2019

Если он по-прежнему вас интересует, вы можете избавиться от одного цикла for и использовать numpy.arange() в сочетании с пониманием списка и numpy.hstack(), чтобы получить желаемое. Сказав, что нам все еще нужен по крайней мере один цикл for, чтобы сделать это (потому что ни range, ни arange не принимают последовательность конечных точек)

t1 = [0,13,22]
t2 = [4,14,25]
np.hstack([np.arange(r[0], r[1]+1)  for r in zip(t1, t2)])

# outputs
array([ 0,  1,  2,  3,  4, 13, 14, 22, 23, 24, 25])

Тем не менее, я не знаю, насколько более производительным это будет для вашего конкретного случая.

...