2012-04-20 16 views

答えて

6

配列が大きく、場所の多くの時間を行う場合は、まずそれのインデックスに値をマッピングする辞書作成することができます使用numpy.where

In [17]: nameArr = np.array(['josh','is','a','person']) 

In [18]: [np.where(nameArr==i) for i in ['a','is']] 
Out[18]: [(array([2]),), (array([1]),)] 
3

リストにはindexメソッドがあります。要素がリストにない場合

>>> nameArr = ['josh','is','a','person'] 
>>> # Using map 
>>> map(nameArr.index, ['a', 'is']) 
[2, 1] 
>>> # Using list comprehensions 
>>> [nameArr.index(x) for x in ['a', 'is']] 
[2, 1] 

ところで、indexValueErrorを発生させます。したがって、リストにない要素をindexメソッドに渡したい場合は、エラーを適切に処理する必要があります。

+2

また、アイテムがリストに複数回含まれている場合、アイテムの最初のインデックスも常に返します。 – agf

2

d = dict(zip(nameArr, range(len(nameArr)))) 
items = ['a','is'] 
print [d.get(x, None) for x in items] 
+0

品質の尺度としてのスケーラビリティを考えると、ここではこれが最善の答えです。 – Grr

1

何かを次のようになります。

>>> f_idxs = np.ravel([np.where(master_data==i)[0] for i in search_list]) 
関連する問題