光栅扫描图案python

2024-07-01 07:35:20 发布

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

我正在尝试创建xy位置列表,这些位置表示光栅扫描模式,如下所示:

enter image description here

简单地说,我使用的是嵌套循环和if-else语句,但它变得越来越混乱。有没有一种简单的方法生成具有固定步长的位置列表?在


Tags: 方法列表if模式语句else嵌套循环xy
1条回答
网友
1楼 · 发布于 2024-07-01 07:35:20

一种可能的解决方案是,混合使用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组合成一个向量。在

使用list comprehension和^{}可以在没有任何for循环的情况下实现同样的效果,如下所示:

^{pr2}$

结果扫描模式: raster scan

相关问题 更多 >

    热门问题