Numpy 中的 axis 对初学者而言是一个很是容易引发困扰的概念,本文但愿经过图文并茂的方式,让你们能对 axis 有一个直观的认识。html
数缺形时少直观,形少数时难入微。
数形结合百般好,隔离分家万事休。
—— 华罗庚python
axis 自己就是 轴 的意思,它实际上表明了要在哪一个轴上进行求和,因此使用 sum 函数时,必定要有一个空间上的概念,这样会很是容易理解计算的结果。数组
因此当咱们说 [[0, 4, 2], [-2, 5, 3]]
,咱们说的实际上是:函数
二维数组对应的就是一个二维表格,它一共有两个轴(axis),axis 0
对应行,axis 1
对应列。spa
当指定 axis 0
进行求和时,作的是这样的运算:3d
也就是顺着 axis 0 轴求和,最后获得一个一维数组:code
>>> np.sum([[0, 4, 2], [-2, 5, 3]], axis=0)
array([-2, 9, 5])
复制代码
一样地,当指定 axis 1
时,是这样的:cdn
即:htm
>>> np.sum([[0, 4, 2], [-2, 5, 3]], axis=1)
array([6, 6])
复制代码
上升到三维空间又是怎样的呢?实际上道理仍是同样的,咱们建立一个三维数组:blog
>>> array_3d = [
... [
... [1, 2],
... [3, 4]
... ],
... [
... [5, 6],
... [7, 8]
... ],
... [
... [9, 10],
... [11, 12]
... ]
... ]
复制代码
而后脑海里立刻就有一个三维的空间了!
那对 axis 0
求和,其实就是顺着 axis 0 的方向求和,最后得出的是一个二维数组:
即:
>>> np.sum(array_3d, axis=0)
array([[15, 18],
[21, 24]])
复制代码
对 axis 1
、axis 2
也是同样的,这里以 axis 2 举例,你们能够尝试本身画 axis 1 的:
>>> np.sum(array_3d, axis=2)
array([[ 3, 7],
[11, 15],
[19, 23]])
复制代码
四维咋办,四维还真很差画,不过本文的目的是可以直观理解计算的结果,讲道理前面这些图应该足够理解求和了,因此我也不画了,哈哈哈
固然,上面全部运算的前提,都是咱们正确肯定好了坐标轴的方向。关键问题在于,如何知道哪一个是 axis 0
、哪一个是 axis 1
?
实际上,轴的肯定能够根据嵌套关系来肯定,轴的顺序就是括号的从外到内:
不过用这种方式思考,就少了对形的理解,会稍微难以理解,能够参考 Python · numpy · axis。