Я изо всех сил пытаюсь найти эквивалент 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 isn 't вернул ( здесь ).
В моей конкретной прикладной области этот конкретный шаблон кода имеет тенденцию возникать снова и снова и использует большую часть времени ЦП моих функций, поэтому эффективное решениездесь действительно важно для меня.
Комментарии или предложения по редизайну также приветствуются.