python - 是否有一种非循环方式来查找范围内的值,然后从列表中附加数据?
问题描述
我正在做一个项目,我根据某些值创建了垃圾箱。我会有 2 个值列表x
,y
. 例如:如果我选择 1 的 bin 大小,我将创建一个带有 values 的[100, 102, 104, 106]
binlist 。对于每个 bin,我想查找一个值是否介于两者之间并附加相应的值。如果一个值不在此范围内,我想分配一个值 0。这两个列表会这样。和。[2600, 18000, 12000, 4000]
[100, 101, 102, 103, 104, 105, 106]
x
y
x
x = [100, 101, 102, 103, 104, 105, 106]
y = [2600, 0, 18000, 0, 1200, 0, 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
's 的范围从 100 到有时 1600,bin 的数量可能非常大,这使得使用 for 循环的代码非常慢。我一直在尝试寻找一种解决此问题的 pandas 方法,但我对编码还很陌生,并且自己无法弄清楚这一点。
解决方案
推荐阅读
- javascript - 解码 Websocket 掩码
- javascript - jQueryUI datepicker 不显示下一个以前的三角形箭头
- performance - Angular 5 应用程序需要很长时间才能为初次使用的用户加载,我需要帮助来加快速度
- c - 为什么用 papi 读取硬件计数器的结果取决于 PAPI_library_init 位置?
- terraform - Terraform 远程状态使用不正确的文件
- php - 使用 PHP 保留文件属性压缩文件夹
- ruby-on-rails - 在远程 SSL 代理后面使用 Rails config.force_ssl 进行无限重定向
- gradle - 如何避免在运行 gradle 任务时创建构建目录?
- file - 如何从base64字符串下载文件以反应本机?
- asp.net - asp.net Web 表单 (VB) 页面从 SQL 呈现不正确的数据