如何使用NumPy处理数组翻转与变形

NumPy是Python中一个强大的库,主要用于处理大型多维数组和矩阵的数学运算。处理数组翻转与变形是NumPy的常用功能。

1.对多维数组翻转

n = np.random.randint(0,100,size=(5,6))n# 执行结果array([[ 9, 48, 20, 85, 19, 93],       [ 1, 63, 20, 25, 19, 44],       [15, 70, 12, 58,  4, 11],       [85, 51, 86, 28, 31, 27],       [64, 15, 33, 97, 59, 56]])       # 行翻转n[::-1]# 执行结果array([[64, 15, 33, 97, 59, 56],       [85, 51, 86, 28, 31, 27],       [15, 70, 12, 58,  4, 11],       [ 1, 63, 20, 25, 19, 44],       [ 9, 48, 20, 85, 19, 93]])       # 列翻转:相对于是对第二个维度做翻转n[:,::-1]# 执行结果array([[93, 19, 85, 20, 48,  9],       [44, 19, 25, 20, 63,  1],       [11,  4, 58, 12, 70, 15],       [27, 31, 28, 86, 51, 85],       [56, 59, 97, 33, 15, 64]])

2.把图片翻转

# 数据分析三剑客import numpy as npimport pandas as pdimport matplotlib.pyplot as plt# python.png# 图片:其实时数字组成的,三维数组# RGB:红Red,绿Green,蓝Blue# RGB范围:0-255# plt.imread:读取图片的数据pyimg = plt.imread("python.png")pyimg# 显示原图plt.imshow(pyimg)# 行翻转:上下翻转plt.imshow(pyimg[::-1])# 列翻转:左右翻转plt.imshow(pyimg[:,::-1])# 对颜色翻转:RGB => BGRplt.imshow(pyimg[:,:,::-1])# 模糊处理plt.imshow(pyimg[::10,::10,::-1])

3.数组变形

  • 使用reshape函数

# 创建一个20个元素的一维数组n = np.arange(1,21)n# 执行结果array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,       18, 19, 20])# 查看形状print(n.shape)# 执行结果(20,)# reshape:将数组改变形状# 将n变成4行5列的二维数组n2 = np.reshape(n,(4,5))print(n2)# 执行结果[[ 1  2  3  4  5] [ 6  7  8  9 10] [11 12 13 14 15] [16 17 18 19 20]]   print(n2.shape)# 执行结果(4, 5) # 将n2变成5行4列的二维数组# n2.reshape(5,4)print(n2.reshape((5,4)))# 执行结果[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12] [13 14 15 16] [17 18 19 20]]# 注意:变形的过程中需要保持元素个数一致# n2.reshape((5,5))   # 20个元素变形成25个则报错# 还原成一维数组print(n2.reshape(20))# 执行结果[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]print(n2.reshape(-1))# 执行结果[ 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20]# 使用-1:表示任意剩余维度长度print(n2.reshape(4,-1))# 执行结果[[ 1  2  3  4  5] [ 6  7  8  9 10] [11 12 13 14 15] [16 17 18 19 20]] print(n2.reshape(5,-1))# 执行结果[[ 1  2  3  4] [ 5  6  7  8] [ 9 10 11 12] [13 14 15 16] [17 18 19 20]] print(n2.reshape(-1,2))# 执行结果[[ 1  2] [ 3  4] [ 5  6] [ 7  8] [ 9 10] [11 12] [13 14] [15 16] [17 18] [19 20]] print(n2.reshape(-1,1))# 执行结果[[ 1] [ 2] [ 3] [ 4] [ 5] [ 6] [ 7] [ 8] [ 9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]]# 不能使用两个-1# print(n2.reshape(-1,-1))n2.reshape(2,-1,2)# 执行结果array([[[ 1,  2],        [ 3,  4],        [ 5,  6],        [ 7,  8],        [ 9, 10]],       [[11, 12],        [13, 14],        [15, 16],        [17, 18],        [19, 20]]])

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用 Wireshark 解码 H.264

H264,你不知道的小技巧-腾讯云开发者社区-腾讯云 这篇文章写的非常好 这里仅做几点补充 init.lua内容: -- Set enable_lua to false to disable Lua support. enable_lua trueif not enable_lua thenreturn end-- If false and Wireshark was start…

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 本例程运行环境为CentOS7&…

JS详解-函数柯里化

简介: 柯里化(Currying)是一种关于函数的高阶技术。柯里化是一种函数的转换,它是指将一个函数从可调用的 f(a, b, c) 转换为可调用的 f(a)(b)(c)。柯里化不会调用函数。它只是对函数进行转换。 举个例子: 已最简单的…

