[英]From 3D to 2D in Python
我想要以下代码:
chains3D = [[] for k in range(colors)]
def addr(x,y,z): return x + (nx) * (y + (ny) * (z))
for x in range(nx):
for y in range(ny):
for z in range(nz):
if (image[x,y,z] == background):
chains3D[1].append(addr(x,y,z))
else:
chains3D[0].append(addr(x,y,z))
在这样的事情:
chains2D = [[] for k in range(colors)]
def addr(x,y): return x + (nx) * y
for x in range(nx):
for y in range(ny):
if (image[x,y,0] == background):
chains2D[1].append(addr(x,y))
else:
chains2D[0].append(addr(x,y))
好的,我已经解决了代码问题,但是现在出现了这个错误:
IndexError Traceback (most recent call last)
<ipython-input-5-6a7d44bd72b7> in <module>()
213 objectBoundaryChain = larBoundaryChain(partial_3,chains2D[1])
214 b2cells = csrChainToCellList(objectBoundaryChain)
--> 215 sup_cell_boundary = MKPOLS((V,[FV[f] for f in b2cells]))
216
217 # remove the (local) boundary (shared with the piece boundary) from the quotient cell
/Users/Fabio/larpy/lar.pyc in MKPOLS(model)
101 """
102 V, FV = model
--> 103 pols = [MKPOL([[V[v] for v in f],[range(1,len(f)+1)], None]) for f in FV]
104 return pols
105
IndexError: list index out of range
我不知道为什么f等于最后一个b2cell的数目,而不是第一个,但是也许这不是产生此错误的真正问题
尚不清楚您正在尝试做什么,什么不起作用,但是似乎很奇怪的是您进行了转换:
return x + (nx) * (y + (ny) * (z))
成:
return x + (nx) * (y + (ny))
不应该是:
return x + (nx) * y
代替? 考虑到nz没有出现在您的3D版本中,因此ny不应出现在2D版本中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.