1.考虑以下对numpy.ndarray公司
for ii in xrange(0,(nxTes-2)):
if ( (xCom-dtaCri-xcTes[ii]) * (xCom-dtaCri-xcTes[ii+1]) ) <= 0.0:
nxL=ii
if ( (xCom+dtaCri-xcTes[ii]) * (xCom+dtaCri-xcTes[ii+1]) ) <= 0.0:
nxR=ii+1
2.xCom
、dtaCri
和xcTes
类型为()numpy.float64个、浮动和numpy.ndarray公司分别
3.在nyTes
和nzTes
中重复上面的完整块,即在主算法循环中总共完成三个块。目标是使用来自xcTes
的位置数据创建一个窗口大小为dtaCri
、中心位于比较点xCom
的感兴趣区域
4.以上代码或多或少是Matlab的一个直接端口,其中相同的块以大约3到4倍的速度执行。你知道吗
5岁。问题:是否有可能在执行时间方面优化上面的块?如果有,如何优化?你知道吗
6.到目前为止,我尝试了一些小的调整,比如改变数据类型,使用range()而不是xrange(),从中我没有看到性能上的明显变化。你知道吗
在以矢量化的方式进入循环并使用切片之前,预先计算这些布尔条件输出,这些切片只是输入数组中的视图,如下-
我们可以看到很少有重复的计算。所以,我们可以在那里重新使用-
然后,就用那些胸部在循环-
这样做的目的是在循环内部做最少的工作,并将重点放在性能上。你知道吗
我假设在使用
nxL
和nxR
的循环中有更多的工作要做,否则我们会将值覆盖到这两个变量中。你知道吗相关问题 更多 >
编程相关推荐