微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在处理一个基于特定值创建垃圾箱的项目。我会有 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 举报,一经查实,本站将立刻删除。