我试图用python(或者更像python的方式)创建一个循环,以检测2d数组中何时发生特定序列,然后用另一个集合替换它。特别是在每一行中找到第一个[0,1,1],并将其替换为类似[0.25,0.5,0.75]的内容,以在1的边缘创建渐变
例如:
a =[[0,0,0,0,0,0,0]
[0,1,1,1,1,1,0]
[0,1,1,1,1,1,0]
[0,0,0,0,0,0,0]]
detectfunction(a,[0,1,1],[0.25,0.5,0.75])
output =[[0, 0 , 0 , 0,0,0,0]
[0,0.25,0.5,0.75,1,1,0]
[0,0.25,0.5,0.75,1,1,0]
[0, 0 , 0 , 0,0,0,0]]
这是我当前的代码,它只在数据的一个部分中工作。边缘列表是我在0,1转换后真正想要切入的
fr_len = 10
fringe = np.arange(0,1,1/fr_len)
fringecloud1 = []
for ind,val in enumerate(O1bitcloud_m):
m = list(O1bitcloud_m[ind])
if val[ind] == 0 and val[ind+1] == 1:
startind = ind
endind = ind+fr_len
m[startind:endind] = fringe
fringecloud1.append(m)
else:
fringecloud1.append(m)
提前谢谢你
下面是一种使用内置
array
模块的方法。通过将a
行表示为Python数组,我们可以直接对表示每行的字节调用replace
。结果与预期的输出不完全匹配(我不确定示例输出的第2行和第3行中为什么有前导零)将操作拆分为三个任务和相关方法:
这里的第一个方法是一个生成器,它返回一个元素按
n
分组的列表:第二种方法是获取索引:
最后,替换:
例如:
相关问题 更多 >
编程相关推荐