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

news2024/11/18 2:55:30

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.coloradmin.cn/o/1571159.html

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

相关文章

深入浅出 -- 系统架构之微服务中Nacos的部署

前面我们提到过,在微服务架构中,Nacos注册中心属于核心组件,通常我们会采用高性能独立服务器进行部署,下面我们一起来看看Nacos部署过程: 1、环境准备 因为Nacos是支持windows和Linux系统的,且服务器操作…

【Java SE】继承与组合

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 再谈初始化2. 再谈protected关键字2.1 子类可见性2.2 访问修饰限定符的选择 3. 继承与组合 1. 再谈初始化…

【Canvas与艺术】绘制铜质蓝底五周年(Five Years Anniversary)徽章

【关键点】 利用二次贝塞尔曲线生成环形波纹轮廓。 【成果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>铜质五周年徽…

深入浅出 -- 系统架构之微服务标准组件及职责

我们来认识一下微服务架构在Java体系中依托哪些组件实现的。 相对于单体架构的简单粗暴&#xff0c;微服务的核心是将应用打散&#xff0c;形成多个独立提供的微服务&#xff0c;虽然从管理与逻辑上更符合业务需要。但微服务架构也带来了很多急需解决的核心问题&#xff1a; 1…

[数据结构初阶]堆的应用

各位读者老爷好&#xff0c;鼠鼠又来了捏&#xff01;鼠鼠上一篇博客介绍的堆&#xff0c;那么今天来浅谈以下堆的应用&#xff0c;那么好&#xff0c;我们先来看两个问题&#xff1a; 1.如果有一组乱序的数组数据&#xff0c;希望你将这组数组的数据排成升序或降序&#xff0c…

BP算法的直观原理

这幅图非常清晰说明了BP算法的原理。 这幅图非常清楚展现了每个隐藏神经元权重关联的downstream。

vscode-task.json自定义任务

以下所有内容,参考自VScode官方文档: vscode_task-docs任务说明文档vscode_variables-reference-docs变量说明文档vscode addtional docs for task 说明: 博客内容均为个人理解,有错误请移步官方文档, 查阅文档, 纠正错误. 这篇blog记录一下个人对vscode任务(task)的使用方法 个…

【opencv】教程代码 —video(1) 对象追踪

CamShift算法、MeanShift追踪算法来追踪视频中的一个目标 camshift.cpp CamShift算法 // 引入相关的头文件 #include <iostream> // 包含C的输入输出流库 #include <opencv2/imgcodecs.hpp> // OpenCV图像编解码功能 #include <opencv2/imgproc.hpp> // Open…

Redis -- 缓存击穿问题

缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻辑过期 逻辑分析&#xff1a;假设线程1在查询缓存之后&…

Java实现一个简易的布隆过滤器Bloom Filter

目录 什么是布隆过滤器&#xff1f; 作用&#xff1a; 实现一个简单的布隆过滤器&#xff1a; 解析&#xff1a; 什么是布隆过滤器&#xff1f; 布隆过滤器&#xff08;Bloom Filter&#xff09;是一种用于快速检查一个元素是否可能存在于一个集合中的数据结构&#xff0c;它…

【移动安全】对webview漏洞的一些分析

这次分析的app如下&#xff1a; 打开发现该app发现需要登录界面&#xff1a; 拖进jadx看一下&#xff0c;先来看一下AndroidManifest.xml文件 发现有两个类是导出&#xff0c;再来分析这两个类 这个RegistrationWebView类利用webview.loadUrl进行加载网页 java public class…

代码随想录第三十一天 | 贪心算法P1 | ● 理论基础 ● 455. ● 376. ● 53.

理论基础 题目分类 一般解题步骤 贪心算法一般分为如下四步&#xff1a; 将问题分解为若干个子问题找出适合的贪心策略求解每一个子问题的最优解将局部最优解堆叠成全局最优解 这个四步其实过于理论化了&#xff0c;我们平时在做贪心类的题目 很难去按照这四步去思考&…

Ps:合并到 HDR Pro

Ps菜单&#xff1a;文件/自动/合并到 HDR Pro Automate/Merge to HDR Pro 合并到 HDR Pro Merge to HDR Pro命令可以将同一场景的具有不同曝光度的多个图像合并起来&#xff0c;从而捕获单个 HDR 图像中的全部动态范围。 合并到 HDR Pro 命令分两步进行。 首先&#xff0c;需要…

什么是NLP?

&#x1f916;NLP是什么&#xff1f;&#x1f916; NLP&#xff08;Natural Language Processing&#xff09;&#xff0c;全称自然语言处理&#xff0c;是人工智能不可或缺的一环&#xff0c;它搭建了人与计算机之间沟通的桥梁&#x1f309;。 &#x1f6e0;️NLP强大功能一…

Day:003 | Python爬虫:高效数据抓取的编程技术(爬虫基础)

urllib发送get请求 在目前网络获取数据的方式有多种方式&#xff1a;GET方式大部分被传输到浏览器的html&#xff0c;images, js,css, … 都是通过GET 方法发出请求的。它是获取数据的主要方法 例如&#xff1a;www.baidu.com 搜索 Get请求的参数都是在Url中体现的,如果有中…

客户不报预算咋办?

谈崩了10个单子&#xff0c;我才领悟到谈判的精髓。创业一年了&#xff0c;去年累计服务客户30。说起来是市场好也罢&#xff0c;凑巧也罢反正没怎么费劲就谈下了不少客户&#xff0c;也做到了月入5位数。 今年一开年因为有老客户撑着&#xff0c;我也没太认真拓展新客户&#…

Mysql数据库getshell方法

今天摸鱼时候&#xff0c;突然有人问我不同的数据库getshell的方式&#xff0c;一时间我想到了mysql还有redis未授权访问到getshell的方式&#xff0c;但是仅仅第一时间只想到了这两种&#xff0c;我有查了查资料&#xff0c;找到了上面两种数据库getshell的补充&#xff0c;以…

Android源码笔记-输入事件(二)

这一节主要了解输入事件的获取&#xff0c;InputReaderThread继承自C的Thread类&#xff0c;Thread类封装了pthread线程工具&#xff0c;提供了与Java层Thread类相似的API。C的Thread类提供了一个名为threadLoop()的纯虚函数&#xff0c;当线程开始运行后&#xff0c;将会在内建…

【Linux】软硬链接 / 动静态库

目录 一. 软硬链接1. 硬链接2. 软链接3. unlink4. 目录的硬链接 二. 动静态库1.1 静态库制作1.2 静态库使用2.1 动态库制作2.2 动态库使用3. 动态链接原理 一. 软硬链接 1. 硬链接 硬链接(hard link) 可以将它理解为原始文件的别名, 和原始文件使用相同的 inode 编号和 data …

GraphSage

背景 大型图中节点的低维嵌入在各种预测任务中非常有用。GraphSage是一种通用的归纳框架&#xff0c;它利用节点特征信息&#xff08;例如&#xff0c;文本属性&#xff09;有效地为以前看不见的数据生成节点嵌入。相比于对每个节点训练单独的嵌入&#xff0c;GraphSage学习了一…