替代以numpy数组为边界的范围

时间:2017-04-05 08:30:11

标签: python numpy scipy

我有两个numpy数组作为我想要生成的一系列向量的下边界和上边界。

与arange()的工作方式类似,我想在示例中生成中间成员:

lower_boundary = np.array([1,1])
upper_boundary = np.array([3,3])

expected_result = [[1,1], [1,2], [1,3], [2,1], [2,2], [2,3], [3,1], [3,2], [3,3]]

结果可以是列表或其他numpy数组。到目前为止,我已经设法使用嵌套循环解决这个问题,但是' lower_boundary'的维度。和' upper_boundary'可能会有所不同,我的方法也不适用。

在典型情况下,两个边界的至少 4维。

1 个答案:

答案 0 :(得分:4)

您可以使用np.indicies获取所需范围(upper_boundary - lower boundary + 1)的一系列索引值,根据您的需要重新调整(reshape(len(upper_boundary),-1))并添加lower_boundry导致的结果;

>>> np.indices(upper_boundary - lower_boundary + 1).reshape(len(upper_boundary),-1).T + lower_boundary
array([[1, 1],
       [1, 2],
       [1, 3],
       [2, 1],
       [2, 2],
       [2, 3],
       [3, 1],
       [3, 2],
       [3, 3]])

编辑:我发布之前忘了更正代码,应该是这样的。 感谢@Divakar的修复。