我希望查看列表的值y中是否存在值x,如果存在,我想打印出此类值的总数。

z=0
for x,y in zip(labels,n):
    if x in y:
        z=z+1
print(z)


标签如下所示:

[['20011', '20048'],
 ['20011', '20048'],
 ['20011', '20048'],
 ['20011', '20048']]


这就是n的样子:

['20011', '20048' ,'20011', '20048']


我在打印z时得到零。我究竟做错了什么?如果我没有定义z,则会收到一条错误消息,提示未定义z。

最佳答案

numpy.intersect1d可以获取2个数组之间的交集,然后可以使用size来获取两个数组中唯一元素的数量:

import numpy as np
labels = np.array([[20011,20048],[20011,20048],[20011,20048],[20011,20048]])
n = np.array([20011,20048,20011,20048])
z = np.intersect1d(n,labels).size
print z # counts 2


numpy.in1d可以检查一维数组的每个元素是否在第二个数组中,然后转换为列表并计算True项(不是唯一元素):

z = np.in1d(n,labels).tolist().count(True)
print z # counts 4

08-24 20:30