繁体   English   中英

重塑和堆叠数组

[英]Reshaping and Stacking Arrays

我继承了一大堆代码,而作为一个新手却无法理解其复杂性。 它正在格式化生成的2x1数组以作为matplotlib.LineCollect的线段传递

                coar[t] = na[j] 
            coart = coar.reshape(-1,1,2)
            segments = np.hstack([coart[:-1],coart[1:]])

请更正我的用语:正在将1x2数组na迭代,并将其放入“粗糙”的“数组数组”中

   coar
    [[51 50]
     [52 50]
     [52 49]
     [52 48]] <type 'numpy.ndarray'>

reshape(-1,1,2)shape中的参数如何粗化为“数组中的数组中的数组”?

    coart:
    [[[51 50]]

     [[52 50]]

     [[52 49]]

     [[52 48]]] <type 'numpy.ndarray'>   

最后,hstack使用LineCollect将成对的点绘制为线段。 似乎在[-1]列中加上[:-1]? 负列索引? 我不明白这一切如何运作

    [[[51 50]
      [52 50]]

     [[52 50]
      [52 49]]

     [[52 49]
      [52 48]]] <type 'numpy.ndarray'> 

发生了什么...对这些功能,格式和数据类型的任何启示都将很棒

由于您是新手,因此指出python有出色的文档可能会有所帮助。 首先,可以在此处找到np.reshape文档: http ://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html,但为了给您提供完整的信息:如果为-1,则为-1 reshape函数告诉numpy根据该尺寸的长度推断该尺寸。 因此,在这种情况下,如果在重塑后检查Coart的形状,则会发现:

    coart.shape
    #output: (4,1,2)

对于下一部分,您对索引感到困惑,这里有关于索引的出色文档: http//docs.scipy.org/doc/numpy/reference/arrays.indexing.html,但要了解要点, python将1解释为n + i,其中n是数组的长度,i是负数。 因此,在您的情况下-1确实意味着3。另外,由于python使用基于0的索引,因此它们不计算最后一个数字,因此:

     coart[:-1]
     #output [[[51,50],[52,50],[52,49]]]

在您的情况下,意味着将数组从元素0取到2(因为不包括最终数字3)

    coart[1:] 

表示从元素1开始到结尾(因此不要包括元素0)。

因此,您可以看到水平堆叠告诉它将行0堆叠在第1行的顶部,将行1堆叠在第2行的顶部,将行2堆叠在第3行的顶部。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM