如何在2D numpy数组中找到不同元素的条件交集

时间:2017-07-16 20:26:13

标签: arrays numpy

我有一个数组,它具有唯一的整数对,完全排序,如下所示:

x = np.array([[40, 202], [44, 117], [44, 125], [45, 53], [45, 675], [45, 1013], [53, 675], [116, 845], [117, 125], [126, 130], [130, 144]])

  

如何获得在三个不同的元组[a,b]和[a,c]和[b,c]中出现的a,b,c的值?例如,[44,117]和[44,125]和[117,125]满足这种模式,a = 44,b = 117,c = 125。

垂直查看它可能是一种更容易的方式来可视化我正在寻找的东西。 T_1,T_2和T_3指的是数组x中的单个元组。

 T_1 = [a, b] eg [44, 117]  
 T_2 = [a, c] eg [44, 125]  
 T_3 = [b, c] eg [117, 125]

模拟代码和输出将是:
def findTriple(arr): """Returns a 2darray with tuple a, b, c for each match that results in the union [a, b] and [a, c] and [b, c] in array x""" # do something return res data = findTriple(x) print (data) #two answers for example x given.

[[44, 117, 125], [45, 53, 675]] 

我无法找到创建蒙版或使用列表理解的方法。

1 个答案:

答案 0 :(得分:1)

您可以使用列表理解

来完成它
>> [(x1, x2, xx2) for x1, x2 in x for xx1, xx2 in x if x2 == xx1]
[(44, 117, 125), (45, 53, 675), (126, 130, 144)]