numpy知识库:深入理解numpy.resize函数和数组的resize方法

前言

numpy中的resize函数顾名思义,可以用于调整数组的大小。但具体如何调整?数组形状变了,意味着数组中的元素个数发生了变化(增加或减少),如何确定resize后的新数组中每个元素的数值呢?本次博文就来探讨并试图回答这个问题,感兴趣的小伙伴可以继续阅读下去,希望对您有所启示~

numpy中的resize函数背后的机理

纯粹的文字说明不太直观,小编更倾向用代码工具进行直观展示。代码如下

import numpy as np
import cv2img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
for i in range(256):if i % 2 == 0: # 如果第i行是偶数行,则该行所有值设为255, 即全白,否则全黑;i从0开始img1[i, :] = 255
cv2.imshow('img1', img1)
cv2.waitKey(0) # 显示图像 延迟5秒退出窗口

结果如下:
在这里插入图片描述
可以看出,利用代码生成的图片是黑白相间分布的灰度图像,图像大小为256×256。
如果此时用numpy中的resize函数将上图调整成大小为256×512的新图像,那么新图像会长成什么样呢?还是黑白相间分布吗?

代码如下:

import numpy as np
import cv2img1 = np.zeros((256, 256), dtype=np.uint8) # 创建一个大小为256*256的全黑图像
for i in range(256):if i % 2 == 0: # 如果第i行是偶数行,则该行所有值设为255, 即全白,否则全黑;i从0开始img1 = np.resize(img1, (256, 512)) # 调整图像大小cv2.imshow('img1', img1)
cv2.waitKey(0) # 显示图像 延迟5秒退出窗口

运行结果如下:
在这里插入图片描述

结果竟然是左白右黑(有没有出乎你的意料呢?有的话可以点个赞支持一下~)

背后的机理解读

利用numpy的resize函数从黑白相间分布的大小为256×256的原图调整为256×512的新图像后,竟然呈现出左白右黑的现象。咋一看,似乎摸不着头脑,其实背后的机理很简单。
机理:当新图像的大小确定后,就把原图的像素从左到右从上到下【依次填入】新图像。由于原图第一行全白,第二行全黑,而第一行像素和第二行像素之和恰好等于新图像第一行像素之和。以此类推,便会出现左白右黑的结果。

numpy的resize函数 vs numpy数组的resize方法

提到numpy的resize函数,就自然而然地会想到numpy数组的resize方法。同样是调整数组/图像的大小,两者的使用有何区别呢?还是那句话:show you the code!

区别一:numpy数组的resize方法是in-place操作

# numpy数组的resize方法
img1.resize((256, 512))  # numpy数组的resize方法是in-place操作,即直接在原数组/图像上修改,而numpy的resize函数需要返回一个新数组

区别二:numpy数组的resize方法在新数组大小>原数组时,直接填充0,并不继续填充原数组数值

# numpy数组的resize方法
img1.resize((256, 512))  # numpy数组的resize方法是in-place操作,即直接在原数组/图像上修改,而numpy的resize函数需要返回一个新数组
cv2.imshow('img1', img1)
cv2.waitKey(0) # 显示图像 延迟5秒退出窗口

结果如下:
在这里插入图片描述
容易发现,numpy数组的resize方法在填充完一遍原数据的数值后(上图的上半部分),剩余的数值直接填充0(上图的下半部分,即全黑)

如果本博文对你有所帮助,可以点个赞/收藏支持一下,如果能够持续关注,小编感激不尽~
小编会坚持创作,持续优化博文质量,以小见大,给读者带来更好地阅读体验~

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

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

相关文章

electron调用dll问题总汇

通过一天的调试安装,electron调用dll成功,先列出当前的环境:node版本: 18.12.0,32位的(因为dll为32位的) VS2019 python node-gyp 1、首先要查看报错原因,通常在某一行会有提示,常…

什么是基线和 x-height

前言 在排版和字体设计领域,了解和掌握基线(baseline)和 x 高度(x-height)的概念是至关重要的。这两个术语描述了字母在视觉上是如何对齐的,以及它们相对于其他字母的大小。通过对这两个概念的深入了解&…

elk+filebeat+kafka集群部署

EFK实验架构图: 实现高并发,无需指定logstash 3台esfile,3台kafka 20.0.0.10 esfile 20.0.0.20 esfile 20.0.0.30 esfile 20.0.0.11 kafka 20.0.0.12 kafka 20.0.0.13 kafka在es1主机上解压filebeat cd filebeat 安装nginx服务 vim /usr/loc…

无人机助力电力设备螺母缺销智能检测识别,python基于YOLOv7开发构建电力设备螺母缺销高分辨率图像小目标检测系统

传统作业场景下电力设备的运维和维护都是人工来完成的,随着现代技术科技手段的不断发展,基于无人机航拍飞行的自动智能化电力设备问题检测成为了一种可行的手段,本文的核心内容就是基于YOLOv7来开发构建电力设备螺母缺销检测识别系统&#xf…

软件设计师——计算机网络(一)

📑前言 本文主要是【计算机网络】——软件设计师计算机网络的题目,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 &#x1f304…

su与 su -导致邮箱收件异常

先贴代码 rootlocalhost postfix]# su - mail-user1 Last login: Thu Nov 30 17:07:14 CST 2023 on pts/0 [mail-user1localhost ~]$ mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/mail-user1": 3 messages > 1 root …

Arduino、ESP8266、HTML相关知识点记录

