https://blog.csdn.net/sky_kkk/article/details/79725646
numpy中axis取值的说明
首先对numpy中axis取值进行说明:一维数组时axis=0,二维数组时axis=0,1,维数越高,则axis可取的值越大,数组n维时,axis=0,1,…,n。为了方便下面的理解,我们这样看待:在numpy中数组都有着[]标记,则axis=0对应着最外层的[],axis=1对应第二外层的[],以此类推,axis=n对应第n外层的[]。下面开始从axis=0,axis=1这两个例子开始,深入透彻的理解numpy中axis的用法。axis = 0表示对最外层[]里的最大单位块做块与块之间的运算,同时移除最外层[]:a= np.array([1,2,3]) a.sum(axis = 0)>>>6123因为只有一层[],所以直接对这一层里的最大单位快1,2,3做运算;做完加法后本应是[6],但是移除最外层[]后,[]不存在了,所以返回的是6。a= np.array([[1,2],[3,4]]) a.sum(axis = 0)>>>array([4, 6])123有两层[],最外层[]里的最大单位块分别为[1,2],[3,4],对这两个单位块做块与块之间的运算,[1,2]+[3,4] = [4, 6];做完加法后本应是[[4, 6]],但是移除最外层[]后,原来的两层[]变成一层[],所以返回结果为 [4, 6]。np.array([[[1,2],[3,4]],[[11,12],[13,14]]])a.sum(axis = 0)>>>array([[12, 14], [16, 18]])123有三层[],最外层[]里的最大单位块分别为[[1,2],[3,4]],[[11,12],[13,14]],对这两个单位块做块与块之间的运算,[[1,2],[3,4]] + [[11,12],[13,14]] = [[12, 14], [16, 18]];做完加法后本应是[[[12, 14], [16, 18]]],但是移除最外层[]后,原来的三层[]变成两层[],所以返回结果为[[12, 14], [16, 18]];axis= 1表示对第二外层[]里的最大单位块做块与块之间的运算,同时移除第二外层[]:a= np.array([1,2,3]) a.sum(axis = 1)>>>ValueError: 'axis' entry is out of bounds123因为只有一层[],axis取值只有一个,为0.a= np.array([[1,2],[3,4]]) a.sum(axis = 1)>>>array([3, 7])123有两层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是1,2,第二组是3,4,分别对这两个单位块做块与块之间的运算,第一组结果为1+2=3,第二组结果为3+4=7;做完加法后本应是[[3],[7]],但是**移除第二外层[]**后,原来的两层[]变成一层[],所以返回结果为[3, 7]。np.array([[[1,2],[3,4]],[[11,12],[13,14]]])a.sum(axis = 1)>>>array([[ 4, 6], [24, 26]])123有三层[],第二外层[]里的最大单位块有两组(因为有两个第二外层[]),第一组是[1,2],[3,4],第二组是[11,12],[13,14],分别对这两个单位块做块与块之间的运算,第一组结果为[1,2]+[3,4] = [ 4, 6],第二组结果为[11,12]+[13,14] = [24, 26]做完加法后本应是[[[ 4, 6]], [[24, 26]]],但是**移除第二外层[]**后,原来的三层[]变成两层[],所以返回结果为[[ 4, 6], [24, 26]]axis = 3,4,5也如此分析看懂了这些说明,相信你对axis已经有了深入的理解,以后再也不用怕高维数组关于axis的运算了!