首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3d阵列到2d阵列的选择性重塑

3d阵列到2d阵列的选择性重塑
EN

Stack Overflow用户
提问于 2017-06-06 23:51:49
回答 0查看 41关注 0票数 1

我正在处理一个三维矢量数组,但在正确重塑时遇到了问题。我的维度与数量的对应关系如下:

0=向量(3)

1=点(4)

2=多段线(2)

所以这可以解释为两条多段线,每条多段线包含4个点,每个点都有一个向量。我想重塑成一个2维矩阵,即(3,8)。

原始数组为:

代码语言:javascript
复制
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]]])

因此,如果我沿着第一条多段线查找有序的点,我会运行:

代码语言:javascript
复制
for i in range(4):
    print poly_array[:,i,0]

或者对于沿第二条多段线的排序点:

代码语言:javascript
复制
for i in range(4):
    print poly_array[:,i,1]

如果我以这种方式重塑:

代码语言:javascript
复制
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等)取一个。

代码语言:javascript
复制
In: print new_array[:, 0]
Out: [-0.707  0.     0.707]

In: print new_array[:, 1]
Out: [ 0.    -0.707  0.707]

但我想

代码语言:javascript
复制
In: print new_array[:, 1]
Out: [-0.371  0.     0.928]

如何重塑以使其在下一条多段线之前循环通过与给定多段线的点(沿轴1)相对应的所有矢量?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44394623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档