python线性插值

假设有一个一维数组,但是此数组中只有部分位置上有值,其它位置数据缺失,现在想用线性插值的方法将其填充。

示例代码:

import numpy as np

# 假设你有一个长度为171的数组,名为full_data,其中有13个数据点
# 用 None 表示缺失的数据点
full_data = [None] * 171

# 假设你已经有了13个数据点的索引和值
known_indices = [11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 141, 161]
known_values = [0.207, 0.217, 0.184, 0.177, 0.162, 0.312,
                0.253, 0.317, 0.333, 0.336, 0.352, 0.288, 0.295]

# 使用 NumPy 的interp函数进行线性插值
# 注意:interp函数要求已知数据点的索引必须是单调递增的
# 这里假设已知索引是单调递增的
full_indices = np.arange(len(full_data))
full_data = np.interp(full_indices, known_indices, known_values)

# 打印结果
print(full_data)

结果展示:

[0.207   0.207   0.207   0.207   0.207   0.207   0.207   0.207   0.207
 0.207   0.207   0.207   0.208   0.209   0.21    0.211   0.212   0.213
 0.214   0.215   0.216   0.217   0.2137  0.2104  0.2071  0.2038  0.2005
 0.1972  0.1939  0.1906  0.1873  0.184   0.1833  0.1826  0.1819  0.1812
 0.1805  0.1798  0.1791  0.1784  0.1777  0.177   0.1755  0.174   0.1725
 0.171   0.1695  0.168   0.1665  0.165   0.1635  0.162   0.177   0.192
 0.207   0.222   0.237   0.252   0.267   0.282   0.297   0.312   0.3061
 0.3002  0.2943  0.2884  0.2825  0.2766  0.2707  0.2648  0.2589  0.253
 0.2594  0.2658  0.2722  0.2786  0.285   0.2914  0.2978  0.3042  0.3106
 0.317   0.3186  0.3202  0.3218  0.3234  0.325   0.3266  0.3282  0.3298
 0.3314  0.333   0.3333  0.3336  0.3339  0.3342  0.3345  0.3348  0.3351
 0.3354  0.3357  0.336   0.3368  0.3376  0.3384  0.3392  0.34    0.3408
 0.3416  0.3424  0.3432  0.344   0.3448  0.3456  0.3464  0.3472  0.348
 0.3488  0.3496  0.3504  0.3512  0.352   0.3488  0.3456  0.3424  0.3392
 0.336   0.3328  0.3296  0.3264  0.3232  0.32    0.3168  0.3136  0.3104
 0.3072  0.304   0.3008  0.2976  0.2944  0.2912  0.288   0.28835 0.2887
 0.28905 0.2894  0.28975 0.2901  0.29045 0.2908  0.29115 0.2915  0.29185
 0.2922  0.29255 0.2929  0.29325 0.2936  0.29395 0.2943  0.29465 0.295
 0.295   0.295   0.295   0.295   0.295   0.295   0.295   0.295   0.295  ]

线性插值绘图代码:

import matplotlib.pyplot as plt
import numpy as np

# 数据
x = [11, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, 141, 161]
y = [0.207, 0.217, 0.184, 0.177, 0.162, 0.312,
     0.253, 0.317, 0.333, 0.336, 0.352, 0.288, 0.295]
