numpy——轴axis的意义
Date : 2021-5-17
import numpy as np
result = np.arange(24).reshape(2,3,4)
print("result:\n",result)
print("shape of result:\n",result.shape)
print("ndim of result:\n",result.ndim)
print("sum of result axis 0:\n",result.sum(axis=0))
print("sum of result axis 1:\n",result.sum(axis=1))
print("sum of result axis 2:\n",result.sum(axis=2))
代码运行结果为:
result:
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
shape of result:
(2, 3, 4)
ndim of result:
3
sum of result axis 0:
[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]
sum of result axis 1:
[[12 15 18 21]
[48 51 54 57]]
sum of result axis 2:
[[ 6 22 38]
[54 70 86]]
从上述代码运行结果可以看出,result的shape为(2,3,4),维度为3,共有3个轴,轴axis = 0,1,2对应的长度分别为2,3,4,沿axis = 0的轴进行求和运算,得到的结果的shape为(3,4);沿axis = 1的轴进行求和运算,得到的结果的shape为(2,4);沿axis = 2的轴进行求和运算,得到的结果的shape为(2,3)。对比result的shape(2,3,4),则可以发现,沿axis=0,1,2的轴进行求和的结果的shape相当于(1,3,4)、(2,1,4)和(2,3,1),即沿轴进行运算相当于沿轴的分类进行运算。
以甲乙两个人的身材在不同年龄的身材为例,甲10岁、20岁、30岁的身高体重分别为[30kg,130cm]、[60kg,180cm]、[80kg,183cm];乙10岁、20岁、30岁的身高体重分别为[25kg,120cm]、[50kg,165cm]、[70kg,168cm],则甲乙两人的年龄身材数据构成的数组为:
[[[30,130],
[60,180],
[80,183]],
[[25,120],
[50,165],
[70,168]]]
其中axis = 0代表人物轴(长度为2,甲、乙),axis = 1代表年龄轴(长度为3,10岁,20岁,30岁), axis = 2代表身材轴(长度为2,身高,体重),对axis = 0的人物轴进行取平均值运算,相当于求在不同年龄(10岁,20岁,30岁)甲和乙的身材的平均值,结果消去了人物轴;对axis = 1的年龄轴进行取平均值运算,相当于求不同人物(甲和乙)在10岁、20岁和30岁时的身材的平均值,结果消去了年龄轴;对axis = 2的身材轴进行取平均值运算,相当于求不同人物(甲和乙)在10岁、20岁和30岁时的身高和体重的平均值(mean(cm+kg),无实际意义),结果消去了身材轴,数据无实际意义