簡體   English   中英

在Python中從3D到2D

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM