lua库介绍:数据处理与操作工具库 - leo
leo库简介
leo
模块的创作初衷旨在简化数据处理的复杂流程,提高代码的可读性和执行效率,希望leo
模块都能为你提供一系列便捷的工具函数,涵盖因子编码
、多维数组创建
、数据框构建
、列表管理
以及管道操作
等功能。
要使用 Leo 模块,首先需要先安装luarocks
,随后在终端执行以下命令进行安装:
luarocks install lpeg
luarocks install leo
leo
库包含以下函数:
函数名 | 功能 | 备注 |
---|---|---|
Factor() | 创建因子对象 | 将分类数据编码为整数值,生成因子对象。因子对象保留原始类别信息,提供编码后的数值表示,便于统计分析和数据处理。 |
Array() | 创建多维数组 | 创建多维数组,支持2D或3D数组,允许循环填充或线性填充。 |
Matrix() | 创建二维矩阵 | 专门用于创建二维矩阵,并初始化每个元素的值,适用于数学计算、图像处理等场景。 |
DataFrame() | 创建数据框对象 | 创建数据框对象,存储结构化数据,提供方便的数据操作接口。支持列式存储,允许对每列进行独立操作,如过滤、排序、聚合等。 |
List() | 创建列表对象 | 创建列表对象,支持从变长参数或单个表中提取元素。列表对象支持动态添加和删除元素,适用于频繁修改数据结构的场景。 |
Pipe() | 创建管道对象 | 创建管道对象,允许通过链式调用对数据进行一系列操作。简化复杂转换过程,减少嵌套调用带来的代码复杂度,实现高效的流水线式数据处理。 |
Summary() | 计算统计摘要 | 计算数值数组的最小值、第一四分位数、中位数、平均值、第三四分位数和最大值。提供类似于R语言中summary()函数的功能,快速了解数据的基本统计信息。 |
Which() | 查找满足条件的元素索引 | 查找满足给定条件的元素索引。条件可以是函数或逻辑数组,返回满足条件的元素索引列表,常用于数据筛选和异常检测。 |
Is_na() | 检查 nil 元素 | 检查数值数组中的每个元素是否为nil,返回逻辑数组指示元素状态。 |
Na_omit() | 移除 nil 元素 | 移除数值数组中的所有nil元素,返回新数组。 |
Narm | 忽略 nil 计算平均值 | 计算数值数组的平均值,忽略数组中的nil元素。有效处理缺失数据,确保后续分析的准确性。 |
格式化输出
Show()
函数用于直接输出信息到控制台。它可以处理任意类型的值,并根据值的类型进行适当的格式化输出。对于表,它会递归地打印出表的内容;对于自定义对象,它会尝试调用对象的__tostring元方法;对于其他类型的值,它会直接打印。
比如:
local leo = require "leo"local arrays = {{1,2,3},{4,5,6},{7,8,9}
}print(arrays)
print("---------------------------")
leo.Show(arrays)
因子化操作
与R语言的factor()
函数相似,Factor()
函数用于创建一个因子对象,该对象可以将分类数据编码为整数值,从而便于进行统计分析或其他数据处理任务。
local leo = require "leo"local factor = leo.Factor({"apple", "banana", "apple", "orange", "banana"})
print("Levels:", table.concat(factor.levels, ", "))
print("Encoded Data:", table.concat(factor.encoded_data, ", "))
创建多维数组
Array()
函数用于创建一个多维数组(如矩阵或三维数组),并根据指定的参数填充数组。
local leo = require "leo"local array_2d_loop = leo.Array({3, 3}, 1, 5, true)
local array_3d_loop = leo.Array({3, 3, 3}, 1, 5, true)print("array_2d_loop:")
leo.Show(array_2d_loop)
print("array_3d_loop:")
leo.Show(array_3d_loop)
创建二维矩阵
Matrix()
函数用于创建一个二维矩阵,并初始化每个元素的值。
local leo = require "leo"local matrix = leo.Matrix(3, 3, 0)
leo.Show(matrix)
创建数据框对象
DataFrame()
函数用于创建一个数据框对象,该对象可以存储结构化数据,并提供方便的数据操作接口。
local leo = require "leo"local df = leo.DataFrame({Name = {"GGBond", "Mihu", "Superman Qiang"},Age = {15, 35, 26},City = {"New York", "Los Angeles", "Chicago"}
})
leo.Show(df)
创建列表对象
List()
函数用于创建一个列表对象,可以从变长参数或单个表中提取元素。
local leo = require "leo"local list = leo.List(1, 2, 3, {4, 5, 6})
leo.Show(list)
创建管道对象
pipe()
函数用于创建一个管道对象,允许通过链式调用的方式对数据进行一系列操作。
local leo = require "leo"local pipe = leo.Pipe(10)local function add_one(x) return x + 1 end
local function multiply_by_two(x) return x * 2 end
local function to_string(x) return tostring(x) endpipe(add_one)
pipe(multiply_by_two)
pipe(to_string)local final_result = pipe:get()
print(final_result)
计算统计摘要
Summary()
函数用于计算一个数值数组的最小值(Min)、第一四分位数(1st Qu.)、中位数(Median)、平均值(Mean)、第三四分位数(3rd Qu.)和最大值(Max)。该函数旨在提供类似于R语言中的summary()函数的功能,方便用户快速了解数据的基本统计信息。
local data = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
leo.Summary(data)
查找满足条件的元素索引
Which()
函数用于查找满足给定条件的元素索引。条件可以是一个函数或逻辑数组。如果条件是函数,则会遍历数组中的每个元素,并将满足条件的元素索引返回;如果条件是逻辑数组,则返回对应为true
的索引。
比如找出比3大的数:
local leo = require "leo"local data = {1, 2, 3, 4, 5}
local indices = leo.Which(function(x) return x > 3 end, data)
leo.Show(indices)
检查 nil 元素
Is_na()
函数用于检查数值数组中的每个元素是否为nil
,并返回一个逻辑数组,指示每个元素的状态。
local leo = require "leo"local dataset = {1, nil, 3, nil, 5}
local values = leo.Is_na(dataset)leo.Show(values)
移除 nil 元素
Na_omit()
函数用于移除数值数组中的所有nil
元素,并返回一个新的数组。
local leo = require "leo"local data = {1, nil, 3, nil, 5}
local result = leo.Na_omit(data)
leo.Show(result)
忽略 nil 计算平均值
Narm()
函数用于计算数值数组的平均值,忽略数组中的nil
元素。如果数组中没有非nil
的数字元素,则返回nil
。
local leo = require "leo"local data = {1, nil, 3, nil, 5}
local mean = leo.Narm(data)
print(mean)
相关文章:

