通过连接一些点,我创建了一组线。我将行数设置为numpy数组:
line_no_A= np.arange (17, 31)
sep_A=23
这些线以两个垂直方向排列,如蓝色和红色线所示。从sep
开始,行的方向改变。
我还有创建这些线的点数:
point_rep_A=np.array([4, 3, 3, 1])
现在,我想提取一些特定的行。我上传了一张图,并用蓝色圆圈显示了细节线。为了在场景_A中找到带圆圈的红线,我可以首先检查point_rep_A
:第一个值是4,第二个值是3,产生1个差异:因此,从第一条point_rep_A[0] - 1
红线开始,保留第一条(行号24
在24
、25
和26
之外)。然后,point_rep_A[1] - point_rep_A[2]
之间的差值为零,因此从point_rep_A[1] - 1
红线开始,不保留任何一条。然后,point_rep_A[2] - point_rep_A[3]
等于2,所以保留前两行(29
和30
)。对于point_rep_A[4]
,如果它是1,则表示只有一个点,不能形成任何红线。但是,如果它大于一,我希望所有的行都不出现point_rep_A[4] - 1
红线。
对于特定的böue行,point_rep_A[1] - point_rep_A[2]
不是零,所以我想保留下一行的第一行。我指的是{point_rep_A[2] - 1
蓝线(即20
、21
和22
中的20
)。最后是point_rep_A[3] - 1
蓝线的第一行(这是23
中的23
)。事实上,我想在point_rep_A
发生第一次更改之后开始选择这些行。我认为我的无花果可以更好地说明这个想法。最后我想得到这样的结果:
[24, 17, 20, 29, 30, 23]
对于场景B,我的特定行是每个区块的最后一行。这里我想要每个区块的所有蓝线,但在前一个区块中,我想要在point_rep_A
中的第一次更改之后开始拾取它们。我对方案B的输入是:
line_no_B= np.arange (17, 34)
sep_B=25
point_rep_B=np.array([1, 2, 3, 3, 4])
我希望场景B有这样的结果:
[17, 26, 19, 28, 22, 25, 33]
如果有人能帮我用python为我的想法设计一个算法,我将不胜感激。提前谢谢
这是第一部分:
输出为:
相关问题 更多 >
编程相关推荐