【发布时间】:2021-09-23 23:29:00
【问题描述】:
我正在尝试在 python 中创建一个循环(或更多 python 方式)来检测特定序列何时发生在二维数组中,然后用另一个集合替换它。专门找到每行中的第一个 [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)
提前谢谢你!!
【问题讨论】:
-
在您的示例中,模式
[0, 1, 1]不能与自身重叠。如果我们允许重叠模式,那么预期的输出是什么,例如用[0, 1, 0, 1, 0]替换[0, 1, 0]? -
这是特定于 [0,1,1] 的情况,实际上它类似于 [0,0,0......0,1,1,1,1 ,1,....] 在大量的 1 之前有大量的零,然后又回到零。
-
我知道这是一个简化的例子。我的观点是可以有不同的方法来执行替换。顺便说一句,
scipy.ndimage模块在这里可能会有所帮助。
标签: python list multidimensional-array