Python 查找两个列表的索引

Python 查找两个列表的索引,python,numpy,where,Python,Numpy,Where,我有两个numpy列表: x = ['A', 'A', 'C', 'A', 'V', 'A', 'B', 'A', 'A', 'A'] y = ['1', '2', '1', '1', '3', '2', '1', '1', '1', '1'] 当同时x等于'A'和y等于'2'时,如何找到索引 我希望得到索引[1,5] 我尝试使用: np.where(x=='A'和y=='2')但这对我没有帮助 您需要将列表转换为numpy数组,以便使用矢量化操作,例如=和&: import numpy as

我有两个numpy列表:

x = ['A', 'A', 'C', 'A', 'V', 'A', 'B', 'A', 'A', 'A']
y = ['1', '2', '1', '1', '3', '2', '1', '1', '1', '1']
当同时
x
等于
'A'
y
等于
'2'
时,如何找到索引

我希望得到索引
[1,5]

我尝试使用:
np.where(x=='A'和y=='2')
但这对我没有帮助

您需要将列表转换为numpy数组,以便使用矢量化操作,例如
=
&

import numpy as np
np.where((np.array(x) == "A") & (np.array(y) == "2"))
# (array([1, 5]),)
较短的版本(如果您确定x和y是numpy阵列):

纯python解决方案:

>>> [i for i,j in enumerate(zip(x,y)) if j==('A','2')]
[1, 5]

如果要使用列表,请执行以下操作:

idx1 = [i for i, x in enumerate(x) if x == 'A']
idx2 = [i for i, x in enumerate(y) if x == '2']
list(set(idx1).intersection(idx2))
它们是numpy数组还是python列表?
idx1 = [i for i, x in enumerate(x) if x == 'A']
idx2 = [i for i, x in enumerate(y) if x == '2']
list(set(idx1).intersection(idx2))