利用Python和Sprak求曲线与X轴上方的面积
有n组标本(1, 2, 3, 4), 每组由m个( , , ...)元素( , )组成(m值不定), . 各组样本的分布 曲线如下图所示. 通过程序近似实现各曲线与oc, cd直线围成的⾯积.

思路
- 可以将图像分成若干个梯形,每个梯形的底边长为(Xn+1 - Xn-1),面积为矩形的一半,其面积 = (底边长 X 高)/2,即S = (Xn+1 - Xn-1) * (Yn+1 + Yn+2),对于整个图形,面积为所有梯形面积之和。
[图片] - 求曲线与其下方x轴的面积,本质上是一个求积分的过程。可以对所有点进行积分,可以调用np.tapz(x, y)来求
代码
"""Calculate the area between the coordinates and the X-axis
"""import typing
from pandas import read_parquetdef calc_area(file_name: str) -> typing.Any:"""⾯积计算.Args:file_name: parquet⽂件路径, eg: data.parquetReturns:计算后的结果"""res = []# Load data from .parquetinitial_data = read_parquet(file_name)# Get number of groupsgroup_numbers = initial_data["gid"].drop_duplicates().unique()# Loop through the results for each groupfor i in group_numbers:data = initial_data[initial_data["gid"] == i]data = data.reset_index(drop=True)# Extract the list of x\yx_coordinates = data["x"]y_coordinates = data["y"]# Calculate area between (x[i], y[i]) and (x[i+1], y[i+1])rect_areas = [(x_coordinates[i + 1] - x_coordinates[i])* (y_coordinates[i + 1] + y_coordinates[i])/ 2for i in range(len(x_coordinates) - 1)]# Sum the total arearesult = sum(rect_areas)res.append(result)# Also we can use np for convenience# import numpy as np# result_np = np.trapz(y_coordinates, x_coordinates)return rescalc_area("./data.parquet")
或者使用pyspark
"""Calculate the area between the coordinates and the X-axis
"""import typing
from pyspark.sql import Window
from pyspark.sql.functions import lead, lit
from pyspark.sql import SparkSessiondef calc_area(file_name: str) -> typing.Any:"""⾯积计算.Args:file_name: parquet⽂件路径, eg: data.parquetReturns:计算后的结果"""res = []# Create a session with sparkspark = SparkSession.builder.appName("Area Calculation").getOrCreate()# Load data from .parquetinitial_data = spark.read.parquet(file_name, header=True)# Get number of groupsdf_unique = initial_data.dropDuplicates(subset=["gid"]).select("gid")group_numbers = df_unique.collect()# Loop through the results for each groupfor row in group_numbers:# Select a set of datadata = initial_data.filter(initial_data["gid"] == row[0])# Adds a column of delta_x to the data frame representing difference# from the x value of an adjacent data pointwindow = Window.orderBy(data["x"])data = data.withColumn("delta_x", lead("x").over(window) - data["x"])# Calculated trapezoidal areadata = data.withColumn("trap",(data["delta_x"]* (data["y"] + lit(0.5) * (lead("y").over(window) - data["y"]))),)result = data.agg({"trap": "sum"}).collect()[0][0]res.append(result)return rescalc_area("./data.parquet")
提高计算的效率
- 可以使用更高效的算法,如自适应辛普森方法或者其他更快的积分方法
- 可以在数据上进行并行化处理,对pd DataFrame\spark DataFrame进行分区并使用分布式计算
- 在使用spark的时候可以为window操作制定分区来提高性能
- 以下为与本例无关的笼统的提高效率的方法:
- 并行计算:使用多核CPU或分布式计算系统,将任务分解成多个子任务并行处理。
- 数据压缩:压缩大数据以减少存储空间和带宽,加快读写速度。
- 数据分块:对大数据进行分块处理,可以减小内存需求并加快处理速度。
- 缓存优化:优化缓存策略,减少磁盘访问和读取,提高计算效率。
- 算法优化:使用高效率的算法,比如基于树的算法和矩阵算法,可以提高计算效率。
相关文章:
利用Python和Sprak求曲线与X轴上方的面积
有n组标本(1, 2, 3, 4), 每组由m个( , , ...)元素( , )组成(m值不定), . 各组样本的分布 曲线如下图所示. 通过程序近似实现各曲线与oc, cd直线围成的⾯积. 思路 可以将图像分成若干个梯形,每个梯形的底边长为(Xn1 - Xn-1),面积为矩形的一半,…...
利用机器学习(mediapipe),进行人手的21个3D手关节坐标检测
感知手的形状和动作的能力可能是在各种技术领域和平台上改善用户体验的重要组成部分。例如,它可以构成手语理解和手势控制的基础,并且还可以在增强现实中将数字内容和信息覆盖在物理世界之上。虽然自然而然地出现在人们手中,但是强大的实时手感知力无疑是一项具有挑战性的计…...
【添砖java】谁说编程第一步是hello world
编程第一步明明是下载编译器和配置环境(小声逼逼)。 Windows下的java环境安装: java的安装包分为两类,一类是JRE(Java Runtime Environmental),是一个独立的java运行环境;一类是JDK…...
el-table大数据量渲染卡顿问题
1、场景描述 在项目开发中,遇到在表格中一次性加载完的需求,且加载数量不少,有几百几千条,并且每条都可能有自己的下拉框,输入框来做编辑功能,此时普通的el-table肯定会导致浏览器卡死,那么怎么…...
MyBatis-Plus 实现分页的几种写法
简介MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。快速开始添加依赖全新的 MyBatis-Plus 3.0 版本基于 JDK8ÿ…...
记一次Binder内存不足导致的应用被杀
每个进程的可用Binder内存大小是 1M-8KB 也就是900多KB 事情的起因的QA压测过程发生进程号变更,怀疑APP被杀掉过,于是开始看日志(实际后来模拟的时候可以发现app确实被杀掉了) APP的压测平台会上报进程号变更时间点,发…...
Zabbix4.0架构理解-zabbix的工作方式
目录 1.1、zabbix4.0架构图 1.2、zabbix的进程 1、 zabbix server 2、zabbix agent 3、 zabbix proxy 4、 java gateway 5、zabbix get 1.3、zabbix的几种工作方式 1、通过zabbix agent 2、通过zabbix proxy 3、通过 zabbix java gateway 4、其他 1.3、zabbix 数据走…...
MySQL中的一些非常实用的函数、语法
前言我最近几年用MYSQL数据库挺多的,发现了一些非常有用的小玩意,今天拿出来分享到大家,希望对你会有所帮助。1.group_concat在我们平常的工作中,使用group by进行分组的场景,是非常多的。比如想统计出用户表中&#x…...
RT-Thread移植到STM32F407
文章目录第一步:获取RT-Thread源码第二步:项目结构介绍第三步:拷贝示例代码到裸机工程第四步:删除无用文件第五步:修改工程目录结构第六步:添加工程文件路径第七步:编译第八步:修改配…...
VR全景到底有多全能?为何屡受关注?
告别两年的“冰封”时期,现在疫情放开已经有一段时间了,各个行业的市场和经济已经逐步回暖,但是疫情对广大群众造成的心理阴影还是迟迟未有退散。就拿去电影院看电影来说,以前看电影是看心情,现在看电影则是看环境&…...
剑指 Offer 30. 包含min函数的栈
摘要 剑指 Offer 30. 包含min函数的栈 一、栈解析 package Stock;import java.util.Stack;/*** Classname JZ30min函数栈* Description TODO* Date 2023/2/24 18:59* Created by xjl*/ public class JZ30min函数栈 {/*** description 最小栈的含义是每次从栈中获取的数据都是…...
stm32f407探索者开发板(二十二)——通用定时器基本原理讲解
文章目录一、三种定时器的区别二、通用定时器特点2.1 功能特点描述2.2 计数器模式三、通用定时器工作过程四、附一、三种定时器的区别 STM32F40x系列总共最多有14个定时器 三种(4)STM32定时器区别 二、通用定时器特点 2.1 功能特点描述 STM3 F4的通…...
cmake 入门三 常用变量和指令
cmake常用变量 一、cmake 变量引用的方式: 前面我们已经提到了,使用${}进行变量的引用。在IF 等语句中,是直接使用变量名而不通过${}取值 二,cmake 自定义变量的方式: 主要有隐式定义和显式定义两种,一…...
Linux基础命令-find搜索文件位置
文章目录 find 命令介绍 语法格式 命令基本参数 参考实例 1)在root/data目录下搜索*.txt的文件名 2)搜索一天以内最后修改时间的文件;并将文件删除 3)搜索777权限的文件 4)搜索一天之前变动的文件复制到test…...
获取浏览器硬件资源的媒体数据(拍照、录音、录频、屏幕共享)
目录一、window.navigator 对象包含有关访问者浏览器的信息取二、MediaDevices1.使用麦克风2.使用摄像头(和音频一样)3.拍照4.录屏三、MediaRecorder(录制,可录制音频视屏)一、window.navigator 对象包含有关访问者浏览器的信息取 <!DOCTYPE html>…...
Java入门教程||Java 日期时间||Java 正则表达式
Java 日期时间java.util包提供了Date类来封装当前的日期和时间。Date类提供两个构造函数来实例化Date对象。第一个构造函数使用当前日期和时间来初始化对象。Date( )第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数。Date(long millisec)Date对象创建…...
详解八大排序算法
文章目录前言排序算法插入排序直接插入排序:希尔排序(缩小增量排序)选择排序直接选择排序堆排序交换排序冒泡排序快速排序hoare版本挖坑法前后指针版本快速排序的非递归快速排序总结归并排序归并排序的非递归实现:计数排序排序算法复杂度及稳定性分析总结前言 本篇…...
python库streamlit学习笔记
什么是streamlit? Streamlit是一个免费的开源框架,用于快速构建和共享漂亮的机器学习和数据科学Web应用程序。它是一个基于Python的库,专为机器学习工程师设计。数据科学家或机器学习工程师不是网络开发人员,他们对花几周时间学习…...
C/C++开发,无可避免的内存管理(篇一)-约束好跳脱的内存
一、养成内存管理好习惯 1.1 养成动态对象创建、调用及释放好习惯 开发者手动接管内存分配时,必须处理这两个任务。分配原始内存时,必须在该内存中构造对象;在释放该内存之前,必须保证适当地撤销这些对象。如果你的项目是c项目&am…...
在React项目中引入字体文件并使用
一、背景 设计稿里某些文字所用的字体,系统默认不支持。 比如设计需要的这个字体:EmerlandRegular,即使在css里将文字字体设置为他们,实际效果也显示不出来。 二、现象及原因 1、样式 2、期待效果 3、实际效果 实际上是因为这个…...
Anthropic Managed Agents:AI代理的运行时操作系统时刻
1. 这不是新赛道,是 runtime 层的“操作系统时刻”来了你有没有试过让一个 AI 代理连续工作四十分钟?不是闲聊,而是真干活:查数据库、调 API、读 PDF、写代码、改配置、再回传结果——一环扣一环,中间不能断。我去年就…...
5分钟掌握NoFences:告别杂乱桌面的免费桌面整理终极指南
5分钟掌握NoFences:告别杂乱桌面的免费桌面整理终极指南 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否每天都要面对一个布满杂乱图标的Windows桌面&#…...
告别野指针和内存泄漏:用Cppcheck给你的C/C++项目做个免费‘体检’(附VS项目集成教程)
用Cppcheck为C/C项目构建自动化代码质量防护网 在软件开发领域,代码质量直接影响着产品的稳定性和安全性。对于C/C这类系统级语言来说,内存泄漏、野指针等问题往往潜伏在代码深处,直到运行时才突然爆发。而静态代码分析工具就像一位经验丰富的…...
windows VS工具判断动态库是32位还是64位
dumpbin /headers yourfile.dll | findstr "machine"...
AR眼镜主板与光机定制开发:从核心需求到软硬件协同的工程实践
1. 项目概述:从“主板”与“光机”看AR眼镜的核心最近和几个做AR硬件和方案的朋友聊得比较多,大家普遍有个感觉:市面上关于AR眼镜的讨论,要么是概念满天飞,要么是成品评测,但真正深入到硬件底层,…...
【AI面试八股文 Vol.3.5:推理幻觉规模定律】CoT、幻觉与 Scaling Law:为什么模型会推理,也会一本正经胡说
摘要:这篇会把 CoT、幻觉和 Scaling Law 放到同一条工程主线上:CoT 不是教模型思考,而是触发模型把隐式路径显式写出来;幻觉不是单一 bug,而是训练知识边界、解码策略和指令跟随压力叠加后的结果;Scaling L…...
用户测试完整流程:如何在测试阶段验证产品假设
用户测试完整流程:如何在测试阶段验证产品假设 【免费下载链接】design-sprint Product Design Sprint Material 项目地址: https://gitcode.com/gh_mirrors/de/design-sprint 在产品开发过程中,用户测试是验证产品假设、确保产品满足用户需求的关…...
Kali365 钓鱼平台突袭 Microsoft 365 用户:FBI 紧急预警新型 OAuth 令牌攻击链
近期,美国联邦调查局(FBI)联合网络安全与基础设施安全局(CISA)发布了一则编号为 I-052126-PSA 的私营行业通知,披露了一个正在暗处快速膨胀的威胁——名为 Kali365 的网络钓鱼即服务(PhaaS&…...
Hermes Agent项目如何接入Taotoken作为自定义模型提供商
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent项目如何接入Taotoken作为自定义模型提供商 Hermes Agent 是一个功能强大的 AI 代理框架,它支持通过自定义…...
【麒麟桌面系统】V10-SP1 2503 系统知识——常见日志文件及其作用
提示:分享麒麟桌面操作系统 V10 SP1 2503 ( Kylin-Desktop-V10-SP1 2503 )常见日志文件及其作用。 一、现象描述现象描述:在银河麒麟桌面操作系统使用过程中,若出现操作系统故障,需要查询日志排查具体原因&…...
