在考虑如何进行优化时,我还是个天才。我有这段代码,它接收一个找到的峰值列表,并找到这些峰值,+/-一些值,在多维数组中的位置。然后将它们的零数组索引加上+1。代码运行良好,但执行起来需要很长时间。例如,如果ind
有270个值,而refVals
的形状是(30503130,80),那么运行大约需要45分钟。我知道有很多数据需要处理,但是有没有更有效的方法来处理呢?你知道吗
maskData = np.zeros_like(refVals).astype(np.int16)
for peak in ind:
tmpArr = np.ma.masked_outside(refVals,x[peak]-2,x[peak]+2).astype(np.int16)
maskData[tmpArr.mask == False ] += 1
tmpArr = None
maskData = np.sum(maskData,axis=2)
方法#1:如果内存允许,这里有一个使用^{} -
方法#2:如果前一个内存不足,我们可以使用循环和NumPy布尔数组,这可能比屏蔽数组更有效。此外,我们还将执行一个更高级别的
sum-reduction
,以便在迭代过程中拖动更少的数据。因此,可供选择的实现方式如下所示-方法#3:或者,我们可以用方法#2中的^{} 替换基于限制的比较。因此,循环中的唯一步骤将变成-
相关问题 更多 >
编程相关推荐