C代码 const char *ssid "********"; // 这里定义将要建立的WiFi名称。 const char *password "********"; // 这里定义将要建立的WiFi密码。 多WiFi连接: wifiMulti.addAP("**…

TypeScript 中声明类型的方法

1、使用:运算符来为变量和函数参数指定类型。例如: let num: number 5; function add(a: number, b: number): number {return a b; }2、使用 type 关键字来声明自定义类型别名。例如: type Point {x: number;y: number; };3、使用 interface 关键字…

element Tree 树形控件 高亮默认

需求&#xff1a; 1. 进入页面&#xff0c;默认选中需要的节点&#xff0c;并展开做出高亮效果&#xff0c;其他时候点击箭头图标才展开。 2. input框搜索树节点 代码&#xff1a; <el-asideclass"aside flex-shrink-0 bg-white"style"width:300px;height…

mockito加junit gd 单元测试 笔记

目录 一、简介1.1 单元测试的特点1.2 mock类框架使用场景1.3 常用mock类框架1.3.1 mockito1.3.2 easymock1.3.3 powermock1.3.4 JMockit 二、mockito的单独使用2.1 mock对象与spy对象2.2 初始化mock/spy对象的方式2.3 参数匹配2.4 方法插桩2.5 InjectMocks注解的使用断言工具 三…

SQL 金额数值转换成中文大写

需求&#xff1a;将金额转换成中文大写格式填入单据合计行&#xff1a; _佰_拾_万_仟_佰_拾_元_角_分 1234567.89 壹佰贰拾叁万肆仟伍佰陆拾柒元捌角玖分 1.函数转换 drop function n2C;CREATE FUNCTION n2C (num numeric(14,2)) RETURNS VARCHAR(20) AS BEGIN …

Java基础- 自定义类加载器

自定义类加载器 在 Java 中实现自定义类加载器通常涉及继承 ClassLoader 类并重写其 findClass 方法。自定义类加载器允许我们从非标准来源&#xff08;如网络、加密文件或其他媒体&#xff09;加载类。下面是实现自定义类加载器的基本步骤&#xff1a; 1. 继承 ClassLoader …

智跃人力资源管理系统 SQL注入漏洞复现

0x01 产品简介 智跃人力资源管理系统是基于B/S网页端广域网平台&#xff0c;一套考勤系统即可对全国各地多个分公司进行统一管控&#xff0c;成本更低。信息共享更快。跨平台&#xff0c;跨电子设备 0x02 漏洞概述 智跃人力资源管理系统GenerateEntityFromTable.aspx接口处存在…

SQL Sever 基础知识 - 数据查询

SQL Sever 基础知识 - 一、查询数据 一、查询数据第1节 基本 SQL Server 语句SELECT第2节 SELECT语句示例2.1 SELECT - 检索表示例的某些列2.2 SELECT - 检索表的所有列2.3 SELECT - 对结果集进行筛选2.4 SELECT - 对结果集进行排序2.5 SELECT - 对结果集进行分组2.5 SELECT - …

正则表达式及文本三剑客grep sed awk

正则表达式 1.元字符 . //匹配任意单个字符&#xff0c;可以是个汉字 [yang] //匹配范围内的任意单个字符 [^y] //匹配处理指定范围外的任意单个字符 [:alnum:] //字母和数字 [:alpha:] //代表…

Tomcat定时重启脚本

利用Linux系统定时任务重启tomcat&#xff0c;脚本文件参见附件。 系统定时任务设置方式参见《tomcat日志清理篇》。 tomcat定时重启&#xff1a; 1.先写重启脚本&#xff1a;&#xff08;参考附件&#xff09; 2. chmod 777 xxxx.sh 赋予权限 3. crontab -e 修改定时任务&am…

uc_12_进程间通信IPC_有名管道_无名管道

1 内存壁垒 进程间天然存在内存壁垒&#xff0c;无法通过交换虚拟地址直接进行数据交换&#xff1a; 每个进程的用户空间都是0~3G-1&#xff08;32位系统&#xff09;&#xff0c;但它们所对应的物理内存却是各自独立的。系统为每个进程的用户空间维护一张专属于该进程的内存映…

ZPLPrinter Emulator SDK for .NET 6.0.23.1123​ Crack

ZPLPrinter Emulator SDK for .NET 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您通过编写 C# 或VB.NET 代码针对任何 .NET Framework、.NET CORE、旧版 ASP.NET MVC 和 CORE、Xamarin、Mono 和通用 Windows 平台 (UWP) 作业。 适用于 .NET 的 ZPLPrinter 仿真器 SDK 允许您将…

第一百八十五回 如何禁止页面跟随手机自动旋转

文章目录 1. 概念介绍2. 使用方法2.1 全面禁止2.2 局部禁止3. 示例代码4. 内容总结我们在上一章回中介绍了"如何自定义Radio组件"相关的内容,本章回中将介绍 如何禁止页面随手机自动旋转.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 在手机默认设置下,手机…

数据爬虫(JSON格式)数据地图可视化(pyecharts)【步骤清晰,一看就懂】

一、前言 数据存储在网页上&#xff0c;需要爬取数据下来&#xff0c;数据存储格式是JSON&#xff0c;数据可视化在工作中也变得日益重要&#xff0c;接下来将数据爬虫与数据可视化结合起来&#xff0c;做个案例 注&#xff1a;当时数据是22年1月29日爬取数据 二、使用步骤 …