重塑和堆叠阵列

2024-09-30 14:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

请更正我的术语: 它对1x2数组na进行迭代,并将它们放入“coar”中“数组数组”

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

如何将(-1,1,2)中的参数整形为“数组中的数组中的数组”

    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'> 

怎么回事。。。 任何关于这些函数、格式和数据类型的启示都是非常棒的


Tags: 代码numpymatplotlibtype绘制数组复杂性ndarray
1条回答
网友
1楼 · 发布于 2024-09-30 14:25:31

既然您是新手,那么指出python具有优秀的文档可能会有所帮助。首先,可以在这里找到np.reforme文档: http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html 但为了给你完整的故事: 对于重塑函数,A-1告诉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行的顶部

相关问题 更多 >