Numpy中关于np.rollaxis和np.swapaxes的理解

如何理解numpy.rollaxis及numpy.swapaxes 如何理解numpy.rollaxis??? 阅读详情
numpy.rollaxis(arr, axis, start)
  • arr:数组
  • axis:要滚动的轴,其它轴的相对位置不变
  • start:默认为零,要滚动到目标位置。

举例说明:

>>> a = np.ones((3,4,5,6))
>>> np.rollaxis(a, 3, 1).shape       #把数组a的3轴滚动到1轴位置,其他轴相对位置相对不变
(3, 6, 4, 5)
>>> np.rollaxis(a, 2).shape          #目标位置可以缺省,默认为0,这里的np.rollaxis(a,2)等价于np.rollaxis(a,2,0)
(5, 3, 4, 6)
>>> np.rollaxis(a, 1, 4).shape
(3, 5, 6, 4)

详细一点的例子是:

In:

a = np.arange(12).reshape((3,2,2))

print("原数组:\n")
print(a)
print(np.where(a==9))
print(a.shape)
print()


#将2轴滚动到0轴
print("执行rollaxis函数后:")
b = np.rollaxis(a,2,0)
print(b)
print(np.where(b==9))
print(b.shape)

Out:

原数组:
[[[ 0  1]
  [ 2  3]]
 [[ 4  5]
  [ 6  7]]
 [[ 8  9]
  [10 11]]]
(array([2], dtype=int64), array([0], dtype=int64), array([1], dtype=int64))    #即元素9所在的位置下标为(2,0,1)
原数组形状: (3, 2, 2)


执行rollaxis函数后:
[[[ 0  2]
  [ 4  6]
  [ 8 10]]
 [[ 1  3]
  [ 5  7]
  [ 9 11]]]
(array([1], dtype=int64), array([2], dtype=int64), array([0], dtype=int64))    #轴滚动之后元素9所在的位置下标为(1,2,0)
轴滚动之后的数组形状:  (2, 3, 2)

可以看出,元素的位置变化与轴变化一致。其实简单来说,轴滚动并不改变元素的大小,只是元素的位置下标因为轴的变化而变化了,相当于三维空间中旋转x,y,z轴,原来在(x,y)平面的点现在可能变成在(y,z)平面上的点了,但是大小并没变,只是相对坐标位置变化了而已。

 

numpy.swapaxes(arr, axis1, axis2)
  • arr:输入的数组
  • axis1:对应第一个轴的整数
  • axis2:对应第二个轴的整数

swapaxes函数的功能很简单,作用是直接交换两个轴,请看下面的例子。

>>> a = np.ones((2,3,4,5,6))
>>> np.swapaxes(a, 3, 1).shape
(2, 5, 4, 3, 6)
>>> np.swapaxes(a, 2,0).shape
(4, 3, 2, 5, 6)
>>> np.swapaxes(a, 4, 2).shape
(2, 3, 6, 5, 4)

详细的例子:

In:

a = np.arange(12).reshape((3,2,2))

print("原数组:\n")
print(a)
print(np.where(a==9))
print(a.shape)
print()


#将2轴和0轴直接交换
print("执行swapaxes函数后:")
b = np.swapaxes(a,2,0)
print(b)
print(np.where(b==9))
print(b.shape)

Out:

原数组:
[[[ 0  1]
  [ 2  3]]
 [[ 4  5]
  [ 6  7]]
 [[ 8  9]
  [10 11]]]
(array([2], dtype=int64), array([0], dtype=int64), array([1], dtype=int64))     #元素9所在原始数组中的位置下标为(2,0,1)
原数组形状: (3, 2, 2)
执行rollaxis函数后:
[[[ 0  4  8]
  [ 2  6 10]]
 [[ 1  5  9]
  [ 3  7 11]]]
(array([1], dtype=int64), array([0], dtype=int64), array([2], dtype=int64))     #元素9在新数组中的位置下标为(1,0,2)
新数组形状: (2, 2, 3)

 

 

