【No.1】史上最清楚的numpy shape和axis讲解

很久之前就学习了numpy,但是最近在使用的过程中,突然蒙蔽了,以前就是对于二位、三维数据的记忆,如果忘记了,测试一下就知道了,但是内心无法接受,所以决定再仔细的研究一番,经过很多资料的学习终于让我剔骨灌顶,希望可以帮到路过的人,这里均采用实例讲解。

一、shape

比如:a=np.array([[[1,2,3],[2,3,4]],[[2,3,4],[1,2,1]]])

首先要知道在numpy的array中任何数据都有一个最外层的[ ],先看a最左边有几个[ , 有三个,做所以这是一个三维数组,设为(a,b,c),我们再看a,从最外层的[]看起,这个最外层的[]包起来的数据,可以看出用了[]包起来,所以a=2,再看里面两个中的一个[],这个[]里面的数据也用了两个[],所以b=2,接着看内嵌这两个中的一个[],里面有三个数据,c=3,所以a.shape=(2,2,3),如下图:

计算shape总结:元数据从外[]向内看,shape从左到右计算

二、axis

还是如:a=np.array([[[1,2,3],[2,3,4]],[[2,3,4],[1,2,1]]]),a.shape=(2,2,3),维度对应的下标为(0,1,2) 其中0维->1, 1->2 , 2->3

以sum为例,先记住:axis=几,几对应的shape就消失,如axis=0,之后的shape为(2,3);axis=2,则变成(2,2)

对于a我们来看一下他有哪些下标:(共2*2*3=12个)

000,001,002

010,011,012

100,101,102

110,111,112

一共12个,如a[1][1][1]是2

计算sum的时候,如果axis=0,axis=0对应于数组shape下标的的第一个位置。那么第一个位置的变化方向有几个呢,就要看shape下标对应的数值了,为2,也就是说它是0或者1,那我们列举这两个变化的方向(找第一个维度数据变化,其他维度的数据不变的小标,比如000和100,001和101),按照一定规律找,可以列出如下:共8对

000->100 , 001->101

010->110 , 011->111

020->120 , 021->121

030->130 , 031->131

最后将以上两两变化的下标对应的数字进行sum就好了,就得到了结果。即是a[0][0][0]+a[1][0][0]=1+2=3,.......

根据维度结构得到(2,3)维的数据了。

以上,希望可以给在这一块迷惑的人一种帮助,谢谢,如果有错请指出!我一定会虚心学习,感谢!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值