繁体   English   中英

测试numpy数组中的行是否与给定行相同或每个元素不同

[英]Testing if rows in a numpy array are the same as a given row or different by each element

这与我之前的问题有关: numpy数组的元素逻辑比较

我有两个随机整数的numpy数组

A=np.random.randint(Q,size=(N,M))
B=np.random.randint(Q,size=(1,M))

我需要测试A中的任何行在B元素方面是否具有大于0且小于M个公共元素。

例如,如果

A=np.array([[2,0],[0,1],[1,2]])
B=np.array([1,0])

我期望True因为[1,0][1,2]在元素上共享大于0且小于2个元素。

另一方面,如果

B=np.array([2,0])

我会期望False因为只有逐行将2或0个元素逐个删除

目前,我的方法是:

c=np.where((A[:]==B))[0]
n=np.bincount(c)
((n==0)+(n==2)).all()

对我来说,这似乎是一种复杂的测试方法,我想知道是否缺少一种更自然的方法。

我会这样

neq=(A==B).sum(-1)
result = any(logical_and(neq<B.size, neq>0))

其中neq跟踪A每一行与B共有多少位数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM