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

PandasAI:对话式数据分析新时代

PandasAI:对话式数据分析新时代

  • 引言
  • 项目概述分析
    • 基本信息
  • 核心功能详解
    • 1. 自然语言查询处理
    • 2. 数据可视化生成
    • 3. 多数据源集成分析
    • 4. 安全沙箱执行
    • 5. 云平台协作功能
  • 安装和使用教程
    • 1.环境要求
    • 2.安装步骤
    • 3.基本使用方法
    • 4.切换其他LLM
  • 应用场景和实际价值
    • 1.适用业务场景
    • 2.与类似项目的优势对比
    • 3.实际应用价值效益
    • 4.局限性与注意事项
  • 结论

引言

在当今数据驱动的世界中,数据分析工具的效率和易用性变得尤为重要。传统的数据分析方法往往需要专业的编程知识和对特定库语法的熟悉,这对非技术用户构成了障碍。PandasAI 应运而生,它将自然语言处理与数据分析完美结合,使得与数据的交互变得像日常对话一样简单。本文将深入探讨这个由 Sinaptik AI 团队开发的开源项目,分析其核心功能、技术原理及实际应用价值,帮助读者了解如何利用 PandasAI 提升数据分析效率。

pandas-ai-log

项目概述分析

PandasAI 是一个基于 Python 的开源平台,旨在通过自然语言处理技术使数据分析变得更加直观和会话化。截至目前,该项目在 GitHub 上已获得约 19.9K 的 Star 和 1.9K 的 Fork,显示出其在开发者社区中的受欢迎程度。

基本信息

  • 项目名称:PandasAI
  • 项目地址:https://github.com/sinaptik-ai/pandas-ai
  • 创建者:sinaptik-ai
  • 开源许可证:MIT Expat 许可证
  • GitHub 数据:19.9k Stars,1.9k Forks(截止到20250505)
  • 编程语言:Python
  • 使用文档:https://docs.getpanda.ai/v3/introduction
  • 官方介绍:Chat with your database or your datalake (SQL, CSV, parquet). PandasAI makes data analysis conversational using LLMs and RAG.。

项目主页

PandasAI 的架构设计围绕着将用户的自然语言查询转换为对数据的操作。该项目最新的稳定版本为 v2.4.2(v3.0.0还处于Beta 版本),项目团队正在持续更新和改进功能。项目的核心理念是让数据分析变得会话化,让无论是技术还是非技术用户都能以自然语言与数据进行交互。

核心功能详解

1. 自然语言查询处理

PandasAI 的核心优势在于它能够理解并执行自然语言形式的数据查询。用户只需用日常语言提出问题,如"哪些国家的销售额最高?“或"计算前三名国家的总销售额”,PandasAI 便能解析这些指令,将其转换为相应的数据操作,并返回结果。

这一功能背后是先进的 LLM 技术。PandasAI 默认使用 BambooLLM(由 PandasAI 团队开发的专为数据分析设计的语言模型),但也支持集成其他大语言模型。系统能够理解复杂的查询意图,进行上下文推理,并生成精确的 Python 代码来执行相应操作。

import pandasai as pai# 创建示例 DataFrame
df = pai.DataFrame({"country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"],"revenue": [5000, 3200, 2900, 4100, 2300, 2100, 2500, 2600, 4500, 7000]
})# 设置 API 密钥
pai.api_key.set("your-pai-api-key")# 提问
df.chat('Which are the top 5 countries by sales?')
# 输出: 
#          country  revenue
#0           China     7000
#1   United States     5000
#2           Japan     4500
#3         Germany     4100
#4  United Kingdom     3200# 提出更复杂的问题
df.chat("What is the total sales for the top 3 countries by sales?")
# 输出: The total sales for the top 3 countries by sales is 16500.

2. 数据可视化生成

除了文本形式的回答,PandasAI 还能根据自然语言指令生成数据可视化图表。用户只需描述所需的图表类型和要展示的数据,PandasAI 便会自动生成相应的可视化结果。这一功能大大简化了数据可视化过程,让用户无需编写复杂的绘图代码。

