python中 axis的本质

本文详细解释了在使用Python的Numpy和Pandas库进行数据分析时,axis参数的含义和作用。通过实例展示了如何在对多维数组进行操作时,利用axis指定在哪个维度上进行特定操作,如sum、min和max等,从而减少数组的维度。文中还分析了axis在不同维度上的应用,并给出了三维数组的例子来加深理解。
摘要由CSDN通过智能技术生成

使用Python中的Numpy和Pandas进行数据分析的时候,经常会遇到axis参数,网络上很多资料对这个基本问题说得不清楚,现结合自己的理解来讲讲axis本质,希望大家多多批评指正。

axis用在对多维数组进行操作时指定变化的是哪一维?(一维数组因为只有一个维度,不需要指定哪一维)指定axis=n进行某种操作时,如进行sum操作,表示其它维相对固定的情况下,对标号为n的那一维上的所有数进行一次sum操作,然后在其它维上不断遍历的情况下,重复进行sum操作,假设数组原本有M维,最后将变成M-1维,标号为n的那一维最后被消除了。

接下来看几个具体的例子。

arr1 = np.array(
        [[ 11,2,3,4],
         [ 5, 6,7,18],
         [ 9, 8,1,3]])
print(np.min(arr1,axis=0))
print(np.max(arr1,axis=1))

arr1是一个二维数组,标号为0的维代表行,标号为1的维代表列。语句np.min(arr1,axis=0)里axis=0代表:先把其他维(这里只剩下标号为1的维度)固定为0,即固定第一列,变化的是标号为0的维上的下标,对三个数11,5,9求最小值为5;然后固定第二列,再次变化标号为0的维上的下标,对三个数2,6,8求最小值为2;依此类推,然后固定第三列,在对应的列上,求出最小值为1;在最后一列上求出最小值为3。

语句np.max(arr1,axis=1),axis=1代表:这里的其他维是指标号为0的维,先将它固定为0,也就是固定为第一行,变化的是标号为1的维上的下标,对四个数11,2,3,4求最大值,求出最大值为11;然后固定为第二行,再次变化标号为1的维上的下标,对二行的四个数5, 6,7,18求最大值为18;依此类推,固定为第三行,对9, 8,1,3这四个数求最大值为9。

再看一个更具有代表性的例子

import numpy as np
arr1 = np.array(
        [[[11,2, 3, 4],
         [ 5, 16,7, 18],
         [ 9, 8, 1, 3]]
        ,
         [[1, 5, 13,4],
         [ 15,6, 9, 2],
         [ 9, 18,11,3]]]
        )
print(np.min(arr1,axis=0))
print(np.max(arr1,axis=1))

arr1是一个三维数组,可以想像为一个2页,每页3行4列的数组,下标为0的维控制各页,下标为1的维控制各行,下标为2的维控制各列。 np.min(arr1,axis=0)里的axis=0代表:其它维的下标为1和2,当其它维暂时固定时,变化的是各页上的数。其它维先固定为第一行第一列,遍历该位置上各页的数为11和1,最小值为1。然后其它维再固定为第一行第二列,遍历该位置上各页的数为2和5,最小值为2。依此类推得到的最终结果为:

[[1 2 3 4]
 [5 6 7 2]
 [9 8 1 3]]

np.max(arr1,axis=1)里的axis=1代表:其它维的下标为0和2,当其它维暂时固定时,也就是固定页和列时,变化的是各行上的数。先固定为第一页与第一列,在变化的行的维度上有三个数11,5,9,最大值为11。再固定为第一页与第二列,在变化的行的维度上有三个数2,16,8 ,最大值为16。依此类推把第一页处理完后,再固定为第二页与第一列,在1,15,9这三个数中求出最大值为15。依此类推得到的最终结果为:

[[11 16  7 18]
 [15 18 13  4]]

同理np.argmin(arr1,axis=0),np.argmax(arr1,axis=1)这两条语句的执行过程与上面分析的两条语句的执行过程是一样的,不同之处在于得到的结果为:求得的最小值在指定的变化维上的下标。如下所示:

[[1 0 0 0]
 [0 1 0 1]
 [0 0 0 0]]


[[0 1 1 1]
 [1 2 0 0]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值