【问题标题】:Generate pairs from a numpy array in a specific pattern without loops以特定模式从 numpy 数组生成对,无需循环
【发布时间】:2018-09-03 17:53:35
【问题描述】:

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

here 提供了一个接近的解决方案,但它会生成所有可能的配对,而不是像我这样的特定方式。

您能建议一种方法吗?数组永远是一维的。

另外,这是我关于 SE 的第一个问题。如果需要修改,请告诉我。

【问题讨论】:

  • 一个稍微更一般的(对、三胞胎等)解决方案是here 它有一个循环,但在你的情况下,子集的大小固定为 2,这可以被消除。或者你可以使用triu_indices

标签: python numpy


【解决方案1】:

这是使用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]])

【讨论】:

  • 非常感谢!这当然很有帮助。
猜你喜欢
  • 2020-10-09
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2012-02-24
  • 1970-01-01
  • 2022-01-09
  • 2018-10-29
  • 1970-01-01
相关资源
最近更新 更多