我有一个函数,它将numpy ndarray中表示的图像作为参数。 此ndarray由 list x list x list 项(行x像素x像素)组成,需要转换为列表 x 列表 x tuple 采用常规列表格式(因此不再是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的图像需要大约800ms。
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毫秒的完成时间内完成它,我希望我不是要求不可能的。提前感谢任何建议。