【发布时间】:2017-02-23 04:29:23
【问题描述】:
我有一个二维坐标列表作为 NumPy 数组,例如
x = np.asarray([[0, 1],
[1, 2],
[2, 3]])
形状为(3,2)。
现在我想用np.roll(x, 1) 压缩这个数组以获得坐标对来绘制线(包括从最后一个元素到第一个元素的线。线的顺序无关紧要。
我已经找到了使用标准 Python zip 的解决方案:
>>> np.asarray(list(zip(list(x[-1:]) + list(x[:-1]), x)))
array([[[2, 3],
[0, 1]],
[[0, 1],
[1, 2]],
[[1, 2],
[2, 3]]])
如何使用 numpy 函数而不转换为 Python 列表以获得此结果?
到目前为止,我使用 NumPy 进行的尝试都失败了,例如:
>>> np.dstack([x, np.roll(x, 1)])
array([[[0, 3],
[1, 0]],
[[1, 1],
[2, 1]],
[[2, 2],
[3, 2]]])
编辑:这不是试图创建 x 与任何其他数组的组合,因此建议的重复项不是重复项。
【问题讨论】:
标签: python numpy coordinates