Numpy短数组重复匹配长数组后对应元素相加有什么更优方案?
方案1:使用np.resize(写法最简洁)
np.resize会自动将数组重复填充到指定的目标长度,刚好适配b长度可整除a的场景,无需手动计算重复次数:
>>> a + np.resize(b, a.shape) array([ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10])
方案2:reshape+广播运算(内存效率最高)
如果处理的数组体量很大,不想生成完整的拓展后b数组,可以用reshape配合numpy广播机制完成运算,全程不会产生中间的重复版b数组,内存占用更低:
>>> (a.reshape(-1, len(b)) + b).ravel() array([ 0, 2, 2, 4, 4, 6, 6, 8, 8, 10])
两种方案都比np.tile写法更简洁,性能也相当甚至更优。
内容的提问来源于stack exchange,提问作者Spacedman
相关产品推荐
相关产品推荐

