使用cython加速耗时的列表操作

2024-09-28 05:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个函数,它将numpy ndarray中表示的图像作为参数。 此nArray包含一个列表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]]]

并应转化为:

^{pr2}$

下面的(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毫秒完成时间。提前谢谢你的建议。在


Tags: 函数图像numpy列表参数asnpline

热门问题