py#矩阵运算以及axis取值的讨论
不同矩阵a,b对应位置元素运算
1)合并矩阵:merge=np.array([a,b])
1)求平均np.mean(merge,axis=0)
2)求标准差np.std(merge,axis=0)
3)求差值,直接a-b
4)求分数,直接a/b
关于axis运算方向的问题,在看了网上的一些解析与实验测试之后,发现如下规律:
当矩阵为2维时,运算很好理解,即axis=0代表每列的平均值,axis=1代表每行的平均值,网上很多这是这样解析的,但是这种表述是不准确的。
准确的表述应为:axis=0代表每行的对应位置元素的平均值,axis=1代表每列对应元素的平均值。
在这种表述下,很容易想到numpy读取元素是按照先行后列,即np.shape[0]为行,np.shape[1]为列。如此解释,就得到了axis值的具体意义,即指np矩阵的行方向对应着元素或者列方向对应位置元素的运算。
并且,在更高维度np矩阵中,这种理解同样适用,如果矩阵a的shape为(2,3,4),通俗可理解为两层三行四列,那么axis=0是对各层对应位置元素进行运算,得到的结果矩阵shape为(3,4);axis=1则是对各层中每行对应位置元素进行运算,得到结果矩阵shape为(2,4);axis=2则对各层中每列对应位置元素进行运算,得到结果矩阵shape为(2,3)
示例:
1 2 3 | a1 = np.array([[ 1 , 1 , 1 , 1 ],[ 2 , 2 , 2 , 2 ],[ 3 , 3 , 3 , 3 ]]) a2 = np.array([[ 4 , 4 , 4 , 4 ],[ 5 , 5 , 5 , 5 ],[ 6 , 6 , 6 , 6 ]]) a = np.array([a1,a2]) |
a=
array([[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], [[4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]]])
1 2 | #axis=0,shape[0]维度进行运算 np.mean(a,axis = 0 ) |
Out:
array([[2.5, 2.5, 2.5, 2.5], [3.5, 3.5, 3.5, 3.5], [4.5, 4.5, 4.5, 4.5]])
1 2 | #axis=1,shape[1]维度进行运算 np.mean(a,axis = 1 ) |
Out:
array([[2., 2., 2., 2.], [5., 5., 5., 5.]])
1 2 | #axis=2,shape[2]维度进行运算 np.mean(a,axis = 2 ) |
Out:
array([[1., 2., 3.], [4., 5., 6.]])
分类:
python小技巧
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程