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.]])
posted @   MisakaYier  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示