2024-07-01 07:35:20 发布
网友
我正在尝试创建xy位置列表,这些位置表示光栅扫描模式,如下所示:
简单地说,我使用的是嵌套循环和if-else语句,但它变得越来越混乱。有没有一种简单的方法生成具有固定步长的位置列表?在
一种可能的解决方案是,混合使用Numpy和普通Python:
from pylab import * # define some grids xgrid = arange(20, 31) ygrid = arange(10, 16) xscan = [] yscan = [] for i, yi in enumerate(ygrid): xscan.append(xgrid[::(-1)**i]) # reverse when i is odd yscan.append(ones_like(xgrid) * yi) # squeeze lists together to vectors xscan = concatenate(xscan) yscan = concatenate(yscan) # quick plot plot(xscan, yscan, '.-') axis([19, 31, 9, 16]) show()
它的工作方式是为x和y定义两个空列表,每次向其添加一个扫描行。对于x坐标,您还需要一条向前和向后的线(xgrid[::1]表示前进,xgrid[::-1]表示向后,+1和{}由(-1)**i获得),而对于y坐标,您必须为每个x坐标重复一个y值。最后,您必须将向量列表concatenate组合成一个向量。在
xgrid[::1]
xgrid[::-1]
+1
(-1)**i
使用list comprehension和^{}可以在没有任何for循环的情况下实现同样的效果,如下所示:
结果扫描模式:
一种可能的解决方案是,混合使用Numpy和普通Python:
它的工作方式是为x和y定义两个空列表,每次向其添加一个扫描行。对于x坐标,您还需要一条向前和向后的线(}由
xgrid[::1]
表示前进,xgrid[::-1]
表示向后,+1
和{(-1)**i
获得),而对于y坐标,您必须为每个x坐标重复一个y值。最后,您必须将向量列表concatenate组合成一个向量。在使用list comprehension和^{} 可以在没有任何for循环的情况下实现同样的效果,如下所示:
^{pr2}$结果扫描模式:
相关问题 更多 >
编程相关推荐