如何获得非唯一值的熊猫两个系列的交集和联合?

问题描述:

如果我有2个Series对象,像这样:[0,0,1] [1,0,0] 如何得到两个交点和联合? 它们只包含布尔值,这意味着它们是非唯一值。如何获得非唯一值的熊猫两个系列的交集和联合?

我有一个大的布尔矩阵。我对它进行了细化,现在我试图找到误报和否定,我认为这意味着我必须让每个原始对的Jaccard相似。

+1

对于路口,见[这个答案](https://*.com/a/18079695/ 2799941)。 –

+0

这是否适用于非唯一值? – user3927312

+0

如果他们是布尔值,那么什么是交集和联合使用。你只是想重新创建'&'和'|'。好奇,为什么你需要对布尔值进行检查? – Dark

既然你说他们是布尔使用logical_and和numpy的的logical_or&|的系列即

y1 = pd.Series([1,0,1,0]) 
y2 = pd.Series([1,0,0,1]) 

# Numpy approach 
intersection = np.logical_and(y1.values, y2.values) 
union = np.logical_or(y1.values, y2.values) 
intersection.sum()/union.sum() 
# 0.33333333333333331 

# Pandas approach 
sum(y1 & y2)/sum(y1 | y2) 
# 0.33333333333333331 
+0

谢谢。虽然这是答案,但速度太慢。 – user3927312

+0

什么是阵列的长度? – Dark

+0

每个数组恰好是6000.其中有1000个。 – user3927312