numpy中的axis

本文详细解释了Numpy数组中的轴概念及其应用。对于不同维度的数组,轴代表着不同的方向,如二维数组中的行和列。文章通过实例展示了如何利用轴进行数组的操作,如求和等。


转载https://zhuanlan.zhihu.com/p/35704955

numpy数组中的轴不太容易理解,但是却非常重要。官方定义为:轴即维度(In Numpy dimensions are called axes.)。

对于二维数组,0轴即代表数组的行,1轴代表数组的列,对二维数组:

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> arr1
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
复制代码

其轴0、1如下图所示:

>>> arr1.sum(axis=0)
array([12, 15, 18])
>>> arr1.sum(axis=1)
array([ 6, 15, 24])
复制代码

对于三位数组

array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7]],

       [[ 8,  9, 10, 11],
        [12, 13, 14, 15]]])
复制代码

数组arr3条轴,编号分别为0、1、2,要直接看出来这三条轴分别对应什么方向有点困难。最好的办法就是先将三维数组降维成一个二维数组,这样就可以获得原数组的0轴、1轴。怎么降呢?把最内层数组作为一个整体来看待,即有:

A = [0, 1, 2, 3]
B = [4, 5, 6, 7]
C = [ 8,  9, 10, 11]
D = [12, 13, 14, 15]
arr = [[A, B],
       [C, D]]
>>> arr.sum(axis=0)
array([[ 8, 10, 12, 14],
       [16, 18, 20, 22]])
# arr.sum(axis=1) = [A + B, C + D]
>>> arr.sum(axis=1)
array([[ 4,  6,  8, 10],
       [20, 22, 24, 26]])
arr.sum(axis=2)
array([[ 6, 22],
       [38, 54]])
复制代码


如果一个多维数组的 shape 是 (a1, a2, a3, a4), 那么延轴0计算最后的数组shape 是 (a2, a3, a4), 延轴1计算最后的数组shape是 (a1, a3, a4)

对于多维数组,numpy对轴的编号是先行后列,由外向内!最外面的括号代表着 axis=0,依次往里的括号对应的 axis 的计数就依次加 1,所以,第三个轴(轴2)即为最内层数组的行方向

np.sum 这种函数中的参数 keepdims,它的默认值是 False,此时它会把多余的括号给删掉。假如我们把它设为 True 的话,表示保持原来的维度.

下面是参考文献2中同学整理的图。

参考

https://flat2010.github.io/2017/05/31/Numpy数组解惑/​flat2010.github.io
Numpy数组解惑 | 断鸿声里,立尽斜阳 Numpy数组解惑 | 断鸿声里,立尽斜阳​flat2010.github.io
射命丸咲:Python · numpy · axis​zhuanlan.zhihu.com


转载于:https://juejin.im/post/5ad58a8ff265da23906c81f8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值