如何对含40个500元素子数组的numpy数组求和?求替代方案
高效的Numpy子数组求和方法
你的数组本质是形状为(40, 500)的二维Numpy数组,完全不需要手动逐个累加,用Numpy内置的求和方法就能高效解决:
核心方法:指定轴求和
直接使用np.sum()或者数组自身的sum()方法,通过axis=0参数指定沿着子数组所在的维度(也就是40个元素的那一层)求和,这样每个子数组对应位置的元素会自动相加,最终得到长度为500的结果数组,和你手动累加的效果完全一致,但效率提升几个量级。示例代码:
import numpy as np # 假设fourier是你的(40, 500)形状的numpy数组 fourier_sum = np.sum(fourier, axis=0) # 或者用数组自身的sum方法,效果相同 fourier_sum = fourier.sum(axis=0)为什么这个方法更好?
手动逐个累加会产生大量中间临时数组,既占用额外内存,又因为是Python层面的循环操作,速度远慢于Numpy的底层向量化实现——Numpy的求和操作是基于C优化的,处理大规模数据时差距会非常明显。
内容的提问来源于stack exchange,提问作者epselonzero
相关产品推荐
相关产品推荐

