我很努力地找到一個特定的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