用Stata复现经典文献:上市公司全要素生产率(TFP)计算全流程(含LP/OP代码解读) 本文提供了使用Stata软件复现上市公司全要素生产率(TFP)计算的完整实战指南。重点解读了主流的Levinsohn-Petrin(LP)和Olley-Pakes(OP)半参数估计方法,通过详细的数据清洗、变量构建与价格平减步骤,手把手演示了如何准确测算TFP,并强调了LP方法在处理中国上市公司数据时的稳定性和适用性。 阅读详情

相关推荐

Android13 SurfaceFlinger启动流程分析

在Android13版本中,SurfaceFlinger是由Android.bp去启动init.rc文件,然后再解析文件去加载SurfaceFlinger。上面方法主要处理如下:1、调用surfaceflinger的createSurfaceFlinger方法,实例化surfaceflinger。2、调用flinger(surfaceflinger)的init()方法,在客户端连接之前进行初始化。

liuning1985622的博客 1919

NumPy转置原理与高维数组axis控制实战指南

NumPy转置不是简单的行列交换,而是基于内存strides的逻辑视图重构。其核心在于理解C/F-order布局、axis索引映射规则及view/copy语义差异。掌握`np.transpose()`的axes参数机制,可精准实现如`(N,C,H,W)`到`(N,H,W,C)`的通道维重排;结合`np.moveaxis()`能提升多维操作可读性与鲁棒性。该技术广泛应用于深度学习数据预处理、信号处理坐标变换及跨库数据转换(如SymPy→NumPy)。本文聚焦工业级实践痛点,涵盖NumPy 2.x兼容性避坑、性

xpp02的专栏 392

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理

软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提...

weixin_52127098的博客 9004

【NumPy】深入解析numpy中的swapaxes方法

方法是NumPy库中一个功能强大且实用的工具,它能够帮助我们高效地交换数组中的轴,满足不同的数据处理需求。我坚信知识的力量,希望通过我的分享,能够帮助更多的人掌握这些技术,并在实际项目中发挥作用。它的简单直观性使得我们可以轻松地交换数组中的轴,而无需关心其他轴的顺序。它接受一个数组和两个轴的索引作为参数,然后创建一个新的数组视图,其中这两个轴的位置被互换。因此,我们应该保持对NumPy库的关注和学习,以便及时了解和掌握最新的技术和工具。方法则侧重于将指定的轴滚动到数组的前端或后端,而保持其他轴的顺序不变。

2402_83361138的博客 2689

【日常小结】项目Modbus RTU 协议

Modbus RTU(远程终端) 协议 一、前言 最近因为码跺宽度测量项目推广升级,更换了摄像头(换成了基恩士摄像头)和光栅(换成了施莱格05LCM系列光栅),导致原来的程序用不了了,然而这个软件升级的任务落到了我身上,作为机械非科班出身的我要学习TCP和Modbus RTU通信协议,也算是自我突破了。本文只对Modbus/RTU/HEX 进行简单的小结。 二、Modbus Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻

weixin_39681471的博客 832

STM32串口接收避坑指南:为什么你的USART_IT_IDLE中断不触发?附完整调试流程

本文深入解析STM32串口接收中断机制,特别是USART_IT_IDLE中断不触发的常见原因及解决方案。通过详细分析中断标志清除顺序、波特率配置、硬件连接等关键因素,并提供完整的调试流程和代码示例,帮助开发者快速定位并解决串口通信问题。

weixin_42519985的博客 348

互换数组的两个轴 numpy.swapaxes()

期待大家提出宝贵改进建议,互相交流,收获更大。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:https://liujingwei.cn。print("【执行】np.swapaxes(arr1, 0, 1)")期待大家提出宝贵建议,互相交流,收获更大,助教:whs。print("【显示】arr1:\n",arr1)A选项:[[11,12],[21,22]]B选项:[[11,21],[12,22]]C选项:[[12,22],[11,21]]

liujingwei8610的专栏 348

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2616

numpy中transpose和swapaxes函数讲解

