我继承了一大块代码,并且是一个新手,没有抓住它的错综复杂。它正在生成2x1数组生成,作为matplotlib.LineCollect的linesegments传递
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'>
reshape(-1,1,2)中的参数如何将coar变成数组内数组中的#34;数组&#34;?
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'>
发生了什么...... 对这些功能,格式和数据类型的任何启示都会很棒
答案 0 :(得分:0)
由于你是初学者,因此指出python具有出色的文档可能会有所帮助。首先,可以在此处找到np.reshape文档: http://docs.scipy.org/doc/numpy/reference/generated/numpy.reshape.html 但是要告诉你完整的故事: 在重塑函数的情况下,-1表示numpy按该维度的长度推断该维度。 因此,在这种情况下,如果您在重塑后检查coart的形状,您会发现:
coart.shape
#output: (4,1,2)
对于下一部分,您对索引感到困惑,并且有关于索引的优秀文档:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html 但为了得到它的要点,一个-1被python解释为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行的顶部。