Python中高效实现数组子组权重归一化的方法求教
高效实现numpy数组子组权重归一化的方法
实现代码
针对你的需求,不需要手动拆分再拼接,只需要把所有子组的切片规则集中定义,通过循环自动完成每个子组的归一化,代码如下:
import numpy as np # 原始权重数组 w = np.array([9,20,5,3,8,5,8,10,4,3,3,2,5,5,2,3,2,1,2])/100 # 定义所有子组的切片(替换成你需要的任意子组规则即可) subgroups = [slice(0,5), slice(6,12), slice(12,14), slice(14,16), slice(16,18)] # 初始化归一化后的数组 normalized_w = w.copy() # 遍历每个子组完成归一化 for sg in subgroups: sub_data = normalized_w[sg] normalized_w[sg] = sub_data / sub_data.sum()
这个方法的优势在于:子组规则集中管理,后续修改权重数组或子组范围时,只需要调整subgroups列表即可,避免了手动拆分拼接容易出现的索引错误,逻辑也更清晰。
相关学习资源
- 重点学习numpy的数组切片和向量化运算,这是处理这类数组分组操作的核心,numpy官方文档里的对应章节会详细讲解切片的各种用法,以及如何利用向量化运算替代循环提升效率。
- 书籍《Python for Data Analysis》中的numpy章节,里面有大量数组分组、变换的实战案例,适合有Matlab基础的开发者快速上手Python数据处理。
内容的提问来源于stack exchange,提问作者Jung Hun Kim
相关产品推荐
相关产品推荐