# 生成可视化图表
df.chat("Plot the histogram of countries showing for each one the revenue. Use different colors for each bar",
)
# 系统会生成一个彩色柱状图,展示各国收入情况

3. 多数据源集成分析

PandasAI 支持同时分析多个数据帧,并能够理解它们之间的关系。这使得用户可以提出跨数据集的复杂问题,而无需手动执行数据合并或关联操作。

employees_data = {'EmployeeID': [1, 2, 3, 4, 5],'Name': ['John', 'Emma', 'Liam', 'Olivia', 'William'],'Department': ['HR', 'Sales', 'IT', 'Marketing', 'Finance']
}salaries_data = {'EmployeeID': [1, 2, 3, 4, 5],'Salary': [5000, 6000, 4500, 7000, 5500]
}employees_df = pai.DataFrame(employees_data)
salaries_df = pai.DataFrame(salaries_data)# 跨数据集查询
pai.chat("Who gets paid the most?", employees_df, salaries_df)
# 输出: Olivia gets paid the most.

4. 安全沙箱执行

考虑到数据安全问题,PandasAI 提供了 Docker 沙箱执行环境,可以在隔离的环境中安全地执行代码,有效防止恶意代码攻击。这一功能特别适合企业环境或需要处理敏感数据的场景。

import pandasai as pai
from pandasai_docker import DockerSandbox# 初始化沙箱
sandbox = DockerSandbox()
sandbox.start()# 使用沙箱执行查询
pai.chat("Who gets paid the most?", employees_df, salaries_df, sandbox=sandbox)# 使用完毕后停止沙箱
sandbox.stop()

5. 云平台协作功能

PandasAI 提供了云平台功能,支持团队协作分析数据。用户可以将数据集上传到平台,团队成员可以通过自然语言查询访问这些数据,这大大促进了数据分析的民主化和团队协作效率。

import pandasai as paipai.api_key.set("your-pai-api-key")file = pai.read_csv("./filepath.csv")dataset = pai.create(path="your-organization/dataset-name",df=file,name="dataset-name",description="dataset-description")dataset.push()

安装和使用教程

1.环境要求

  • Python 版本:3.8+ ❤️.12
  • 依赖库:pandas、相关 LLM 和 NLP 库

2.安装步骤

PandasAI 可以通过 pip 或 poetry 进行安装:

使用 pip:

# 注意可能与matplotlib不兼容,可提前卸载
pip install "pandasai>=3.0.0b2"

使用 poetry:

poetry add "pandasai>=3.0.0b2"

对于需要安全沙箱的用户,还需安装 Docker 包:

pip install "pandasai-docker"

3.基本使用方法

导入库并设置 API 密钥

import pandasai as pai# 设置 API 密钥(可在 https://app.pandabi.ai 注册获取)
pai.api_key.set("your-pai-api-key")

注册账号之后,每月有免费使用次数。

获取api-key

创建或加载数据

# 创建示例数据
df = pai.DataFrame({"name": ["John", "Mary", "Bob", "Alice"],"age": [25, 30, 35, 40],"salary": [50000, 60000, 70000, 80000]
})# 或从文件加载数据
df = pai.read_csv("your_data.csv")

使用自然语言提问

result = df.chat("What is the average salary of people over 30?")
print(result)

What is the average salary of people over 30

生成可视化

df.chat("Create a bar chart showing the salary of each person")

可在 exports\charts\ 目录下查看生成的图表:

生成可视化

4.切换其他LLM

安装 Pandasai-litellm 扩展:

# Using poetry
poetry add pandasai-litellm# Using pip
pip install pandasai-litellm

LiteLLM 支持但不限于以下 LLM,详情见https://docs.litellm.ai/docs/providers:

  • OpenAI (gpt-3.5-turbo, gpt-4, etc.)
  • Anthropic (claude-2, claude-instant-1, etc.)
  • Google (gemini-pro, palm2, etc.)
  • Azure OpenAI
  • AWS (Bedrock, SageMaker)
  • Mistral AI
  • Cohere
  • Hugging Face

