numpy中shape为(10000,6)的数组按25间隔减对应基准值的实现方法
numpy高效实现方案
核心思路
你的数组总行数10000刚好可以被25整除,我们可以通过数组重塑+广播机制实现全向量化操作,完全避免Python级别的循环,性能最优。
实现代码
import numpy as np # 原始数组a,shape为(10000, 6) # 1. 按25行一组重塑数组,得到形状为(400, 25, 6)的三维数组 a_grouped = a.reshape(-1, 25, 6) # 2. 提取每组的第1行作为基准数组,保留维度适配广播规则 baseline = a_grouped[:, 0:1, :] # 3. 组内所有行减去对应基准数组 res_grouped = a_grouped - baseline # 4. 恢复为原始的二维形状(10000, 6) res = res_grouped.reshape(-1, 6)
补充说明
如果实际使用时数组总行数不是25的整数倍,可以先计算余数单独处理尾部不足25行的部分,再和前面的计算结果拼接即可。
内容的提问来源于stack exchange,提问作者Asbjoern Lund
相关产品推荐
相关产品推荐

