3D numpy数组按第一维度求和的非循环实现方法
实现方案
方法1:使用numpy内置sum函数指定求和维度
直接调用numpy.sum(),传入参数axis=0指定对第一个维度求和即可,代码如下:
import numpy as np arr = np.array(((((1,2,3),(9,8,7),(6,5,4))), (((10,20,30),(90,80,70),(60,50,40))))) arr_sum = np.sum(arr, axis=0)
运行后arr_sum的输出完全符合预期:
array([[11, 22, 33], [99, 88, 77], [66, 55, 44]])
方法2:直接调用数组对象的sum方法
也可以直接调用numpy数组自带的sum实例方法,写法更简洁,效果和上面完全一致:
arr_sum = arr.sum(axis=0)
方案优势
- 代码更简洁,仅需一行就可以完成原本循环的功能
- numpy内置的求和是向量化运算,底层用C实现,相比Python原生循环性能高很多,数组越大优势越明显
- 语义清晰,看到
axis=0就能直接判断是对第一个维度做聚合操作
内容的提问来源于stack exchange,提问作者Romero_91
相关产品推荐
相关产品推荐

