网站首页 > 资源文章 正文
1 numpy基础之swapaxes
ndarray数组元素都可以用轴的索引进行唯一标识。
numpy中ndarray.transpose()的入参axes轴数量需要ndarray.ndim个(轴数量个,有多少个轴就要送多少个),而swapaxes()只需要2个。即,transpose()可以一次交换全部轴,而swapaxes()一次只能交换2个轴。
用法
ndarray.swapaxes(axis1, axis2)
描述
ndarray.swapaxes()将ndarray数组元素在两个轴上的索引进行交换。
入参
axis1:要交换的第1个轴的索引;
axis2:要交换的第2个轴的索引;
注意:轴的索引从0开始,比如,array([[0, 1, 2]])有2个轴,shape为(1,3),轴索引为(0,1)。
ndarray.swapaxes(m,n)等价于ndarray.swapaxes(n,m),即交换的两个轴只要索引位置一样,两个轴按不同顺序交换,其结果是一致的。
1.1 一维数组调用swapaxes
描述
因为ndarray.swapaxes()需要2个轴作为入参,所以,一维数组不可调用swapaxes()
示例
>>> import numpy as np
# 创建1维数组
>>> ar1=np.arange(3)
>>> ar1
array([0, 1, 2])
# 一维数组调用swapaxes()报错
>>> ar1.swapaxes(0,1)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
ar1.swapaxes(0,1)
# 轴1(axis 1)即axis2的入参超出维度为1的数组的范围
numpy.exceptions.AxisError: axis2: axis 1 is out of bounds for array of dimension 1
>>> ar1.swapaxes()
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
ar1.swapaxes()
TypeError: swapaxes() takes exactly 2 arguments (0 given)
1.2 二维数组调用swapaxes
描述
swapaxes()将元素在两个轴上的索引进行交换。
比如,array([[0, 1, 2]]),shape为(1,3),轴索引为(0,1)。
元素3的索引为[0,2],其中0表示在0轴上的索引为0,而2表示在1轴上的索引为2。
转换后元素3的索引为[2,0],2表示在0轴上的索引,0表示在1轴上的索引。
即元素通过swapaxes(0,1)转换后,0轴上的索引由0变为1轴上的索引2,而1轴上的索引由2变为0轴上的索引0.
示例
>>> import numpy as np
# 创建2维数组,1行3列
>>> ar2=np.arange(3).reshape((1,3))
>>> ar2
array([[0, 1, 2]])
>>> ar2.shape
(1, 3)
>>> ar2.ndim
2
# swapaxes(0,1)将0轴和1轴上的元素进行索引互换。
>>> ar2.swapaxes(0,1)
array([[0],
[1],
[2]])
>>> ar2
array([[0, 1, 2]])
# swapaxes(0,1)等价于swapaxes(1,0)
>>> ar2.swapaxes(1,0)
array([[0],
[1],
[2]])
1.3 三维数组调用swapaxes
描述
swapaxes()将元素在两个轴上的索引进行交换。
比如,ar3=np.arange(16).reshape(2,2,4),shape为(2,2,4),其中元素10的索引为[1,0,2],
通过ar3.swapaxes(0,2)将0轴和2轴索引转换后为[2,0,1]。
并且,ar3.swapaxes(2,0)等价于ar3.swapaxes(0,2)。
示例
>>> import numpy as np
# 创建3维数组
>>> ar3=np.arange(16).reshape(2,2,4)
>>> ar3
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7]],
[[ 8, 9, 10, 11],
[12, 13, 14, 15]]])
>>> ar3.shape
(2, 2, 4)
>>> ar3_sw=ar3.swapaxes(0,2)
>>> ar3_sw
array([[[ 0, 8],
[ 4, 12]],
[[ 1, 9],
[ 5, 13]],
[[ 2, 10],
[ 6, 14]],
[[ 3, 11],
[ 7, 15]]])
# 元素10,通过swapaxes(0,2)
# 将0轴索引1转为2轴索引2
# 将2轴索引2转为0轴索引0,得[2,0,1]
>>> ar3[1,0,2],ar3_sw[2,0,1]
(10, 10)
>>> ar3[1,1,0],ar3_sw[0,1,1]
(12, 12)
# ar3.swapaxes(2,0)等价于ar3.swapaxes(0,2)
>>> ar3.swapaxes(2,0)==ar3.swapaxes(0,2)
array([[[ True, True],
[ True, True]],
[[ True, True],
[ True, True]],
[[ True, True],
[ True, True]],
[[ True, True],
[ True, True]]])
2 END
本文首发微信公众号:梯阅线条,
更多内容参考python知识分享或软件测试开发目录。
猜你喜欢
- 2025-04-24 正在投标吉林医药学院学生公寓洗衣机服务项目竞争性磋商公告
- 2025-04-24 招标投标2025年6所幼儿园食堂大宗食品食材配送服务公开招标公告
- 2025-04-24 招标推湖南省湘潭县人民医院钬激光维保服务项目竞争性磋商邀
- 2025-04-24 2025招标保定学院第二学生食堂委托经营服务项目招标公告
- 2025-04-24 关于投标山西省杨树林局2025年国土绿化监理服务竞争性磋商公告
- 2025-04-24 2025投标陕鼓实业安保消防中控服务外包项目公开招标公告
- 2025-04-24 标讯招标郧西县锂离子产业园项目二期全过程工程造价咨询服务公告
- 2025-04-24 最新公告昆明醋酸纤维有限公司2025-2028年防腐工程服务入围项目
- 2025-04-24 2025招标苏美达国际大厦食堂餐饮外包服务招标公告
- 2025-04-24 AXESS Networks和Es'hailSat在卡塔尔联手提供远程端口和VSAT服务
你 发表评论:
欢迎- 04-26EmuELEC 模拟器系统高度定制方案
- 04-26JavaCPP快速入门(官方demo增强版)
- 04-26kubernetesv1.16系列——搞定Traefik2.1的使用
- 04-26使用docker-compose安装harbor
- 04-26PortMapper被滥用进行大规模DDoS攻击
- 04-26攻击和审计Docker容器03
- 04-26nfs-server安装和端挂盘
- 04-26流行DNS服务器软件BIND曝严重DoS漏洞
- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)