[英]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.