只需要代码中添加几行代码设置 LLM 即可切换 deepseek 大模型:

import os
import pandasai as pai
from pandasai_litellm import LiteLLM# Set your API keys as environment variables
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"# Example with deepseek
llm = LiteLLM(model="deepseek/deepseek-chat")# Set your LLM configuration
pai.config.set({"llm": llm})

切换deepseek

应用场景和实际价值

1.适用业务场景

  1. 数据探索和分析:研究人员和数据分析师可以更快地探索新数据集,通过自然语言提问深入了解数据特征。
  2. 业务报告生成:业务用户可以直接通过自然语言获取关键业务指标,无需掌握复杂的数据查询语言。
  3. 数据可视化:快速生成数据可视化图表,支持决策制定和数据展示。
  4. 团队协作分析:团队成员可以在同一数据集上进行协作分析,共享洞察。
  5. 教育场景:教育工作者可以使用 PandasAI 简化数据科学教学,让学生专注于数据分析思维而非复杂语法。

2.与类似项目的优势对比

相比传统的数据分析工具,PandasAI 具有以下优势:

  1. 降低技术门槛:用户无需掌握复杂的 Pandas 语法和数据操作方法,只需用自然语言表达分析需求。
  2. 提高效率:即使是专业数据分析师,也能通过自然语言快速执行复杂查询,节省编写代码的时间。
  3. 增强数据可访问性:使非技术背景的业务人员能够直接与数据交互,促进数据驱动决策。
  4. 安全性:提供沙箱执行环境,确保代码安全执行,防止恶意攻击。

3.实际应用价值效益

  1. 提高数据分析效率:通过自然语言查询,分析师可以将更多精力集中在数据解释和决策上,而非编写代码。
  2. 促进数据民主化:让更多非技术人员能够参与数据分析过程,打破数据孤岛。
  3. 加速洞察发现:快速生成可视化和统计分析,帮助用户更快地发现数据中的模式和趋势。
  4. 降低学习成本:减少学习专业数据分析语言的时间投入,加速技能获取。

4.局限性与注意事项

  1. 模型回答准确性:尽管 PandasAI 强大,但仍可能存在理解错误或生成不准确结果的情况,用户需要对关键结果进行验证。
  2. 复杂查询处理:对于极其复杂的数据查询,可能仍需要专业人员介入或手动编写代码。
  3. 依赖 API 密钥:默认使用 BambooLLM 需要 API 密钥,这可能对某些用户构成限制。
  4. 处理超大数据集:在处理极大规模数据集时,可能面临性能挑战。

结论

PandasAI 代表了数据分析工具的重要发展方向——会话式数据分析。通过将先进的 LLM 技术与传统数据分析工具相结合,PandasAI 不仅提高了数据分析的效率,还显著降低了数据分析的技术门槛,让各行各业的用户都能轻松与数据对话。

在数据爆炸的时代,PandasAI 这类工具的价值在于它们能够帮助我们更民主、更高效地从数据中提取洞察。随着项目的不断发展和完善,我们可以期待 PandasAI 在未来为更多数据分析场景提供强大支持,进一步推动数据分析的民主化和智能化进程。

对于想要探索 PandasAI 的开发者和数据分析师,这是一个值得学习和关注的项目,它不仅可以提升工作效率,还能启发我们思考人工智能与数据分析结合的更多可能性。

相关文章:

PandasAI:对话式数据分析新时代

PandasAI:对话式数据分析新时代 引言项目概述分析基本信息 核心功能详解1. 自然语言查询处理2. 数据可视化生成3. 多数据源集成分析4. 安全沙箱执行5. 云平台协作功能 安装和使用教程1.环境要求2.安装步骤3.基本使用方法4.切换其他LLM 应用场景和实际价值1.适用业务…...

全球化电商平台AWS云架构设计

业务需求&#xff1a; 支撑全球三大区域&#xff08;北美/欧洲/亚洲&#xff09;用户访问&#xff0c;延迟<100ms处理每秒50,000订单的峰值流量混合云架构整合本地ERP系统全年可用性99.99%满足GDPR和PCI DSS合规要求 以下是一个体现AWS专家能力的全球化电商平台架构设计方…...

