3

値の配列があり、を返すnameArr = ['josh','is','a','person']ような関数が必要だとします。arrayLocation(nameArr,['a','is'])[2 1]

その機能はすでに存在しますか?そうでない場合、どうすれば効率的に実装できますか?

4

4 に答える 4

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]),)]
于 2012-04-20T20:10:00.867 に答える
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 メソッドに提供する場合は、エラーを適切に処理する必要がある場合があります。

于 2012-04-20T20:02:32.840 に答える
2

配列が大きく、何度も場所を指定する場合は、最初に値をそのインデックスにマップする dict を作成できます。

d = dict(zip(nameArr, range(len(nameArr))))
items = ['a','is']
print [d.get(x, None) for x in items]
于 2012-04-21T14:00:22.047 に答える