是否有一种非循环方式来查找范围内的值,然后从列表中附加数据?

问题描述

我正在处理一个基于特定值创建垃圾箱的项目。我会有 2 个值列表 x,y。例如:[100,102,104,106][2600,18000,12000,4000] 例如,如果我选择 bin 大小为 1,我将创建一个值为 [100,101,103,105,106] 的 binlist。对于每个垃圾箱,我想找到 x 的值是否落在它们之间并附加相应的 y 值。如果 x 值不在此范围内,我想分配一个值 0。这两个列表会这样。 x = [100,106]y = [2600,1200,4000]

目前我使用当前代码使用 for 循环来检查所有这些 x 值的所有 bin,如下所示:

spectrumcounter = 0
binintensitylist = [[] for x in range(len(intensitylist))]
for i in range(len(intensitylist)):
    for bin1 in bins:
        intensity_tmp = 0
        for mz,intensity in zip(mzlist[spectrumcounter],intensitylist[spectrumcounter]):
            if bin1 < mz < bin1 + binwidth:
                intensity_tmp += intensity
        binintensitylist[i].append(intensity_tmp)
    spectrumcounter += 1

此处的 x 值为 mz,强度为 y 值。考虑到我目前使用的 bin 大小为 0,01,并且 mz 的范围从 100 到有时 1600,因此 bin 的数量可能非常大,这使得使用 for 循环的代码非常缓慢。我一直在尝试找到一种 Pandas 方法解决这个问题,但我对编码很陌生,并且自己无法解决这个问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)