图像处理入门 3(how to get the pixel pitch / 如何获得单个像素的尺寸)

在这里一节里面,将记录如何获得一个相机传感器中单个像素点的尺寸,为了实现不同相机照片之间的匹配。 如果我们知道了相机传感器的尺寸和分辨率的大小,自然就可以求出单个像素的大小。 在这里插入图片描述: 如何获得相机传感器的…

golang设计模式图解——模板方法模式

设计模式 GoF提出的设计模式有23个,包括: (1)创建型(Creational)模式:如何创建对象; (2)结构型(Structural )模式:如何实现类或对象的组合; (3&a…

【JavaSE】反射

Java代码的生命周期 Java代码在计算机中经历的阶段:Source源代码阶段、Class类对象阶段、RunTime运行时阶段。 Source源代码阶段: 这个阶段是由程序员编写生成源代码,再由Javac编译器生成class文件。 Class类对象阶段:由类加载器将class文件加载到JVM内…

【网站项目】少儿编程管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

备战蓝桥杯---多路归并与归并排序刷题

话不多说,直接看题 1. 我们考虑一行一行合并,一共m次,我们合并两个并取前n小,那么我们怎么取? 我们采用分组的思想: 我们选第一列的min,然后把后面那个再纳入考虑,用优先队列实现即可。 下面…

chatGPT4无法登录

遇到问题:chatgpt网站上点击登录(log in),网站就会跳转并显示:unable to connect 解决方法:不要用亚洲节点,亚洲节点被全面封禁,在全局代理中可以换成美国的节点

synchronized到底锁住的是谁?

我们使用synchronized关键字是用来实现线程同步的,当多个线程同时去争抢同一个资源的时候在资源上边加一个synchronized关键字,能够使得线程排队去完成操作。 synchronized到底锁定的是什么资源? 修饰方法非静态方法 ,锁定的是方…

《UE5_C++多人TPS完整教程》学习笔记30 ——《P31 摄像机和弹簧臂(Camera And Spring Arm)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P31 摄像机和弹簧臂(Camera And Spring Arm)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主(…

使用git 和 github协作开发

文章目录 github浏览器汉化插件github新建仓库git安装以及ssh配置团队创建及基本命令的使用创建团队基本命令 分支管理快速切换远程仓库地址 如何使用git && github进行协作开发,包括git常见基础命令 github浏览器汉化插件 在刚开始使用github的时候&#…

ubuntu安装docker,并搭建vulfocus靶场

ubuntu安装docker,并搭建vulfocus靶场 docker是一个容器管理的软件,容器背后其实就是一个进程;类似于一个集装箱。 docker的官方下载地址:Install Docker Engine on Ubuntu | Docker Documentation(可以根据自己需要的…

【文献分享】机器学习 + 分子动力学 + 第一性原理 + 热力学性质 + 微观结构

分享一篇关于机器学习 分子动力学 第一性原理 热学性质(密度、比热容、导热率和粘度) 微观结构的文章。 感谢论文的原作者! 关键词: 1. Deep potential 2. Machine learning 3. Molecular dynamics 4. Microscopic structu…

Linux| Awk 中“next”命令奇用

简介 本文[1]介绍了在Linux中使用Awk的next命令来跳过剩余的模式和表达式,读取下一行输入的方法。 next命令 在 Awk 系列教程中,本文要讲解如何使用 next 命令。这个命令能让 Awk 跳过所有你已经设置的其他模式和表达式,直接读取下一行数据。…

【无标题】【Android】Android中Intent的用法总结

2.显示地图: Java代码 Uri uri Uri.parse(“geo:38.899533,-77.036476”); Intent it new Intent(Intent.Action_VIEW,uri); startActivity(it); 3.从google搜索内容 Java代码 Intent intent new Intent(); intent.setAction(Intent.ACTION_WEB_SEARCH); intent.pu…

【C++进阶】【STL】set和map的讲解及模拟实现

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 主厨:邪王真眼 主厨的主页:Chef‘s blog 所属专栏:c大冒险 总有光环在陨落,总有新星在闪烁 一、 关联式容器 在初阶阶…

github中git clone需要username和password问题

username:一般指你的昵称 password:一般指Creating a fine-grained personal access token 这个的获取办法如下(注意,在11步的时候,记得打开你仓库对应的一些access 权限): Note: Fine-graine…

动态规划刷题(算法竞赛、蓝桥杯)--线段(线性DP)

1、题目链接&#xff1a;P3842 [TJOI2007] 线段 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; const int N20010; int a[N][2],f[N][2]; //a[i][0]表示l[i],a[i][1]表示r[i] int dis(int a,int b){return abs(a-b); } int…