numpy中的axis

首先参考这个,其次记录一些个人的理解。
如下,构造一个三维数组

import numpy as np
a = np.random.randint(2,10,(3,4,2))
'''[[[8 7]
  [7 4]
  [2 6]
  [2 3]]

 [[8 6]
  [6 8]
  [8 6]
  [6 6]]

 [[3 7]
  [9 4]
  [4 4]
  [5 3]]]'''
print(a.shape)
'''(3,4,2)'''
print(np.mean(a,axis = 0))
'''[[6.33333333 6.66666667]
 [7.33333333 5.33333333]
 [4.66666667 5.33333333]
 [4.33333333 4.        ]]'''
print(np.mean(a,axis = 1))
'''[[4.75 5.  ]
 [7.   6.5 ]
 [5.25 4.5 ]]'''
print(np.mean(a,axis = 2))
'''[[7.5 5.5 4.  2.5]
 [7.  7.  7.  6. ]
 [5.  6.5 4.  4. ]]'''

当axis = 0时,第一个元素 = (a[0][0][0] + a[1][0][0] + a[2][0][0])/3 = (8 + 8 + 3)/3 = 6.33333333,其他的以此类推。
根据以上链接所述

设axis=i,则Numpy沿着第i个下标变化的方向进行操作

个人的理解是,对于axis = i,该矩阵的值在第 i 维度下的操作。也就是说,np.mean(a,axis = 0)就是在第 0 维度下每个对应数据的均值,即

mean_0 = (a[0] + a[1] + a[2])/3#(a[0,:,:] + a[1,:,:] + a[2,:,:])/3 axis = 0
mean_1 = (a[:,0,:] + a[:,1,:] + a[:,2,:] + a[:,3,:])/4#axis = 1
mean_3 = (a[:,:,0] + a[:,:,1])#axis = 2

此外,不难发现,当axis = i时,操作后的数据的大小为剩下的维度,比如

print(a.shape)
'''(3,4,2)'''
print(np.mean(a,axis = 0).shape)
'''(4,2)'''
print(np.mean(a,axis = 1).shape)
'''(3,2)'''

当实在不知道怎么确定axis的时候,根据想要结果的shape就可以确定axis了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础篇NumPy的主要对象是同种元素的多维数组。这是一个所有的元素都是一种类型、通过一个正整数元组索引的元素表格(...
    oyan99阅读 5,151评论 0 18
  • 介绍 NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和...
    喔蕾喔蕾喔蕾蕾蕾阅读 1,802评论 0 5
  • 前言 numpy是支持 Python语言的数值计算扩充库,其拥有强大的高维度数组处理与矩阵运算能力。除此之外,nu...
    TensorFlow开发者阅读 3,251评论 0 35
  • 一.NumPy的引入 标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列...
    wlj1107阅读 1,043评论 0 2
  • 先决条件 在阅读这个教程之前,你多少需要知道点python。如果你想从新回忆下,请看看Python Tutoria...
    舒map阅读 2,599评论 1 13