Python之Numpy axis理解

    技术2025-08-10  15

    前言

    之前使用numpy的时候大概了解过axis的用法,对于基本的一维或二维数组,axis=0就代表水平按列操作,axis=1就代表竖直按行操作,也还是挺好理解的,但是最近用到了矩阵数组求平均值的时候遇到了一些问题:

    >>> a = np.arange(9).reshape(3,3) >>> b = np.arange(9,18).reshape(3,3) >>> c = [a, b] >>> c [[[0, 1, 2], [3, 4, 5], [6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]]] >>> np.average(c, axis=0) array([[ 4.5, 5.5, 6.5], [ 7.5, 8.5, 9.5], [10.5, 11.5, 12.5]]) >>> np.average(c, axis=1) array([[ 3., 4., 5.], [12., 13., 14.]])

    显然,当矩阵内嵌矩阵的时候,很难发现这些操作与行和列之间的联系,而网上大部分的解释都是从这个方面进行解释。 我觉得@sky_kkk的这篇文章是对axis最好的解释了,因此做个引用保存,方便他日再生疑惑时查看。 总的来说axis= i的值就是代表着从最外开始数对第i+1个 [ ] 内的最大单位的块进行操作,因此上面axis=0代表着a,b两个矩阵对应位置求平均,axis=1就代表着对第二个 [ ] 内的最大单位块进行操作,其中第一组中有三个块 [0,1,2],[3,4,5],[6,7,8] 因此对三个块求平均

    Processed: 0.011, SQL: 9