Numpy 中的 axis

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 1axis 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

参考

相关文章
相关标签/搜索