我正在努力寻找一个使用
ismember的特定Matlab编码“模式”的Numpy等价物.
不幸的是,这个代码往往是大部分时间花在我的Matlab脚本中,所以我想找到一个有效的Numpy等效项.
基本模式包括将子集映射到较大的网格上.我有一组存储为并行数组的键值对,我想将这些值插入到以相同方式存储的较大的键值对列表中.
具体来说,我有季度GDP数据,我映射到每月的时间网格如下.
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解决方案(here),或者使用numpy,那么不返回loc参数(here).
在我特定的应用领域,这种特殊的代码模式往往会一再出现,占用了大部分CPU时间,所以这里有效的解决方案对我而言至关重要.
也欢迎评论或重新设计.