x1 = np.arange(0, 171)
y1 = [0.207, 0.207, 0.207, 0.207, 0.207, 0.207, 0.207, 0.207, 0.207,
      0.207, 0.207, 0.207, 0.208, 0.209, 0.21, 0.211, 0.212, 0.213,
      0.214, 0.215, 0.216, 0.217, 0.2137, 0.2104, 0.2071, 0.2038, 0.2005,
      0.1972, 0.1939, 0.1906, 0.1873, 0.184, 0.1833, 0.1826, 0.1819, 0.1812,
      0.1805, 0.1798, 0.1791, 0.1784, 0.1777, 0.177, 0.1755, 0.174, 0.1725,
      0.171, 0.1695, 0.168, 0.1665, 0.165, 0.1635, 0.162, 0.177, 0.192,
      0.207, 0.222, 0.237, 0.252, 0.267, 0.282, 0.297, 0.312, 0.3061,
      0.3002, 0.2943, 0.2884, 0.2825, 0.2766, 0.2707, 0.2648, 0.2589, 0.253,
      0.2594, 0.2658, 0.2722, 0.2786, 0.285, 0.2914, 0.2978, 0.3042, 0.3106,
      0.317, 0.3186, 0.3202, 0.3218, 0.3234, 0.325, 0.3266, 0.3282, 0.3298,
      0.3314, 0.333, 0.3333, 0.3336, 0.3339, 0.3342, 0.3345, 0.3348, 0.3351,
      0.3354, 0.3357, 0.336, 0.3368, 0.3376, 0.3384, 0.3392, 0.34, 0.3408,
      0.3416, 0.3424, 0.3432, 0.344, 0.3448, 0.3456, 0.3464, 0.3472, 0.348,
      0.3488, 0.3496, 0.3504, 0.3512, 0.352, 0.3488, 0.3456, 0.3424, 0.3392,
      0.336, 0.3328, 0.3296, 0.3264, 0.3232, 0.32, 0.3168, 0.3136, 0.3104,
      0.3072, 0.304, 0.3008, 0.2976, 0.2944, 0.2912, 0.288, 0.28835, 0.2887,
      0.28905, 0.2894, 0.28975, 0.2901, 0.29045, 0.2908, 0.29115, 0.2915, 0.29185,
      0.2922, 0.29255, 0.2929, 0.29325, 0.2936, 0.29395, 0.2943, 0.29465, 0.295,
      0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.295, 0.295]

# 绘制折线图
plt.scatter(x, y, color='red', label='pre-interpolation')
plt.plot(x, y, color='pink')
# dashes设置虚线与虚线之间的间隔
plt.plot(x1, y1, alpha=1, linestyle='--',
         color='blue', dashes=(10, 10), label='post-interpolation')

# 添加标题和标签
plt.xlabel('X-axis')
plt.ylabel('Y-axis')

plt.legend()

# 显示图形
plt.show()

结果展示:
在这里插入图片描述
从图片可以看出,线性插值即是将两点连成直线,插值的数据即是直线上的数据。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab软件基础

第1讲 MATLAB初步 MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。MATLAB和Mathematica、Maple并称为三…

面试算法-51-翻转二叉树

