以特定模式从numpy数组生成对,没有循环

时间:2018-03-25 14:36:57

标签: python numpy

让我们考虑一个数组[1,2,3],我想要生成的是包含对[[1,2],[1,3],[2,3]]的列表。这可以使用itertools完成。但是,我想使用纯numpy操作生成它们,并且不允许循环或分支。

提供了一个紧密的解决方案here,但它会生成所有可能的对,而不是像我的情况那样的特定方式。

你能建议一种方法吗?该数组将始终为1D。

另外,这是我关于SE的第一个问题。如果需要任何编辑,请告诉我。

1 个答案:

答案 0 :(得分:0)

以下是使用np.triu_indices

的单线程
>>> a = np.array([1, 2, 3])
>>> a[np.transpose(np.triu_indices(len(a), 1))]
array([[1, 2],
       [1, 3],
       [2, 3]])