我有两个数组如下:
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]
,但如果我得到索引,这很容易就能做到,
答案 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