获取数组值的索引

时间:2016-06-23 00:35:23

标签: python numpy

我有两个数组如下:

e = np.array([True, False, True, True])    
f = np.array([True, False, False, True])

我希望索引i位于e[i] and f[i] == True

上述预期的输出将是:

[0,3] since e[0] == True and f[0] == True; e[3] and f[3] ==True

可能会有更多这样的匹配,所以我需要一个满足上述条件的所有索引的列表。

我试图通过这样做找到匹配值列表:

list(e&f)
Out[474]:
[True, False, False, True]

要获取索引,我想我可以使用.index(True)的{​​{1}}。但它不起作用或只是输出为0.也许只给出第一个索引而不是全部。

最后,我需要在输出的每个元素中添加1,所以输出list不应该是[0,3],但如果我得到索引,这很容易就能做到,

4 个答案:

答案 0 :(得分:3)

看一下docs中的numpy.where

np.where(e&f)[0]

输出:

 array([0, 3])

答案 1 :(得分:1)

您可以使用列表推导来挑选它们:

>>> e = np.array([True, False, True, True])    
>>> f = np.array([True, False, False, True])
>>> [i for i,v in enumerate(e&f, 1) if v]
[1, 4]

使用enumerate()您可以指定初始索引,在本例中为1。

答案 2 :(得分:1)

或只是这个

np.where(e&f)

答案 3 :(得分:1)

如果你不想依赖于numpy,那还有别的事情:

e=[True, False, True, True]
f=[True, False, False, True]

for idx, val in enumerate(e):
  if cmp(e[idx], f[idx]) is 0:
    print idx+1, val