Linux 怎么使用局域网内电脑的网络访问外部

一次性 export http_proxy"http://192.168.0.188:7890" export https_proxy"http://192.168.0.188:7890"一直生效 写入 ~/.bashrc&#xff08;或 ~/.bash_profile&#xff09; nano ~/.bashrc加入这一行&#xff1a; export http_proxy"http://19…...

Python-numpy中ndarray对象创建,数据类型,基本属性

numpy库 numpy中的数据结构ndarrayndarray中的dtypendarray中的dtype的指定方式创建ndarray及指定dtype从列表创建ndarray使用 np.empty(), np.zeros(), np.ones() 和 np.full() 创建特定值的数组使用 np.arange() 创建等差数列数组使用 np.linspace() 创建等差数组使用np.logs…...

Python从入门到高手8.2节-元组的常用操作符

目录 ​8.2.1 元组的常用操作符 8.2.2 []操作符: 索引访问元组 8.2.3 [:]操作符&#xff1a;元组的切片 8.2.4 操作符&#xff1a;元组的加法 8.2.5 *操作符&#xff1a;元组的乘法 8.2.6 元组的关系运算 8.2.7 in操作符&#xff1a;查找元素 8.2.8 五一她玩了个狗吃…...

Python内置函数

Python作为一门简洁强大的编程语言&#xff0c;提供了丰富的内置函数&#xff08;Built-in Functions&#xff09;&#xff0c;这些函数无需导入任何模块即可直接使用。本文将介绍Python中最常用、最重要的内置函数&#xff0c;帮助初学者快速掌握这些强大的工具。 官方地址&a…...

一款基于 .NET 开源的多功能的 B 站视频下载工具

前言 哔哩哔哩&#xff08;B站&#xff09;是一个知名的视频学习平台&#xff0c;作为程序员而言这是一个非常值得推荐的网站。今天大姚给大家推荐一款基于 .NET 开源的多功能的 B 站视频下载工具&#xff1a;downkyi。 项目介绍 downkyi&#xff08;哔哩下载姬&#xff09;…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 5.2 数据分组与透视&#xff1a;CUBE/ROLLUP/GROUPING SETS深度解析5.2.1 数据准备与分析目标数据集与表结构分析目标 5.2.2 ROLLUP&#xff1a;层级化分组汇总功能与语法示…...

20、数据可视化:魔镜报表——React 19 图表集成

一、魔镜的预言本质 "数据可视化是霍格沃茨的预言水晶球&#xff0c;将混沌的数据星尘转化为可解读的命运轨迹&#xff01;" 魔法部占卜司官员挥舞魔杖&#xff0c;Echarts与Three.js的图表矩阵在空中交织成动态星图。 ——基于《国际魔法联合会》第9号可视化协议&a…...

笔记本电脑升级计划(2017———2025)

ThinkPad T470 (2017) vs ThinkBook 16 (2025) 完整性能对比报告 一、核心硬件性能对比 1. CPU性能对比&#xff08;i5-7200U vs Ultra9-285H&#xff09; 参数i5-7200U (2017)Ultra9-285H (2025)提升百分比核心架构2核4线程 (Skylake)16核16线程 (6P8E2LPE)700%核心数制程工…...

Flutter——数据库Drift开发详细教程(四)

目录 参考正文表达式1.比较2.布尔代数3.算术BigIn 4.空值检查6.日期和时间7.IN和NOT IN8.聚合函数&#xff08;例如 count 和 sum&#xff09;8.1比较8.2算术8.4计数8.5group_concat8.9窗口函数 9.数学函数和正则表达式10.子查询10.1 标量子查询10.2 isInQuery10.3 存在10.4完整…...

android-ndk开发(6): 查看反汇编

