我有两个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维。
答案 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的修复。