我很努力地找到一个特定的Matlab编码“模式”使用ismember的Numpy等价物。numpy(Python)中的matlab'ismember'的等价物?
不幸的代码往往是大部分时间都在我的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的使用则不会返回禄参数(here)。
在我的特殊应用领域,这个特殊的代码模式往往再出现一遍又一遍,并使用了大部分的在我的职务CPU时间,所以这里的高效解决方案是对我来说真的很重要。
评论或重新设计的建议也受欢迎。
如果之后你会实现它自己:1.对象采取散,你已经有一个数字 - 对它们进行排序,并使用二进制搜索。 2.另一种方法 - 使用散列表 – Mikhail 2010-11-26 18:02:39
我认为这[由Alex Martelli回答](http://stackoverflow.com/questions/1273041/how-can-i-implement-matlabs-ismember-command-in-python/1273815# 1273815)是最好的,你可以得到。 – 2010-11-27 11:11:05