题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 解 class Solution {public TreeNode invertTree(TreeNode root) {dfs(root);re…

电子科技大学链时代工作室招新题C语言部分---题号G

1. 题目 问题的第一段也是非常逆天,说实话,你编不出问题背景可以不编。 这道题的大概意思就是, Pia要去坐飞机,那么行李就有限重。这时Pia想到自己带了个硬盘,众所周知,硬盘上存储的数据就是0和1的二进制序…

elasticsearch安装部署

elasticsearch部署 安装elasticsearch1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools 3.安装IK分词器3.1.在线安装ik插件(较慢)3.2.离线安装ik插件(推荐)3.3 扩展词词典3.4 停用词词典 4.部署es…

列表的常用操作

列表的常用操作(方法) 列表除了可以: 定义使用下标索引获取值 此外列表也提供一些列功能:插入元素删除元素清空元素修改元素统计元素个数 等等功能,这些功能我们都称之为:列表的方法 列表的查询功能&…

七:分布式

一、Nginx nginx安装 【1】安装pcre依赖 1.下载压缩包:wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz 2.解压压缩包:tar -xvf pcre-8.37.tar.gz 3.安装gcc:yum install gcc 4.安装gcc:yum ins…

Java的图书管理系统,确实有两把斧子 ! ! !

本篇会加入个人的所谓‘鱼式疯言’ ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

HCIE考证心得 | 在云校的学习收获颇多

我是来自深圳信息职业技术学院22级现代移动通信3-3班的冯同学,我在2023年12月12日通过了华为认证Cloud Service HCIE。在此,我将分享考证中的心得体会给大家。 备考的六点建议 一是要细心严谨,做实验时要全神贯注,明确实验要求…

基于python考试分析系统的设计和实现-flask-django-nodejs-php

随着电子技术的普及和快速发展,线上管理系统被广泛的使用,有很多商业机构都在实现电子信息化管理,图书推荐也不例外,由比较传统的人工管理转向了电子化、信息化、系统化的管理。   本文的重点是对考试分析系统展开了详细的描述&a…

填坑记5:安装imdb库失败 ERROR: No matching distribution found for imdb

收录于《填坑记》 一、问题 pip install imdb在网上查找原因,有以下几种可能: 库名拼写错误:首先确认你要安装的库名是否正确拼写。如果是想使用IMDb的数据,你可能在寻找的是 IMDbPY 这个库,而不是 imdb。库不存在&a…

软件开发项目管理/研发项目管理软件:国产EDA工具厂商行芯科技上线奥博思PowerProject项目管理软件平台

国内领先的EDA工具链提供商杭州行芯科技有限公司(以下简称:行芯科技)与北京奥博思软件技术有限公司达成战略合作,奥博思软件将基于PowerProject项目管理系统助力行芯科技实现研发项目的全生命周期管理,提升管理效能&am…

B010-springcloud alibaba 分布式事务 Seata

目录 分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务解决方案全局事务/两阶段提交可靠消息服务最大努力通知TCC事务 Seata介绍Seata实现分布式事务控制案例基本代码修改order微服务OrderSeataControllerOrderServiceImpl5注释容错相关代码ProductClient 修改…

Avalon总线学习

Avalon总线学习 avalon总线可以分为: Avalon clock interface Avalon reset interface Avalon Memory mapped interface Avalon iterrupt interface Avalon streaming interface Avalon tri-state conduit interface Avalon conduit interface 1、Avalon c…

管道(acwing,蓝桥杯,二分)

题目描述: 有一根长度为 len 的横向的管道,该管道按照单位长度分为 len 段,每一段的中央有一个可开关的阀门和一个检测水流的传感器。 一开始管道是空的,位于 Li的阀门会在 Si 时刻打开,并不断让水流入管道。 对于位…

openEuler 22.03(华为欧拉)一键安装 Oracle 11G(231017)单机版

Oracle 一键安装脚本,演示 openEuler 22.03 一键安装 Oracle 11GR2 单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址:Shell脚本安装Oracle数据库 …

高端嵌入式底层技术揭秘:《ARM汇编与逆向工程》

ARM架构简介 与传统的CISC(Complex Instruction Set Computer,复杂指令集计算机)架构相比,Arm架构的指令集更加简洁明了,指令执行效率更高,能够在更低的功耗下完成同样的计算任务,因此在低功耗…

2024流星全自动网页生成系统重构版源码

2024流星全自动网页生成系统重构版源码 源码介绍 流星全自动网页生成系统重构版源码分享,所有模板经过精心审核与修改,完美兼容小屏手机大屏手机,以及各种平板端、电脑端和360浏览器、谷歌浏览器、火狐浏览器等等各大浏览器显示。 为用户使…

FREERTOS信号量详解

信号量是操作系统中重要的一部分,信号量一般用来进行资源管理和任务同步,资源管理其实就是用变量来标记现有资源的数量,任务同步其实就是用标志位来控制任务的先后执行顺序,这些概念在操作系统中以及裸机开发中都有所涉及。 FreeR…

RK3588_Qt交叉编译环境搭建

buildroot编译 进入 /home/linux/plat/rk3588/sdk/buildroot 目录下,执行 Source ./envsetup.sh 选择具体平台编译,后再执行make编译 /home/linux/plat/rk3588/sdk/buildroot/output/OK3568/images 生成的rootfs.ext2镜像重新烧写到rk3568开发板中&…