lua库介绍:数据处理与操作工具库 - leo
leo库简介 leo 模块的创作初衷旨在简化数据处理的复杂流程,提高代码的可读性和执行效率,希望leo 模块都能为你提供一系列便捷的工具函数,涵盖因子编码、多维数组创建、数据框构建、列表管理以及管道操作等功能。 要使用 Leo 模块,…...

逆向入门(1)C篇-正儿巴经的第1个实验
接触了这么久,第一次不是使用CV大法编写程序,认认真真的重头开始学习,记录一下找调试的感觉。 第一段代码,重温原码,反码和补码。 #include "stdafx.h"int main(int argc, char* argv[]) {char x -7;print…...

vue数据请求通用方案:axios的options都有哪些值
Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 Node.js 中。 在使用 Axios 发送请求时,可以通过传递一个配置对象来指定请求的各种选项。 以下是一些常用的 Axios 配置选项及其说明: 1.url: (必需)请求的 …...

使用R语言绘制标准的中国地图和世界地图
在日常的学习和生活中,有时我们常常需要制作带有国界线的地图。这个时候绘制标准的国家地图就显得很重要。目前国家标准地图服务系统向全社会公布的标准中国地图数据,是最权威的地图数据。 今天介绍的R包“ggmapcn”,就是基于最新公布的地图…...

【PyTorch】迁移学习、数据增强
PyTorch官网 介绍 PyTorch 是一个开源的机器学习库,由 Facebook 的人工智能研究实验室开发。它提供了两种主要的功能:张量计算(类似于 NumPy,但具有 GPU 加速)和基于动态计算图的深度学习工具。PyTorch 因其灵活性、…...

Lucas-Kanade光流法详解
简介:个人学习分享,如有错误,欢迎批评指正。 光流(Optical Flow)描述的是图像序列中各像素点随时间的运动情况,是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...
python多张图片生成/合成gif
你可以通过调整帧率来提高GIF的流畅度。默认情况下,代码中的帧率为每秒1帧(fps=1)。我们可以增加这个值来加快动画速度。 下面是修改后的代码,将帧率从每秒1帧提高到每秒5帧(你可以根据需要进一步调整): 在这个版本中,我添加了一个可选参数fps,默认值为5帧每秒。你可…...
iptable限制多个端口出站
iptable限制多个端口出站 安装包 rootiptable:/home/bb# apt-get update rootiptable:/home/bb# apt-get -y install iptables iptables-restoreweb准备 rootweb:/home/bb/test-iptables# docker run -itd --name web -p 80:80 -v ./web1/index.html:/usr/share/nginx/html…...

