Я изо всех сил пытаюсь найти эквивалент Numpy для конкретного шаблона Matlab, используя ismember.
К сожалению, этот код, как правило, больше всего времени тратится на мои скрипты Matlab, поэтому я хочу найти эффективный эквивалент Numpy.
Основной шаблон состоит в отображении подмножества на большую сетку. У меня есть набор пар значений ключей, хранящихся как параллельные массивы, и я хочу вставить эти значения в более широкий список пар значений ключа, сохраненных таким же образом.
Для конкретности говорят, что у меня есть данные по квартальному ВВП, которые я накладываю на ежемесячную сетку времени следующим образом.
quarters = [200712 200803 200806 200809 200812 200903];
gdp_q = [10.1 10.5 11.1 11.8 10.9 10.3];
months = 200801 : 200812;
gdp_m = NaN(size(months));
[tf, loc] = ismember(quarters, months);
gdp_m(loc(tf)) = gdp_q(tf);
Обратите внимание, что не все четверти появляются в списке месяцев, поэтому требуются переменные tf и loc.
Я видел похожие вопросы в StackOverflow, но они либо просто дают чистое решение Python (здесь), либо там, где используется numpy, то аргумент loc не возвращается (здесь).
В моей конкретной области приложения этот конкретный шаблон кода имеет тенденцию возникать снова и снова и использует большую часть времени процессора для моих функций, поэтому эффективное решение здесь действительно важно для меня.
Комментарии и рекомендации по редизайну также приветствуются.