当前位置: 首页 > news >正文

Python开发之二维数组空缺值的近邻填充

Python开发之二维数组空缺值的填充

  • 1 实现一,任意位置填充
  • 2 实现二,填充内部
  • 3 实现三,只填充边缘,不包括四个角

前言:主要实现二维数据里面某一个数据的缺失,用缺失的近邻数据进行均值填充,可以应用在遥感图像中空缺值的填充等。


1 实现一,任意位置填充

对二维数据任意位置的空缺值进行近邻填充。
代码实现,其中指定空缺值,指定近邻的数量

import numpy as np# 定义一个函数来填充-23750为空值
def fill_empty_with_mean(arr, empty_value,min_neighbors):# 获取数组的行数和列数rows, cols = arr.shape# 遍历数组for i in range(rows):for j in range(cols):if arr[i, j] == empty_value:# 获取周围非空元素的均值neighbors = []for x in [-1, 0, 1]:for y in [-1, 0, 1]:if 0 <= i + x < rows and 0 <= j + y < cols and arr[i + x, j + y] != empty_value:neighbors.append(arr[i + x, j + y])# 计算均值并填充if len(neighbors) >=min_neighbors:# print(neighbors)# print(np.mean(neighbors))arr[i, j] = np.mean(neighbors)if __name__ == '__main__':# 创建一个包含-23750为空值的示例二维数组array = np.array([[1, -23750, 1, 1, 1],[1, -23750, 1, 1, -23750],[-23750, 2, 9, -1, 1.0],[-1, -1, -23750, 5,  -23750]])# 使用函数填充-23750为空值empty_value = -23750min_neighbors = 3fill_empty_with_mean(array, empty_value,min_neighbors)# 输出填充后的数组print(array)

在这里插入图片描述

2 实现二,填充内部

对二维数据任意位置的空缺值进行近邻填充(去掉边缘)。
代码实现,其中指定空缺值,指定近邻的数量

import numpy as npdef fill_empty_with_mean(arr, empty_value, min_neighbors=5):# 获取数组的行数和列数rows, cols = arr.shape# 遍历数组for i in range(1, rows - 1):  # 从第2行到倒数第2行for j in range(1, cols - 1):  # 从第2列到倒数第2列if arr[i, j] == empty_value:# 获取周围非空元素的个数neighbors = [arr[i + x, j + y] for x in [-1, 0, 1] for y in [-1, 0, 1] ifarr[i + x, j + y] != empty_value]# 如果周围非空元素的个数大于等于min_neighbors,计算均值并填充if len(neighbors) >= min_neighbors:arr[i, j] = np.mean(neighbors)return arrif __name__ == '__main__':# 创建一个包含-23750为空值的示例二维数组array = np.array([[1, -23750, 1, 1, 1],[1, -23750, 1, 1, -23750],[-23750, 1, 7, -1, 1],[-1, -1, -23750, 5, 6]])# 输出填充后的数组# print(array)# 使用函数填充-23750为空值,只有周围至少有5个非空值时才填充empty_value = -23750min_neighbors = 5arr = fill_empty_with_mean(array, empty_value, min_neighbors)# 输出填充后的数组print(arr)

在这里插入图片描述

3 实现三,只填充边缘,不包括四个角

代码实现