springmvc--请求参数的绑定
目录 一、创建项目,pom文件 二、web.xml 三、spring-mvc.xml 四、index.jsp 五、实体类 Address类 User类 六、UserController类 七、请求参数解决中文乱码 八、配置tomcat,然后启动tomcat 1. 2. 3. 4. 九、接收Map类型 1.直接接收Map类型 &#x…...

Redis查询缓存
什么是缓存? 缓存是一种提高数据访问效率的技术,通过在内存中存储数据的副本来减少对数据库或其他慢速存储设备的频繁访问。缓存通常用于存储热点数据或计算代价高的结果,以加快响应速度。 添加Redis缓存有什么好处? Redis 基…...

双馈风电DFIG并网系统次转子侧变流器RSC抑制策略研究基于LADRC和重复控制的方法
风电装机容量的持续增长以及电力电子装置的大规模接入,导致电网强度降低,系 统运行特性发生深刻变化,严重威胁风电并网系统的安全稳定运行。因此本文以双馈风 电场经串补线路并网系统为研究对象,在深入分析双馈风电并网系统振荡…...

国产编辑器EverEdit - 使用技巧:变量重命名的一种简单替代方法
1 使用技巧:变量重命名的一种简单替代方法 1.1 应用场景 写过代码的都知道,经常添加功能的时候,是把别的地方的代码拷贝过来,改吧改吧,就能用了,改的过程中,就涉及到一个变量名的问题ÿ…...

使用SSH建立内网穿透,能够访问内网的web服务器
搞了一个晚上,终于建立了一个内网穿透。和AI配合,还是得自己思考,AI配合才能搞定,不思考只依赖AI也不行。内网服务器只是简单地使用了python -m http.server 8899,但是对于Gradio建立的服务器好像不行,会出…...

JWT认证实战
JWT(JSON Web Token)是一种轻量级的、基于 JSON 的开放标准(RFC 7519),用于在各方之间安全地传递信息。JWT 的特点是结构简单、轻量化和跨平台支持,适用于用户身份验证、信息加密以及无状态的 API 访问控制…...

计算机网络 (23)IP层转发分组的过程
一、IP层的基本功能 IP层(Internet Protocol Layer)是网络通信模型中的关键层,属于OSI模型的第三层,即网络层。它负责在不同网络之间传输数据包,实现网络间的互联。IP层的主要功能包括寻址、路由、分段和重组、错误检测…...
权限管理的方法
模块化分类 功能模块划分 把人资管理系统按业务逻辑拆分成清晰的功能区,例如招聘管理、培训管理、绩效管理、员工档案管理等。招聘管理模块下还能细分职位发布、简历筛选、面试安排等子功能;员工档案管理涵盖基本信息、教育经历、工作履历录入与查询等。…...

【郑大主办、ACM出版、EI稳定检索】第四届密码学、网络安全与通信技术国际会议 (CNSCT 2025)
第四届密码学、网络安全与通信技术国际会议(CNSCT 2025)将于2025年1月17-19日在中国郑州盛大启幕(线上召开)。本次会议旨在汇聚全球密码学、网络安全与通信技术领域的顶尖学者、研究人员与行业领袖,共同探索计算机科学的最新进展与未来趋势。…...

48小时,搭建一个设备巡检报修系统
背景 时不时的,工地的设备又出了状况。巡检人员一顿懵逼、维修人员手忙脚乱,操作工人抱怨影响进度。老板看着待完成的订单,就差骂娘了:“这么搞下去,还能有效率吗?”。 于是,抱着试一试的心态…...

基于Redisson实现重入锁
一. 分布式锁基础 在分布式系统中,当多个客户端(应用实例)需要访问同一资源时,可以使用分布式锁来确保同一时刻只有一个客户端能访问该资源。Redis作为高性能的内存数据库,提供了基于键值对的分布式锁实现,…...

Java文件操作的简单示例
使用原生库 创建空白文件 package com.company; import java.io.File; import java.io.IOException;public class Main {public static void main(String[] args) {File f new File("newfile.txt");try {boolean flag f.createNewFile();System.out.println(&quo…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...