我试图用cython来固定我的python代码。
在cython中,我尝试删除的一个瓶颈是在循环中构造文件名(字符串)。 但是,我无法以cython方式重新编写我的python代码:
{{1}}
任何关于如何重写这一点的帮助将非常感谢! 感谢
答案 0 :(得分:0)
我怀疑你可以加速Python中的格式化。例如:
In [67]: lat=np.arange(6).reshape(2,3)
In [68]: names=[]
In [69]: for i in range(lat.shape[0]):
...: for j in range(lat.shape[1]):
...: name = 'path/'+'directory'+format(lat[i,j],'02d')+'_'+format(lat
...: [i,j]+3,'02d')+'.csv'
...: names.append(name)
...:
In [70]: names
Out[70]:
['path/directory00_03.csv',
'path/directory01_04.csv',
'path/directory02_05.csv',
'path/directory03_06.csv',
'path/directory04_07.csv',
'path/directory05_08.csv']
可以重写为:
In [71]: names=[]
In [72]: fmt='path/'+'directory/'+'%02d_%02d.csv'
In [73]: for i in range(lat.shape[0]):
...: for j in range(lat.shape[1]):
...: name = fmt%(lat[i,j],lat[i,j])
...: names.append(name)
换句话说,在开始时创建一个格式字符串,并重复使用它。
或者PY3样式format
:
fmt = 'path/directory{:02d}_{:02d}.csv'
name = fmt.format(lat[i,j],lat[i,j])
快速时间测试表明2-3倍的加速(使用较旧的%
样式更多)。