我希望查看列表的值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