我正在处理一个三维矢量数组,但在正确重塑时遇到了问题。我的维度与数量的对应关系如下:
0=向量(3)
1=点(4)
2=多段线(2)
所以这可以解释为两条多段线,每条多段线包含4个点,每个点都有一个向量。我想重塑成一个2维矩阵,即(3,8)。
原始数组为:
poly_array = array([[[-0.707, 0.0],
[-0.371, 0.0],
[0.371, 0.0],
[0.707, 0.0]],
[[0.0, -0.707],
[0.0, 0.0],
[0.0, 0.707],
[0.0, 0.0]],
[[0.707, 0.707],
[0.928, 1.0],
[0.928, 0.707],
[0.707, 0.0]]])因此,如果我沿着第一条多段线查找有序的点,我会运行:
for i in range(4):
print poly_array[:,i,0]或者对于沿第二条多段线的排序点:
for i in range(4):
print poly_array[:,i,1]如果我以这种方式重塑:
new_dim = shape(poly_array)[1] * shape(poly_array)[2]
new_array = poly_array.reshape(3, new_dim)但这将向量排序为从每个折线(即,pt0-polyline0、pt0-polyline1、pt1-polyline0、pt1-polyline1等)取一个。
In: print new_array[:, 0]
Out: [-0.707 0. 0.707]
In: print new_array[:, 1]
Out: [ 0. -0.707 0.707]但我想
In: print new_array[:, 1]
Out: [-0.371 0. 0.928]如何重塑以使其在下一条多段线之前循环通过与给定多段线的点(沿轴1)相对应的所有矢量?
https://stackoverflow.com/questions/44394623
复制相似问题