android-ndk开发(6): 查看反汇编 2025/05/05 1. 概要 android-ndk 是基于 clang 的工具链&#xff0c; clang 则保持了和 gcc 的高度兼容。 在 Linux 开发机上&#xff0c; GCC 套件里的 objdump 提供了反汇编的功能。 实际上 android-ndk 也提供了一份 objdump&#xff0c;…...

浅析AI大模型为何需要向量数据库?【入门基础】

文章目录 引言&#xff1a;大模型时代的存储挑战一、向量数据库&#xff1a;大模型的"海马体"1.1 什么是向量数据库&#xff1f;1.2 为什么大模型离不开向量数据库&#xff1f;(1) 嵌入(Embedding)的本质(2) 突破上下文窗口限制 二、相似性度量&#xff1a;欧氏距离与…...

Java面试:微服务与大数据场景下的技术挑战

面试对话场景 第一轮&#xff1a;基础知识考察 面试官&#xff1a;谢先生&#xff0c;您能简单介绍一下Java SE 8的新特性吗&#xff1f; 谢飞机&#xff1a;当然&#xff0c;Java SE 8引入了Lambda表达式、Stream API和新的日期时间API&#xff0c;大大简化了代码编写。 面…...

[前端]异步请求的竞态问题

竞态条件简介 遇到的问题 切换标签请求数据&#xff0c;但又快速切换标签请求数据&#xff0c;展示的是前一个标签的数据&#xff0c; 需要在切换标签时添加取消请求的机制&#xff0c;使用AbortController来取消正在进行的请求。当用户快速切换标签时&#xff0c;取消之前的请…...

【PDF拆分+提取内容改名】批量拆分PDF提取拆分后的每个PDF物流面单数据改名或导出表格,基于WPF的PDF物流面单批量处理方案

