千家信息网

numpy函数的axis参数实例分析

发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,本篇内容介绍了"numpy函数的axis参数实例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先
千家信息网最后更新 2025年11月11日numpy函数的axis参数实例分析

本篇内容介绍了"numpy函数的axis参数实例分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

先说结论

设 numpy.sum的输入矩阵为a. numpy.sum的返回矩阵为rst.

则矩阵a的形状为:sp=numpy.shape(a),例如sp=[m,n,p,q···]

rst的形状为将sp的第axis个元素设为1,即:

sp'=spsp'[axis]=1numpy.shape(rst)==sp' 为真.

例如:axis=2,

如果a是矩阵则:

rst的形状应该为:[m,n,1,q···]

对于rst的元素rst[m',n',1,q'···]计算方法为:

【注意第axis轴】下标只能取1.

numpy.sum(a,axis=2)的内部计算其实为:

for i in range(sp[axis]):    rst[m'][n'][1][q'][···]+=a[m'][n'][i][q'][···]

结果上发现是第axis维变成1,计算过程其实是对第axis轴进行了遍历,让sp[axis]个元素合并成一个元素。

而如果a是一个array则:

rst的形状应该为:[m,n,q,···]

注意第axis维直接不见了

numpy.sum(a,axis=2)的内部计算

for i in range(sp[axis]):    rst[m'][n'][q'][···]+=a[m'][n'][i][q'][···]

结果上发现是第axis维变没了,计算过程其实是对第axis轴进行了遍历,让sp[axis]个元素合并成一个元素。

举例说明

简单点的

import numpy as npa=np.mat([[1,2,3],[4,5,6]])

a的shape:

print (np.shape(a))

输出:(2, 3)

计算:np.sum(a,axis=0)

>>> s0=np.sum(a,axis=0)>>> s0matrix([[5, 7, 9]])

按照【先说结论】的方法:

axis=0

a的形状:(2,3)

所以rst的形状为:(1,3)

对于rst的每个元素p,q:

rst[p][q] 的 计算方法为(其中p只能等于0,q=0,1,2):

for i in range(np.shape(a)[axis]):     rst[0][q]+=a[i][q]

所以:

rst[0][0]=a[0][0]+a[1][0]=1+4=5rst[0][1]=a[0][1]+a[1][1]=2+5=7rst[0][2]=a[0][2]+a[1][2]=3+6=9

所以rst就是[[5,7,9]]

计算 numpy.sum(a,axis=1)

a=[[1,2,3],[4,5,6]

>>> s1=np.sum(a,axis=1)>>> s1matrix([[ 6],        [15]])>>> np.shape(s1)(2, 1)>>>

一样的分析方法:

按照【先说结论】的方法:

axis=1

a的形状:(2,3)

所以rst的形状为:(2,1)

对于rst的每个元素p,q:

rst[p][q] 的 计算方法为(其中p=0,1 ,而q只能为0):

for i in range(np.shape(a)[axis]):     rst[p][0]+=a[p][i]

所以:

rst[0][0]=a[0][0]+a[0][1]+a[0][2]=1+2+3=6rst[1][0]=a[1][1]+a[1][1]+a[1][2]=4+5+6=15

所以rst就是[[6],[15]].

复杂点的:

>>> b=np.array([[[1,2,3],[4,5,6],[7,8,9]]])>>> barray([[[1, 2, 3],        [4, 5, 6],        [7, 8, 9]]])>>> np.shape(b)(1, 3, 3)

b是1x3x3,是一个array.

那么np.sum(b,axis=2)等于多少呢?

标准答案:

>>> print (np.sum(b,axis=2))[[ 6 15 24]]

分析结果:

返回值应该为1x3形状的array,对于元素rst[p][q].

rst[p][q]=a[p][q][0]+a[p][q][1]+a[p][q][2]

例如rst[0][1]=a[0][1][0]+a[0][1][1]+a[0][1][2]=8+5+6=15.

而np.sum(b,axis=2)的第一行第二个元素正是 15.

关于axis默认值

一般此类针对矩阵、array的函数都有一个axis参数,并且此默认为None.当axis为None使 表示运算是遍历矩阵(array)的每一个元素的,是逐元素的计算。

补充:python中某些函数axis参数的理解

总结为一句话:

设axis=i,则numpy沿着第i个下标变化的方向进行操作。

当然,这个i是从0开始数的,作为程序员的你一定不会搞错。

axis意为"轴",它指定了函数在张量(矩阵、等等)上进行操作的方向。

例如有一个ndarray,名叫A,A.shape=(3,8,5,7)。

那么np.sum(A, axis=2)计算的结果的shape就是(3,8,7)。

假设这个shape是(3,8,7)的ndarray变量名为B,那么实际上:

B[i][j][k]=A[i][j][0][k]+A[i][j][1][k]+A[i][j][2][k]+A[i][j][3][k]+A[i][j][4][k]

以下代码你可以自己跑一下试试:

import numpy as npA=np.random.randn(3,8,5,7)print("A.shape=",A.shape)B=np.sum(A,axis=2)print("B.shape=",B.shape)

预期输出为:

A.shape= (3, 8, 5, 7)

B.shape= (3, 8, 7)

"numpy函数的axis参数实例分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

元素 形状 矩阵 方法 函数 参数 分析 结果 就是 结论 过程 输出 实例 实例分析 下标 内容 实际 方向 更多 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 阿拉德之怒后台服务器什么意思 饥荒怎么用专属服务器建新存档 广东软件开发者怎么报价 软件开发背景及意义 嵌入式软件开发转驱动 华为服务器出售给了哪个公司 南北游网络技术有限公司 飞机管理应用软件开发 量化交易软件开发费用 查询数据库是否有这条数据 电子科技大学数据库怎么样 请播放网络安全手抄报一年级 华为云鲲鹏服务器对比 服务器 ip安全策略 爱依服软件开发 环境工程的网络安全应用事例 学计算机网络技术可以兼职吗 jsp使用数据库的表格 防网络安全诈骗心得 数据库不作修改直接执行提交 软件开发要穿正装面试吗 musql数据库安装报错 大疆网络安全岗位 惠普服务器报警 湖南优老乡互联网科技 嵌入式软件开发自学路线 数据库技术与应用肖海蓉 连接sql数据库ssl安全错误 网络安全风险预测 数据库是多个结构化的数据的集合
0