numpy中轴的理解与计算

对数组的轴和轴计算的理解

在学习numpy的时候,最难理解的就是轴的概念,我们知道坐标系中有轴的概念,那么两个轴是否有关联呢?为了便于理解,特写此博客进行梳理。

理解轴

(1)二维数组

2维数组,axis=0,纵轴;axis=1,横轴;如果是3维及以上的多维数组,先最外层,然后一层一层按照先横轴再纵轴的逻辑进行匹配轴。

import numpy as np
a = np.array([[1,2,3,4,5,6,7,8]]).reshape(2,4)
print(a)
[[1 2 3 4]
 [5 6 7 8]]

在这里插入图片描述

axis=0代表往跨行(down),而axis=1代表跨列(across)。

换句话说:

使用0值表示沿着每一列按行标签索引值向下执行方法
使用1值表示沿着每一行按列标签向右执行对应的方法

记住,Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。

# 2维数组的sum方法
import numpy as np
arr1 = np.array([1,2,3,4,5,6]).reshape(2,3)
print(arr1)
print(arr1.shape)

print()
print('axis = 0 代表跨行,按列进行运算:')
print(arr1.sum(axis=0))   # axis = 0 代表跨行,按列进行运算
print(arr1.sum(axis=0).shape)

print()
print('axis =1  代表跨列,按行进行运算:')
print(arr1.sum(axis=1))   # axis =1  代表跨列,按行进行运算
print(arr1.sum(axis=1).shape)

结果为:

[[1 2 3]
 [4 5 6]]
(2, 3)

axis = 0 代表跨行,按列进行运算:
[5 7 9]
(3,)

axis =1  代表跨列,按行进行运算:
[ 6 15]
(2,)

(2)三维数组

import numpy
b = numpy.arange(24).reshape(2, 3, 4)
print(b.ndim)
print(b.shape)
print(b)

结果为:

3
(2, 3, 4)
[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]

理解:
在这里插入图片描述
拆分详解:

在这里插入图片描述

计算轴

以sum方法为例,会发现以哪一个轴为参数计算,该轴变为0(降一个维度)
如sum应用在2维数组,axis=0,以横轴为参数计算和,则是纵向相加(逐行相加);axis=1,以纵轴为参数计算和,则是横向相加(逐列相加)。

三维数组代码展示:

import numpy as np

arr2 = np.arange(24).reshape(2,3,4)
print(arr2)
print(arr2.shape)

print()
print('进行 axis = 0轴相加:')
print(arr2.sum(axis=0))
print(arr2.sum(axis=0).shape)

print()
print('进行 axis = 1轴相加:')
print(arr2.sum(axis=1))
print(arr2.sum(axis=1).shape)

print()
print('进行 axis = 2轴相加:')
print(arr2.sum(axis=2))
print(arr2.sum(axis=2).shape)

结果为:

[[[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11]]

 [[12 13 14 15]
  [16 17 18 19]
  [20 21 22 23]]]
(2, 3, 4)

进行 axis = 0轴相加:
[[12 14 16 18]
 [20 22 24 26]
 [28 30 32 34]]
(3, 4)

进行 axis = 1轴相加:
[[12 15 18 21]
 [48 51 54 57]]
(2, 4)

进行 axis = 2轴相加:
[[ 6 22 38]
 [54 70 86]]
(2, 3)

解析:
(1)进行 axis = 0轴相加:

[[12 14 16 18]
[20 22 24 26]
[28 30 32 34]]

在这里插入图片描述
注意此时结果的形状为 shape=(3,4), axis = 0 轴变为0,降了一个维度。

(2)进行 axis = 1轴相加:

[[12 15 18 21]
[48 51 54 57]]
在这里插入图片描述

注意此时结果的形状为 shape=(2,4), axis = 1 轴变为0,降了一个维度。

(3)进行 axis = 2轴相加:

[[ 6 22 38]
[54 70 86]]

在这里插入图片描述

注意此时结果的形状为 shape=(2,3), axis = 2 轴变为0,降了一个维度。

~

附网上找到的一张图片:
在这里插入图片描述

参考博客:
https://blog.csdn.net/qq_40720983/article/details/82767392

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何为xl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值