NumPy嵌套数组sum方法axis参数理解及期望结果实现求助
解决NumPy嵌套数组求和的axis参数理解问题
先明确你的数组形状:
import numpy as np vals = np.array([[[38., 27.], [20., 12.]], [[10., 27.], [10., 30.]], [[13., 16.], [5., 5.]]]) print(vals.shape) # 输出 (3, 2, 2)
NumPy的axis是从0开始计数的维度:
- axis=0:最外层的3个二维数组
- axis=1:每个二维数组里的2个一维数组
- axis=2:每个一维数组里的2个数值
你用vals.sum(axis=1)时,是沿着axis=1(中间层)求和,也就是把每个二维数组里的两个一维数组对应位置相加,所以第一个二维数组[[38.,27.],[20.,12.]]求和后得到[38+20, 27+12] = [58.,39.],这和你当前得到的结果一致。
而你预期的[65.,32.]是把每个一维数组内部的数值相加,这需要沿着axis=2(最内层)求和:
result = vals.sum(axis=2) print(result)
输出结果:
array([[65., 32.], [37., 40.], [29., 10.]])
你写的第三个子数组结果[40.,29.]应该是手误,正确计算是13+16=29、5+5=10。
如果你的预期结果确实是[40.,29.],可以补充说明具体的计算逻辑,再调整解法。
内容的提问来源于stack exchange,提问作者Macho
相关产品推荐
相关产品推荐

