我有一个数组,它具有唯一的整数对,完全排序,如下所示:
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]]
我无法找到创建蒙版或使用列表理解的方法。
答案 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)]