0

numpy ndarray で表される画像をパラメーターとして受け取る関数があります。この ndarray は、リストxリストxリストアイテム (行 x ピクセル x ピクセル) で構成され、通常のリスト形式のリストxリストxタプルに変換する必要があります (したがって、ndarray ではなくなります)。

したがって、たとえば、この変数の内容は次のようになります

[[[0,0,0],[1,0,1],[2,4,5]],[[3,4,5],[1,7,4],[1,3,5]],[[2,4,2],[1,6,7],[1,9,0]]]

次のように変換する必要があります。

[[(0,0,0),(1,0,1),(2,4,5)],[(3,4,5),(1,7,4),(1,3,5)],[(2,4,2),(1,6,7),(1,9,0)]]

以下の (cython) コード セグメントはまさにこれを行いますが、1024x768 の画像が完了するまでに約 800 ミリ秒かかります。

import numpy as np
cimport numpy as np
DTYPE = np.int
ctypedef np.int_t DTYPE_t

def convertToBackdrop(np.ndarray arr3d):    
    agc = arr3d.swapaxes(0,1).tolist()
    agc = [map(tuple,line) for line in agc]
    return agc

私の質問は次のとおりです。このコードをより (時間) 効率的にするにはどうすればよいでしょうか? リストの cdef があるかどうかを検索しましたが、リードが見つかりませんでした。100ミリ秒未満の完了時間を取得したいのであれば、不可能なことを求めていないことを願っています。ご提案いただきありがとうございます。

4

0 に答える 0