numpy.sum(axis=1)计算与np.angle数组处理规则答疑
NumPy 常见操作问题解答
关于x.sum(axis=1)的计算规则
要理解带axis参数的求和,首先要明确多维数组的轴对应关系:你创建的x是shape为(3,3,3)的三维数组,三个维度从外到内的编号依次为axis=0、axis=1、axis=2。指定某一个轴做sum运算时,会沿着该轴的方向遍历所有元素求和,运算完成后这个轴会被压缩消除。
针对axis=1的场景,结合测试数据的计算过程如下:
- 首先固定
axis=0的索引,把三维数组拆成3个独立的3×3二维矩阵:第一个矩阵元素为0-8,第二个为9-17,第三个为18-26 - 对每个二维矩阵,沿着
axis=1(也就是行方向)做列方向的累加:把同一列下所有行的数值加总- 第一个矩阵计算结果:
0+3+6=9、1+4+7=12、2+5+8=15,对应输出第一行[9, 12, 15] - 第二个矩阵计算结果:
9+12+15=36、10+13+16=39、11+14+17=42,对应输出第二行[36, 39, 42] - 第三个矩阵计算结果:
18+21+24=63、19+22+25=66、20+23+26=69,对应输出第三行[63, 66, 69]
最终输出的shape为(3,3),和你运行得到的结果完全匹配。
- 第一个矩阵计算结果:
补充参考:
x.sum()不指定axis时,会把所有元素全部加总得到单个标量,也就是测试里的351x.sum(axis=0)是沿最外层轴求和,把三个二维矩阵同位置的元素相加,最终得到3×3的结果x.sum(axis=2)是沿最内层轴(列方向)做行方向累加,把同一行所有列的数值加总,和你给出的测试结果一致
关于np.angle(x, deg=True)的含义与数组处理逻辑
np.angle是NumPy提供的计算复数辐角(相位角)的函数:
- 辐角的定义是复平面上复数对应点和实轴正方向的夹角,默认返回值单位是弧度,传入
deg=True时单位为角度 - 对于实数输入:正实数的辐角为0,负实数的辐角为π(弧度)/180°(角度),0的辐角为0
你的测试代码中x是由np.arange(27)生成的非负整数数组,所有元素都是≥0的实数,因此每个元素计算得到的辐角都是0°,最终输出全0数组。
针对数组输入,np.angle属于NumPy的逐元素通用函数(ufunc),处理逻辑非常直接:对输入数组的每个元素独立计算辐角,输出数组和输入数组的shape完全一致,支持广播规则,不会做维度压缩操作。
举个简单测试例:运行np.angle([1, -1, 1+1j], deg=True)会得到返回值[0., 180., 45.],分别对应正实数、负实数、45°相位复数的计算结果。
内容的提问来源于stack exchange,提问作者stackbiz
相关产品推荐
相关产品推荐