应用场景 物流行业每天需要处理大量包含物流面单的PDF文件,这些文件通常包含运单号、收发货人信息、货物详情等重要数据。传统手动处理方式效率低下且容易出错。本方案通过WPF实现一个自动化工具,能够: 批量拆分多页PDF为单页文件提取每页面单中的关键信息(如运单号、收件人…...

adb无线调试步骤

环境&#xff1a; macOS&#xff1b; 换成 linux 或 windows 也支持的小米15 Pro&#xff1b; 换成其他 android 手机也支持的 电脑和手机接入相同Wifi在电脑上&#xff0c;确保安装了 adb 对于 Android 开发者&#xff0c; 一般是是通过 Android Studio 安装对于 ndk 开发者…...

RocketMQ与Kafka的区别

文章目录 相同之处不同之处存储形式性能对比传输系统调用存储可靠性单机支持的队列数延时消息消息重复消息过滤消息失败重试死信队列 DLQ回溯消息分布式事务服务发现开发语言友好性开源社区活跃度商业支持成熟度 总结Kafka 和 RocketMQ 怎么选&#xff1f; 本文参考&#xff1a…...

剥开 MP4 的 千层 “数字洋葱”:从外到内拆解通用媒体容器的核心

在当今数字化时代&#xff0c;MP4 格式随处可见&#xff0c;无论是在线视频、手机拍摄的短片&#xff0c;还是从各种渠道获取的音频视频文件&#xff0c;MP4 都占据着主流地位。它就像一个万能的 “数字媒体集装箱”&#xff0c;高效地整合和传输着各种视听内容。接下来&#x…...

设计模式(结构型)-组合模式

定义 组合模式的定义为&#xff1a;将对象组合成树形结构以表示 “部分 - 整体” 的层次结构&#xff0c;并且使得用户对单个对象和组合对象的使用具有一致性。其最关键的实现要点在于&#xff0c;简单对象和复合对象必须实现相同的接口&#xff0c;这一特性正是组合模式能够对…...

使用 IDEA + Maven 搭建传统 Spring MVC + Thymeleaf 项目的详细步骤

使用 IDEA Maven 搭建传统 Spring MVC Thymeleaf 项目 环境准备步骤 1&#xff1a;创建 Maven 项目步骤 2&#xff1a;添加依赖&#xff08;pom.xml&#xff09;步骤 3&#xff1a;配置 web.xml步骤 4&#xff1a;Spring 配置类&#xff08;Java Config&#xff09;步骤 5&am…...

「Mac畅玩AIGC与多模态19」开发篇15 - 判断节点与工具节点联动示例

一、概述 本篇在引入工具节点的基础上&#xff0c;进一步结合判断节点&#xff08;条件分支&#xff09;&#xff0c;实现根据用户输入内容动态控制是否调用外部接口。通过构建“用户是否需要天气信息”的条件逻辑&#xff0c;开发人员将掌握如何在 Dify 工作流中通过条件判断…...

docker 外部能访问外网,内部不行(代理问题)

如果宿主机访问外网依赖代理&#xff08;比如 http_proxy 环境变量&#xff09;&#xff0c;容器默认不会继承。需要显式传入代理&#xff1a; docker run -e http_proxy... -e https_proxy... ...在 docker-compose 中配置 HTTP/HTTPS 代理 version: 3 services:app:image: …...

模糊控制理论(含仿真)

本文讲解模糊控制理论、设计步骤以及案例。 1. 模糊控制原理&#xff1a; 模糊控制&#xff08;Fuzzy Control&#xff09;是一种基于模糊逻辑推理的人类经验规则实现的控制方法&#xff0c;适用于对系统模型不精确或难以建立精确数学模型的复杂系统。它利用“如果…那么…”&…...

《 C++ 点滴漫谈: 三十六 》lambda表达式

一、引言 在 C98 和 C03 时代&#xff0c;尽管 C 拥有强大的泛型编程能力和丰富的面向对象特性&#xff0c;但在表达局部逻辑、回调行为或一次性函数处理时&#xff0c;程序员却常常需要冗长的代码来定义函数对象&#xff08;functor&#xff09;&#xff0c;或者使用函数指针…...

【C/C++】函数模板

&#x1f3af; C 学习笔记&#xff1a;函数模板&#xff08;Function Template&#xff09; 本文是面向 C 初学者的函数模板学习笔记&#xff0c;内容包括基本概念、定义与使用、实例化过程、注意事项等&#xff0c;附带示例代码&#xff0c;便于理解与复现。 &#x1f4cc; 一…...

电赛经验分享——模块篇

1、前言 打算在这一个专栏中&#xff0c;分享一些本科控制题电赛期间的经验&#xff0c;和大家共同探讨&#xff0c;也希望能帮助刚刚参加电赛的同学&#xff0c;了解一些基本的知识。一些见解和看法可能不同或有错误&#xff0c;欢迎批评指正。 在本文中&#xff0c;主要介绍笔…...

LeetCode 热题 100 70. 爬楼梯

LeetCode 热题 100 | 70. 爬楼梯 大家好&#xff0c;今天我们来解决一道经典的动态规划入门题——爬楼梯。这道题在LeetCode上被标记为简单难度&#xff0c;要求我们计算爬到第n阶楼梯的不同方法数&#xff0c;每次可以爬1或2个台阶。下面我将详细讲解解题思路&#xff0c;并附…...

浔川AI测试版内测报告

浔川AI测试版内测报告 一、引言 本次对浔川AI测试版进行内测&#xff0c;旨在全面评估其功能表现与性能状况&#xff0c;为后续的优化升级及正式上线提供有力依据。 二、测试环境 1. 硬件环境&#xff1a;[Windows 10】 2. 软件环境&#xff1a;操作系统为【核桃编程]&#xff…...

Leetcode刷题记录31——旋转图像

题源&#xff1a;https://leetcode.cn/problems/rotate-image/description/?envTypestudy-plan-v2&envIdtop-100-liked 题目描述&#xff1a; 思路一&#xff1a; &#x1f4a1; 解题思路&#xff1a;分两步完成旋转 虽然“直接旋转”看起来有点抽象&#xff0c;但我们…...

攻防世界-php伪协议和文件包含

fileinclude 可以看到正常回显里面显示lan参数有cookie值表示为language 然后进行一个判断&#xff0c;如果参数不是等于英语&#xff0c;就加上.php&#xff0c;那我们就可以在前面进行注入一个参数&#xff0c;即flag&#xff0c; payload&#xff1a;COOKIE:languageflag …...

[C++] 小游戏 决战苍穹

大家好&#xff0c;各位看到这个标题&#xff0c;斗破苍穹什么时候改叫决战苍穹了&#xff1f;其实&#xff0c;因为版权等一系列问题&#xff0c;斗破苍穹正式改名为决战苍穹&#xff0c;这个版本主要更新内容为解决了皇冠竞技场太过影响游戏平衡&#xff0c;并且提高了一些装…...

项目成本管理_挣得进度ES

在项目成本管理的新实践中&#xff0c; 通过挣值管理(EVM) 的扩展&#xff0c;引入 挣得进度ES 这一概念&#xff0c; ES是EVM理论和实践的延伸&#xff0c;挣得进度理论用ES和实际时间(AT) 替代了传统EVM所使用的进度偏差测量指标SV(挣值—计划价值)。 使用这种替代方法计算…...

矩阵快速幂 快速求解递推公式

文章目录 习题790.多米诺和托米诺平铺 对于一个给定的递推公式&#xff0c;例如dp[i] dp[i-1] * a dp[i-2] * b,那么常用的做法&#xff0c;肯定是使用o(n)的时间复杂度进行线性求解&#xff0c;但是如果 n 10 18 n{10}^{18} n1018&#xff0c;那么肯定超时的&#xff0c;这…...

驱动开发硬核特训 · Day 28(上篇):pinctrl 子系统详解与实战分析

&#x1f4c5; 日期&#xff1a;2025-05-05 &#x1f4da; 技术平台&#xff1a;嵌入式Jerry&#xff08;B站&#xff09; 一、引言 在嵌入式系统中&#xff0c;SoC 芯片的引脚通常具有多种功能&#xff0c;如 GPIO、UART、I2C、SPI 等。为了在不同的应用场景中灵活配置引脚功…...

20250505下载VLC for Android

20250505下载VLC for Android 2025/5/5 14:35 缘起&#xff1a;做Rockchip的RK3566的Android13下的跨网段PING。 酷芯的图传网段 和 softAP/以太网RJ45共享网段之间互相PING通。 图传的原厂/供应商说可以使用ffmpeg进行rtsp流的转发。 后来确认VLC for Android版本只有接受流&a…...

Jetpack Compose 响应式布局实战:BoxWithConstraints 完全指南

深入理解 Jetpack Compose 中的 BoxWithConstraints 前言 在构建现代 Android 应用时&#xff0c;响应式设计已成为必不可少的要求。Jetpack Compose 作为 Android 的现代 UI 工具包&#xff0c;提供了 BoxWithConstraints 这一强大组件&#xff0c;帮助我们轻松创建能够适应…...

ZYNQ笔记(十七):IP核封装与接口定义

版本&#xff1a;Vivado2020.2&#xff08;Vitis&#xff09; 任务&#xff1a;将“HDMI彩条显示实验”&#xff08;正点原子 ZYNQ FPGA 开发视频&#xff09;中所实现的 RGB2DVI 模块封装成一个 IP 核。 目录 一、介绍 &#xff08;1&#xff09;IP核 &#xff08;2&#x…...

学习笔记msp430f5529lp

注&#xff1a;本文仅用于个人学习使用&#xff0c;记录笔记。 学习视频msp430f5529库函数入门教程 00.序言_哔哩哔哩_bilibili 向大佬致敬理工男小帅-CSDN博客 CCS环境快捷键使用 代码注释&#xff1a;Ctrl/ 提示/补全: CtrlShiftC 放大:Ctrl 缩小:Ctrl- 切换选择模式&…...

人工智能应用:从技术突破到生态重构的演进之路

一、人工智能的发展历程&#xff1a;从符号主义到通用智能探索 人工智能&#xff08;AI&#xff09;的发展始于20世纪中叶&#xff0c;其历程可划分为四个关键阶段&#xff1a; ​符号主义与早期探索&#xff08;1950s-1970s&#xff09;​​ 以逻辑推理和专家系统为核心&…...

【ZYNQ Linux移植】4-内核移植

文章目录 0 写在前面1 内核源码的文件结构2 Linux内核移植2.1 移植配置文件2.2 移植设备树2.3 创建脚本进行编译2.4 备份相关文件 3 测试4 总结5 参考资料 0 写在前面 这是一个系列博客&#xff0c;详细介绍如何在 ZYNQ 与 ZYNQ MP 平台上如何移植 Linux 系统。目前网络上的大部…...

代码随想录算法训练营第三十二天

LeetCode/卡码网题目: 518. 零钱兑换 II377. 组合总和 Ⅳ790. 多米诺和托米诺平铺(每日一题)57. 爬楼梯&#xff08;第八期模拟笔试&#xff09; 其他: 今日总结 往期打卡 背包问题特点: 滚动数组背包遍历顺序 完全背包从小到大,即基于当前物品更新过的继续更新01背包从大到…...

java CompletableFuture 异步编程工具用法1

1、测试异步调用&#xff1a; static void testCompletableFuture1() throws ExecutionException, InterruptedException {// 1、无返回值的异步任务。异步线程执行RunnableCompletableFuture.runAsync(() -> System.out.println("only you"));// 2、有返回值的异…...

Spring Boot 集成 Solr 的详细步骤及示例

环境准备 安装 Solr &#xff1a;从 Solr 官网&#xff08;Welcome to Apache Solr - Apache Solr&#xff09;下载并安装最新版本&#xff0c;然后通过命令 bin/solr start 启动 Solr 服务&#xff0c;使用 bin/solr create -c mycore 创建一个新的 Solr 核心。 安装 JDK &am…...

Nemotron-Research-Tool-N1 如何提升大语言模型工具使用能力?

Nemotron-Research-Tool-N1如何提升大语言模型工具使用能力&#xff1f; 如今&#xff0c;大语言模型&#xff08;LLMs&#xff09;发展迅猛&#xff0c;给它配备外部工具成为研究热点。但传统方法存在不少问题。这篇论文提出的Nemotron-Research-Tool-N1系列模型带来新突破&a…...

OpenCV进阶操作:图像直方图、直方图均衡化

文章目录 一、图像直方图二、图像直方图的作用三、使用matplotlib方法绘制直方图2.使用opencv的方法绘制直方图&#xff08;划分16个小的子亮度区间&#xff09;3、绘制彩色图像的直方图 四、直方图均衡化1、绘制原图的直方图2、绘制经过直方图均衡化后的图片的直方图3、自适应…...

Android控件VideoView用法

一 控件UI <VideoViewandroid:id="@+id/videoView"android:layout_width="match_parent"android:layout_height="match_parent"android:scaleType="fitCenter" /> 二 配置 <?xml version="1.0" encoding="u…...

人工智能数学基础(十)—— 图论

图论作为数学的重要分支&#xff0c;为人工智能提供了强大的建模和分析工具。无论是社交网络分析、路径规划还是数据结构设计&#xff0c;图论都发挥着不可替代的作用。今天&#xff0c;我将带领大家深入浅出地探索图论的核心概念&#xff0c;并结合 Python 实例&#xff0c;让…...

深入探索Anthropic Claude与Spring AI的融合应用

深入探索Anthropic Claude与Spring AI的融合应用 前言 在人工智能的蓬勃发展进程中&#xff0c;自然语言处理领域不断涌现出强大的模型和工具。Anthropic Claude系列基础AI模型凭借其出色的性能&#xff0c;在各种应用场景中展现出巨大潜力&#xff0c;为开发者和企业提供了丰…...

Python爬虫实战:获取优美图库各类高清图片,为用户提供设计素材

一、引言 在互联网时代,高清壁纸资源丰富多样,而优美图库作为一个提供大量精美壁纸的网站,吸引了众多用户。通过 Python 爬虫技术,可以自动化地从该网站获取所需的壁纸资源,为用户节省时间和精力。然而,网站通常会采取反爬措施来防止数据被恶意抓取,因此需要在爬虫程序…...