import numpy as npdef fill_edge_empty_with_mean(arr, empty_value, min_neighbors=5):# 获取数组的行数和列数rows, cols = arr.shape# 遍历第一行for j in range(1, cols - 1):if arr[0, j] == empty_value:# 获取周围非空元素的个数neighbors = [arr[0 + x, j + y] for x in [0, 1] for y in [-1, 0, 1] if arr[0 + x, j + y] != empty_value]print(neighbors)# 如果周围非空元素的个数大于等于min_neighbors,计算均值并填充if len(neighbors) >= min_neighbors:arr[0, j] = np.mean(neighbors)print(float(np.mean(neighbors)))## 遍历最后一行for j in range(1, cols - 1):if arr[rows - 1, j] == empty_value:# 获取周围非空元素的个数neighbors = [arr[rows - 1 + x, j + y] for x in [-1, 0] for y in [-1, 0, 1] if arr[rows - 1 + x, j + y] != empty_value]print(neighbors)# 如果周围非空元素的个数大于等于min_neighbors,计算均值并填充if len(neighbors) >= min_neighbors:arr[rows - 1, j] = np.mean(neighbors)print(float(np.mean(neighbors)))## 遍历第一列for i in range(1, rows - 1):if arr[i, 0] == empty_value :neighbors = [arr[i + x, 0 + y] for x in [-1, 0, 1] for y in [0, 1] if arr[i + x, 0 + y] != empty_value]print(neighbors)# 如果周围非空元素的个数大于等于min_neighbors,计算均值并填充if len(neighbors) >= min_neighbors:arr[i, 0] = np.mean(neighbors)print(float(np.mean(neighbors)))# 遍历最后一列for i in range(1, rows - 1):if arr[i, cols - 1] == empty_value:# 获取周围非空元素的个数neighbors = [arr[i + x, cols-1 + y] for x in [-1, 0, 1] for y in [-1, 0] if arr[i + x, cols-1 + y] != empty_value]print(neighbors)# 如果周围非空元素的个数大于等于min_neighbors,计算均值并填充if len(neighbors) >= min_neighbors:arr[i, cols - 1] = np.mean(neighbors)print(float(np.mean(neighbors)))return arrif __name__ == '__main__':# 创建一个包含-23750为空值的示例二维数组array = np.array([[1, -23750, 1, 1, 1],[1, -1, 1, 1, -23750],[-23750, 1, 7, -1, 1],[-1, -1, -23750, 5, 6.0]])# 输出填充后的数组# print(array)# 使用函数填充-23750为空值,只有周围至少有5个非空值时才填充empty_value = -23750min_neighbors = 3arr = fill_edge_empty_with_mean(array, empty_value, min_neighbors)# 输出填充后的数组print(arr)

在这里插入图片描述

相关文章:

Python开发之二维数组空缺值的近邻填充

Python开发之二维数组空缺值的填充 1 实现一&#xff0c;任意位置填充2 实现二&#xff0c;填充内部3 实现三&#xff0c;只填充边缘&#xff0c;不包括四个角 前言&#xff1a;主要实现二维数据里面某一个数据的缺失&#xff0c;用缺失的近邻数据进行均值填充&#xff0c;可以…...

vue使用pdf 导出当前页面,(jspdf, html2canvas )

需要安装两个插件 npm install html2canvas jspdfyarn add html2canvas jspdf<div class"app-container" id"pdfPage"><!--这个放你需要导出的内容--> </div><el-button size"mini" click"onExportPdf">导出…...

【oracle删除表 回滚操作】

oracle数据回滚 oracle表在被误删后&#xff0c;一定时间内&#xff0c;可以采取以下方法进行恢复: 1、先查询数据库当前时间 select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss’) from dual;2、通过当前时间往前推时间&#xff0c;选择想要恢复的时间点 select * from 表名…...

Vue3 + TypeScript

Vue3 TS开发环境创建 1. 创建环境 vite除了支持基础阶段的纯TS环境之外&#xff0c;还支持 Vue TS开发环境的快速创建, 命令如下&#xff1a; $ npm create vitelatest vue-ts-pro -- --template vue-ts 说明&#xff1a; npm create vitelatest 基于最新版本的vite进行…...

软件测试/测试开发丨南科大计算机系本科生获“火焰杯”软件测试高校就业选拔赛一等奖

2022年12月2日&#xff0c;计算机系党总支书记、副系主任王琦副教授在工学院南楼551会议室为19级徐驰同学颁发第二届“火焰杯”软件测试开发选拔赛一等奖奖项&#xff0c;为刘烨庞助理教授颁发赛事优秀指导老师奖项。徐驰同学于2022年4月获得该赛事全国总决赛第一名&#xff0c…...

访问 github 问题解决方法

一、macOS版 PS. Windows 版的还没试&#xff0c;不过应该也差不多 1.基本信息 硬件&#xff1a;MacBook Pro 2017 (A1707) 系统&#xff1a;macOS 13.6 (Ventura) 应用&#xff1a;SwitchHosts 4.1.2 (Releases oldj/SwitchHosts GitHub) hosts内容网站&#xff1a;ht…...

供应QCA8075原装芯片

长期供应各品牌原装芯片&#xff1a; SST39VF040-70-4I-NH AR9344 DC3A BGA USB2422 QFN24 W9751G6KB-251 RTL8211EG-VB-CG HI3535-RBCV100 MX25L25635FMI-10G USB2240I-AEZG EM620FV8BS-70LF HXI15H4G160AF-13K 1PQ8064/BGA-519 USB4604I-1080HN SCB15H2G160A…...

在Maven中配置代理服务器的详细教程

