是否有一种简单的方法可以将numpy列压缩为LineCollection的输入?
请注意,该数组包含的元素比使用的元素多得多。
arr=([(x1, y1, z1, a1, b1, c1), (x2, y2, z2, a2, b2, c2), (x3, y3, z3, a3, b3, c3)])
我想以下列格式获取行,以便我可以使用LineCollection:
lines = [[(x1, x2), (y1, y2)], [(x2, x3), (y2, y3)] ...]
LineCollection(lines)
答案 0 :(得分:1)
我不知道任何直接的numpy函数或类似的功能。
但如果您想要的只是每个子列表的前两个元素,那么您可以尝试 -
arr = [(1,2,3,),(2,3,4),(3,4,5),(4,5,6),(5,6,7),(6,7,8)]
lines = []
for i in range(len(arr)-1):
lines.append([(arr[i][0],arr[i+1][0]),(arr[i][1],arr[i+1][1])])
lines
>>> [[(1, 2), (2, 3)], [(2, 3), (3, 4)], [(3, 4), (4, 5)], [(4, 5), (5, 6)], [(5, 6), (6, 7)]]
答案 1 :(得分:0)
您可以使用array.T
方法和np.hstack
:
示例:
>>> lines = [[(0, 1), (1, 1)], [(2, 3), (3, 3)], [(1, 2), (1, 3)]]
>>> np.hstack(numpy.array([np.array(i).T for i in lines]))
array([[0, 1, 2, 3, 1, 1],
[1, 1, 3, 3, 2, 3]])