transpose和swapaxes函数讲解 transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数。 我们看如下一个numpy的数组: `arr=np.arange(16).reshape((2,2,4)) arr= array([[[ 0, 1, 2, 3], [ 4, 5, 6, 7]], [[ 8

qq1483661204的博客 5万+

3DMax高效建模与人工智能:一场颠覆传统创作的效率革命

AI与3DMax的结合,不仅是工具效率的升级,更是一场创作范式的革命。从“手动雕刻”到“智能共生”,设计师的角色正从执行者转向决策者。正如网友所言:“AI不是替代人类,而是赋予凡人以神笔。”在这场变革中,唯有拥抱技术、深耕创意,方能在数字艺术的浪潮中立于潮头。参考文献与工具推荐技术原理:火星时代资讯《人工智能和三维建模》工具实测:哔哩哔哩《tyDiffusion 3dsMax应用》9、Tripo AI官网教育案例:原创论文《人工智能技术介入三维动画课程建设》

m0_46478534的博客 3016

从光耦隔离到稳定驱动:信捷伺服与STM32的硬件设计陷阱与救赎

本文深入探讨了信捷伺服驱动器与STM32微控制器配合时的硬件设计关键问题,包括光耦隔离电路选型、电源电压选择、拨码开关设置等核心环节。针对伺服驱动器的稳定驱动需求,提供了从电路设计到抗干扰策略的完整解决方案,帮助工程师规避常见陷阱,提升工业控制系统的可靠性。

gold8的专栏 312

【NumPy】transpose() 和 swapaxes() 函数:转置数组

transpose() 和 swapaxes() 都是 NumPy 中用于转置数组的函数,但它们的用途和灵活性有所不同。使用 np.transpose() 时,可以自由调整任意维度的顺序,适合 复杂的维度重排。使用 np.swapaxes() 时,主要是交换两个特定的轴,简单直接,适合 轴之间的交换操作。

彬彬侠的博客 1113

手把手教你构建轻量级CLIP模型:从理论到实践

本文手把手教你从零构建一个轻量级CLIP模型,深入解析其核心原理——对比学习,并提供完整的代码实践。通过精简的模型架构、数据准备和训练循环实现,帮助读者彻底理解多模态模型如何让图像与文本在共享空间中对齐,为学习更复杂的AI模型打下坚实基础。

weixin_29100927的博客 326

numpy.rollaxis()详解

numpy.rollaxis(a, axis, start=0) 向后滚动指定的轴,直到它位于给定位置。 参数: a:ndarray 输入数组。 axis:int 轴向后滚动。其他轴的位置相对于彼此不改变。 start:int,可选 轴被滚动,直到它位于此位置之前。默认值为0,导致“完成”滚动。 返回: res:ndarray 对于Numpy> = 1.10,始终返回a的视图...

PMPWDF的博客 4372

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

解析多层list_numpy的rollaxis和swapaxes全面解析

最近发现numpy库对多维数组的数据处理相当方便,在回顾之余发现numpy中的rollaxis和swapaxes两个方法对数据处理的原理比较难理解。借此记录一下个人的理解思路。一、如何理解多维数组和轴1、可以把数据理解成list的延伸import numpy as np # 一维数组,一层list a = np.array([1,2,3]) print('一维数组:', a, sep='n') #...

weixin_39609354的博客 117

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

numpy 中强大的 transpose() 、rollaxis()、swapaxes()

numpy 中强大的 transpose() 、rollaxis()、swapaxes(),极其方便的多维数组的维度变换

marksim的博客 1685

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python学习笔记第三十九天(Numpy 数组操作(上))

Python学习笔记第三十九天讲解修改数组形状、翻转数组、修改数组维度的用法。

qq_54129105的博客 513

总结了 11 种 Numpy 的高级操作!

熬夜整理了11种Numpy的高级操作,每一种都有参数解释与小例子辅助说明,希望对你有所帮助,看完记得点个赞收藏起呀哇~01、数组上的迭代NumPy 包含一个迭代器对象numpy.nditer。它是一个有效的多维迭代器对象,可以用于在数组上进行迭代。数组的每个元素可使用 Python 的标准Iterator接口来访问。importnumpyasnp a=np.arange(0,60,5...

weixin_43373042的博客 195

数据分析中的数组转置操作

初始轴顺序:轴0(2), 轴1(3), 轴2(4), 轴3(5), 轴4(6)新轴顺序:轴1(3), 轴0(2), 轴2(4), 轴3(5), 轴4(6)新轴顺序:轴3(5), 轴0(2), 轴1(3), 轴2(4), 轴4(6)新轴顺序:轴0(2), 轴3(5), 轴1(3), 轴2(4), 轴4(6)新轴顺序:轴0(2), 轴2(4), 轴3(5), 轴1(3), 轴4(6)新轴顺序:轴1(3), 轴2(4), 轴0(2)新轴顺序:轴2(4), 轴0(2), 轴1(3)

q20051937的博客 819

Numpy总结

文章主要通过案例来理解广播机制、结合相应函数(rollaxis、swapaxes)来理解Axis、总结了相关函数axis=1的操作规律。

星航夜空的帆舟 700

NumPy 数组操作例程全指南:重塑、转置、拼接与分割的完整参考

本文是 NumPy 数组操作(Array manipulation)例程的完整技术指南,对应仓库文档 [doc/source/reference/routines.array-manipulation.rst](https://link.gitcode.com/i/9fcd73b4ba533fdcab4fc0274901d287) 中收录的全部 API 分类。无论是改变数组形状与维度、转置与轴重排

gitblog_00284的博客 427

NumPy 例程总览指南:按主题分类的函数索引与源码级使用解析

本文基于 NumPy 官方文档 `doc/source/reference/routines.rst` 及其下属 26 个分类子文档,系统梳理 NumPy Python API 中全部"按主题分组"的函数例程(Routines and objects by topic):从数组创建、数组操作、位运算、字符串与日期时间,到数学函数、线性代数、FFT、多项式、统计、集合、I/O 与测试工具。读完本文,

gitblog_00900的博客 791

Dask Array 与 NumPy 函数兼容性全解析:dask.array 的 API 映射表、实现类型与参数差异

Dask 的 `dask.array` 以分块(chunked)数组的形式复刻了 NumPy 的核心 API,让面向 `numpy` 编写的科学计算代码可以直接迁移到分布式/并行环境。本文以仓库官方文档 [docs/source/array-numpy-compatibility.rst](https://link.gitcode.com/i/827844c7ffde1919101b7b0eea1

gitblog_00352的博客 233

NumPy 1.10.0 版本发布说明深度解读:新特性、兼容性变更与弃用指南

> 本文以 NumPy 1.10.0 官方发布说明([doc/source/release/1.10.0-notes.rst](https://link.gitcode.com/i/e0b06352ba85ff1b4c2cebdfec98bb79))为主体,结合当前仓库源码,逐项解读该版本引入的矩阵链乘法优化、`np.stack`、`broadcast_to`、`nanprod`、`@` 运算符支

gitblog_00610的博客 431

scrcpy 手机投屏与直控:免装App免Root,1秒出画面的远程操控方案

手机上回消息、拖文件,总得举着手机操作?scrcpy 是开源的 Android 投屏直控工具:USB 或 Wi-Fi 一连,手机画面约 1 秒内出现在电脑窗口,键鼠直接操控,免装 App、免 Root、无需账号和网络,整个流程三分钟走完。 [![scrcpy 投屏效果:Debian 桌面窗口中显示并直控 Android 手机界面](https://raw.gitcode.com/GitHub_T

gitblog_00595的博客 69

Numpy库之swapaxes(a,x,y)方法理解

ndarray对象的操作函数之np.swapaxes(a,x,y) 等价于 a.swapaxes(x,y) import numpy as np a = np.arange(24).reshape((2,3,4)) 生成如下数组: 方法理解: a.swapaxes(x,y),是将n维数组中两个维度进行调换,其中x,y的值为a.shape值(2,3,4)元组中的索引值(下标)。 ...

weixin_45932759的博客 7087
上一篇: Numpy中数组的广播机制总结
下一篇: Numpy中reshape和resize的区别
daimashiren
博客等级 码龄9年 97粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

daimashiren

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

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

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

打赏作者

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

抵扣说明:

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

余额充值