在Maven中配置代理服务器的详细教程如下&#xff1a; 首先&#xff0c;确保您已经安装了Maven。创建一个新的Maven项目。在命令行中输入以下命令&#xff1a; mvn archetype:generate -DgroupIdcom.example -DartifactIdmy-app -DarchetypeArtifactIdmaven-archetype-quickst…...

QStringListModel

创建模型&#xff1a; QStringListModel* model new QStringListModel(this); 初始化列表&#xff1a; QStringList strList;strList << QStringLiteral("北京") << QStringLiteral("上海") << QStringLiteral("天津") &l…...

Linux下的文件管理

一、Linux下文件命名规则 1、可以使用哪些字符&#xff1f; 理论上除了字符“/”之外&#xff0c;所有的字符都可以使用&#xff0c;但是要注意&#xff0c;在目录名或文件名中&#xff0c;不建议使用某些特殊字符&#xff0c;例如&#xff0c; <、>、&#xff1f;、* …...

RN:报错info Opening flipper://null/React?device=React%20Native

背景 在 ios 上使用 debug 模式的时候&#xff0c;报错&#xff1a;info Opening flipper://null/React?deviceReact%20Native&#xff0c;我找到了这个 issue 其实也可以看到现在打开 debug&#xff0c;是 open debug&#xff0c;也不是之前的 debug for chrome 了&#xf…...

请问嵌入式或迁移学习要学什么?

请问嵌入式或迁移学习要学什么&#xff1f; 学习嵌入式和迁移学习是一个很好的方向&#xff0c;尤其是在军I领域。以下是一些你可以提前学习的基本 知识和步骤: 嵌入式系统:最近很多小伙伴找我&#xff0c;说想要一些嵌入式资料&#xff0c;然后我根据自己从业十年经验&#…...

数据结构-----图(Graph)论必知必会知识

目录 前言 图的基本概念 1.什么是图&#xff1f; 2 .图的相关术语 3 .有向图和无向图 4.简单图和多重图 5.连通图、强连通图、非连通图 6.权与网 7.子图和(强)连通分量 8.生成树和生成森林 前言 今天我们学习一种新的数据结构-----图&#xff0c;大家在日常生活中经常都…...

外汇天眼:法国金融市场管理局(AMF)致力于向零售投资者提供有关金融产品费用的信息

法国金融市场管理局&#xff08;AMF&#xff09;已经发布了一份专为专业人士准备的指南&#xff0c;以便他们使用更易于理解和比较的术语&#xff0c;以帮助客户更好地理解和比较费用。 AMF在其网站上推出了一个新的费用信息栏目&#xff0c;提供教育内容和工具&#xff0c;帮…...

【PythonGIS】基于Python批量合并矢量数据

老样子最近有项目需要将N个矢量文件合并成一个&#xff0c;总不能用ArcGIS一个个导入吧。所以我就想着用Python编个程序实现批量合并矢量。我之前也发了一些关于Python操作矢量数据的文章&#xff1a;【Python&GIS】Python处理矢量数据的基本操作&#xff08;查询、修改、删…...

精益求精:使用Ansible集中式自动备份核心数据

1、引言 在当今数字化时代&#xff0c;数据是企业和组织的核心资产。为了确保数据的安全性和可恢复性&#xff0c;备份是至关重 要的。然而&#xff0c;手动备份数据可能会繁琐且容易出错&#xff0c;特别是在面对大规模和分布式的数据存储情况下。幸运的是&#xff0c;Ansibl…...

大数据高级面试题

大数据高级面试题 Kafka的producer如何实现幂等性? Producer 幂等性 Producer 的幂等性指的是当发送同一条消息时&#xff0c;数据在 Server 端只会被持久化一次&#xff0c;数据不丟不重&#xff0c;但是这里的幂等性是有条件的&#xff1a; 只能保证 Producer 在单个会话内…...

如何拦截响应内容并修改响应头

背景及需求描述 背景 记录分享下近期遇到并解决的困扰了比较久的问题&#xff1a;在不同系统微信生态发现同一个cos地址用window.open(url)打开在苹果和安卓设备的微信生态上表现不一致&#xff1a;对于文档类型&#xff0c;响应头Content-Type: application/pdf 在安卓微信上…...

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测 目录 分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入…...

特定深度节点链表

题目链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 经典BFS与简单链表结合的题目。 #define MAX_DEPTH (1000)struct ListNode** listOfDepth(struct TreeNode* tree, int* returnSize) {*returnSize 0;struct ListNode **ans (…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...