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

学习嵌入式AI(TInyML),只需掌握这点python基础即可!

大家好我是贺老师嵌入式 AI 工程师《嵌入式AI让单片机学会思考》主理人专注AI在MCU上的落地实践。本文中重点关注学习嵌入式AI需要掌握的Python编程语言的基础知识包括基本语法、NumPy库的使用以及数据处理的基本概念。这些知识对于后续学习TinyML至关重要。Python是机器学习领域最流行的编程语言而NumPy是Python科学计算的核心库。掌握这些基础知识将帮助我们更好地理解和实现TinyML模型。Python语法基础变量和数据类型Python是一种动态类型语言变量不需要显式声明类型。# 基本数据类型示例 # 整数 age 15 # 浮点数 height 1.75 # 字符串 name 小明 # 布尔值 is_student True # 列表 fruits [苹果, 香蕉, 橙子] # 字典 student {name: 小红, age: 14, grade: 8}控制结构Python使用缩进来定义代码块而不是大括号# 条件语句示例 score 85 if score 90: print(优秀) elif score 80: print(良好) elif score 70: print(中等) else: print(需要努力) # 循环语句示例 # for循环 for i in range(5): print(f这是第{i1}次循环) # while循环 count 0 while count 3: print(f计数: {count}) count 1函数定义函数是组织代码的重要方式可以提高代码的可读性和复用性。# 函数定义示例 def greet(name): 这是一个简单的问候函数 return f你好, {name}! def calculate_area(length, width): 计算矩形面积 area length * width return area # 调用函数 message greet(李华) print(message) rectangle_area calculate_area(5, 3) print(f矩形面积: {rectangle_area})NumPy基础什么是NumPyNumPy是Python的一个开源数值计算库提供了强大的多维数组对象和用于处理这些数组的函数。在TinyML中NumPy常用于数据预处理和特征工程实现数学运算和线性代数操作与机器学习框架如TensorFlow Lite交互NumPy数组NumPy的核心是ndarrayN维数组对象。import numpy as np # 创建数组 arr1 np.array([1, 2, 3, 4, 5]) # 一维数组 arr2 np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组 print(一维数组:, arr1) print(二维数组:) print(arr2) print(数组形状:, arr2.shape) print(数组维度:, arr2.ndim) print(数据类型:, arr2.dtype)数组操作NumPy提供了丰富的数组操作函数# 数组运算 a np.array([1, 2, 3]) b np.array([4, 5, 6]) print(a b , a b) # 元素相加 print(a * b , a * b) # 元素相乘 print(a.dot(b) , a.dot(b)) # 点积 # 常用函数 arr np.array([1, 2, 3, 4, 5]) print(最大值:, np.max(arr)) print(最小值:, np.min(arr)) print(平均值:, np.mean(arr)) print(标准差:, np.std(arr)) print(总和:, np.sum(arr)) # 重塑数组 arr_reshape arr.reshape(5, 1) print(重塑后的数组:) print(arr_reshape)NumPy常用函数速查表函数描述示例np.array()创建数组np.array([1, 2, 3])np.zeros()创建全零数组np.zeros((3, 3))np.ones()创建全一数组np.ones((2, 4))np.arange()创建等差数组np.arange(0, 10, 2)np.reshape()改变数组形状arr.reshape(2, 3)np.concatenate()连接数组np.concatenate((a, b))np.sum()计算数组元素和np.sum(arr)np.mean()计算数组平均值np.mean(arr)np.std()计算数组标准差np.std(arr)数据处理基础数据加载与查看在TinyML项目中我们通常需要从各种来源加载数据。import numpy as np # 创建示例数据集 # 假设我们有一个包含学生成绩的数据集 # 列: [数学成绩, 语文成绩, 英语成绩, 总分] data np.array([ [85, 90, 88, 263], [92, 87, 95, 274], [78, 85, 80, 243], [65, 70, 75, 210], [95, 92, 98, 285] ]) print(数据集:) print(data) print(数据集形状:, data.shape) print(前3行数据:) print(data[:3]) print(数学成绩列:) print(data[:, 0])数据清洗数据清洗是数据处理的重要步骤包括处理缺失值、异常值等# 处理缺失值示例 # 假设我们的数据中有一些缺失值用NaN表示 data_with_nan np.array([ [85, 90, 88, 263], [92, np.nan, 95, np.nan], [78, 85, 80, 243], [np.nan, 70, 75, 210], [95, 92, 98, 285] ]) print(包含缺失值的数据:) print(data_with_nan) # 检查缺失值 print(缺失值位置:) print(np.isnan(data_with_nan)) # 填充缺失值使用列平均值 col_mean np.nanmean(data_with_nan, axis0) print(列平均值:, col_mean) # 用列平均值填充缺失值 for i in range(data_with_nan.shape[1]): data_with_nan[np.isnan(data_with_nan[:, i]), i] col_mean[i] print(填充后的数据:) print(data_with_nan)数据标准化数据标准化是将数据按比例缩放使之落入一个小的特定区间。# 数据标准化示例 # 使用之前的学生成绩数据 scores data[:, :3] # 只取前三列数学、语文、英语成绩 print(原始成绩数据:) print(scores) # 最小-最大标准化 min_vals np.min(scores, axis0) max_vals np.max(scores, axis0) normalized_scores (scores - min_vals) / (max_vals - min_vals) print(最小-最大标准化后的数据:) print(normalized_scores) # Z-score标准化 mean_vals np.mean(scores, axis0) std_vals np.std(scores, axis0) z_scores (scores - mean_vals) / std_vals print(Z-score标准化后的数据:) print(z_scores)因平台推荐规则变化多点赞和在看我们才能常出现在你的推送里。

相关文章:

学习嵌入式AI(TInyML),只需掌握这点python基础即可!

大家好,我是贺老师,嵌入式 AI 工程师,《嵌入式AI:让单片机学会思考》主理人,专注AI在MCU上的落地实践。本文中,重点关注学习嵌入式AI需要掌握的Python编程语言的基础知识,包括基本语法、NumPy库…...

UE5启动卡在75%报错?别慌,可能是Rider插件在捣鬼(附卸载与排查指南)

UE5启动卡在75%报错?深度解析Rider插件冲突与系统化解决方案 当你满心期待地双击UE5图标,进度条却无情地卡在75%——这个数字仿佛成了某种诅咒。控制台里喷涌而出的红色错误堆栈中,"RiderSourceCodeAccess"这个关键词反复闪现&…...

SocratiCode:用苏格拉底式提问提升代码逻辑清晰度与健壮性

1. 项目概述:当代码遇到哲学,SocratiCode如何重塑你的编程思维如果你和我一样,在编程这条路上摸爬滚打了十几年,可能经历过这样的时刻:面对一个复杂的业务逻辑,代码越写越乱,注释越加越多&#…...

微软Kernel Memory:开箱即用的RAG文档处理与智能记忆服务

1. 项目概述:从“记忆”到“智能”的桥梁最近在折腾大模型应用开发,尤其是RAG(检索增强生成)这块,发现一个绕不开的核心痛点:如何高效、可靠地处理海量、异构的文档数据,并把它们变成大模型能“…...

档位错配是降 AI 失败的 3 大原因之一——红黑榜出炉。

档位错配是降 AI 失败的 3 大原因之一——红黑榜出炉。 「我跑了排行第一的工具——AI 率反而升高了。是工具骗人吗?」 不是工具骗人。是你档位错配——低档位用了高档位方案,或者高档位用了低档位方案。这一篇给档位错配的 3 大典型场景红黑榜。 档位…...

ZimZ:现代化SSH连接管理工具的设计与实现

1. 项目概述:一个被低估的现代化SSH连接管理工具如果你和我一样,每天需要管理几十甚至上百台服务器,那么“如何高效、安全地连接和管理这些机器”绝对是一个绕不开的痛点。从早期的PuTTY、Xshell,到后来的MobaXterm、Termius&…...

深入学习Linux进程间通信:解析消息队列

目录 引言 一、消息队列的核心本质 什么是消息队列? 核心特性:有边界的数据传输 内核级存储 二、消息队列 vs 你已经学过的 IPC 三、必须掌握的两种消息队列 1. System V 消息队列(老派经典) 2. POSIX 消息队列&#xff0…...

STM32新手避坑指南:用HAL库驱动AT24C02 EEPROM,从接线到读写一气呵成

STM32新手避坑指南:用HAL库驱动AT24C02 EEPROM,从接线到读写一气呵成 第一次用STM32的HAL库操作AT24C02这类I2C接口的EEPROM时,我踩遍了所有能想到的坑——从硬件接线错误到软件时序问题,从地址对齐困扰到跨页写入失败。这篇文章就…...

Prismer Cloud:AI智能体进化引擎与基础设施深度解析

1. 项目概述与核心价值如果你正在构建或使用AI智能体,尤其是那些需要长时间运行、处理复杂任务的Agent,那么你一定遇到过这样的困境:Agent在运行中出错后,下次遇到同样的问题还是会犯同样的错误;多个Agent之间无法共享…...

无线传感器网络(WSN)技术架构与低功耗设计解析

1. 无线传感器网络与普适计算的技术架构解析 在环境监测、智能农业和工业物联网等领域,一种由数十至数千个微型处理单元组成的分布式系统正在改变传统的数据采集方式。这种被称为无线传感器网络(WSN)的技术架构,其核心在于将传感器、处理器和无线通信模块…...

ABAP老鸟才知道的F4搜索帮助“隐藏”技巧:让选择屏幕输入框更智能

ABAP老鸟才知道的F4搜索帮助“隐藏”技巧:让选择屏幕输入框更智能 在SAP系统中,F4搜索帮助是提升用户输入效率的关键功能。但很多开发者止步于基础实现,忽略了让这个功能真正"智能化"的进阶技巧。本文将分享几个实战中验证过的优化…...

DeepSeek R1推理模型实战:思维链提取与应用

摘要:DeepSeek-R1是中国AI的里程碑之作,其显式的思维链(Chain-of-Thought)输出为调试和透明性带来了革命性提升。本文基于browser-use webui的特殊适配代码,讲解如何在浏览器自动化Agent中充分利用R1的推理能力。 一、…...

LLM记忆管理框架:突破上下文限制,实现智能长程对话

1. 项目概述:当大模型拥有“记忆”会怎样?最近在折腾大语言模型应用开发的朋友,估计都绕不开一个核心痛点:上下文长度限制。无论是 OpenAI 的 GPT 系列,还是开源的 Llama、Qwen 等模型,都有一个固定的上下文…...

告别机械凸轮!用STM32F4和EtherCAT实现电子凸轮,附完整C代码与避坑指南

基于STM32F4与EtherCAT的电子凸轮系统实战:从机械到数字化的工业升级 在包装机械、印刷设备、自动化生产线等工业场景中,凸轮机构曾长期占据主导地位。传统机械凸轮通过精密加工的金属轮廓,将旋转运动转化为预设的往复运动轨迹。但随着工业4.…...

液压执行器力控制的强化学习安全框架设计

1. 液压执行器力控制中的强化学习挑战与解决方案液压执行器凭借其高功率密度特性,在工业自动化、工程机械和机器人领域有着广泛应用。然而,这类系统的力控制一直面临三大技术难题:强非线性动力学特性、参数不确定性以及训练过程中的安全性风险…...

NXP S32K-144开发环境搭建与Keil MDK 5调试实战

1. NXP S32K-144开发环境搭建与Keil MDK 5基础配置1.1 硬件准备与开发板特性解析NXP S32K-144评估板搭载Cortex-M4内核,主频高达112MHz,配备256KB Flash和32KB SRAM。开发板上的关键组件包括:板载OpenSDA调试器(基于Kinetis K20 M…...

ARM SME2指令集:多向量浮点运算与性能优化

1. ARM SME2指令集概述在当今处理器架构领域,向量化计算已成为提升性能的关键技术。ARMv9架构引入的SME2(Scalable Matrix Extension 2)指令集代表了向量计算的最新发展方向,特别针对浮点密集型运算进行了深度优化。作为SME的扩展…...

Unity ShaderGraph涂鸦实战:用RenderTexture和笔刷脚本,5分钟给3D模型‘纹身’

Unity ShaderGraph涂鸦实战:用RenderTexture和笔刷脚本,5分钟给3D模型‘纹身’ 想象一下,在游戏开发中为角色添加个性化纹身,或是让玩家在武器上留下独特标记——这种实时交互的涂鸦功能,往往被认为是高级特效的范畴。…...

别再死记硬背了!图解特征值与特征向量:从图像压缩到推荐系统的直观理解

图解特征值与特征向量:从图像压缩到推荐系统的直观理解 数学概念常常因为抽象而令人望而生畏,但当我们用生活中的例子来理解它们时,这些概念就会变得生动起来。想象一下,你正在整理衣柜——你会把相似的衣服放在一起,把…...

混合信号音频系统设计:集成化与性能优化

1. 混合信号音频系统的设计哲学在当代便携设备设计中,音频子系统正面临前所未有的挑战。我经手过的智能手机项目中,音频电路往往要处理至少12种不同的信号路径——从蜂窝通信的窄带语音到高保真音乐播放,再到游戏音效和视频会议音频。传统分立…...

新手秒懂timed_out:在快马平台动手实验,掌握超时机制第一课

今天在学网络请求时遇到了一个让我头疼的概念——timed_out(超时)。作为一个刚入门的新手,这个概念听起来很抽象,但通过InsCode(快马)平台的交互式实验,我终于搞明白了它的原理和应用场景。下面分享我的学习笔记&#…...

Arm Corstone SSE-310中断系统与UART驱动开发实战

1. Arm Corstone SSE-310中断系统架构解析Corstone SSE-310作为Arm推出的子系统解决方案,其中断控制器设计继承了Cortex-M系列处理器的NVIC(Nested Vectored Interrupt Controller)架构,同时针对FPGA扩展场景进行了专门优化。Cort…...

ESP32全链路硬件开发框架:JTAG统一接口与AI自动化调试实践

1. 项目概述:为AI编码助手打造的ESP32全链路硬件开发框架如果你和我一样,长期在嵌入式开发的一线摸爬滚打,那你一定对“烧录-调试-修改-再烧录”这个循环深恶痛绝。每次修改一行代码,都要经历编译、连接调试器、打开串口监视器、复…...

别只当文献管理器!VOSviewer实战:用ESN案例教你一眼看穿学术江湖的派系与大佬

学术江湖的派系解码:用VOSviewer透视ESN领域的研究版图 当你第一次踏入回声状态网络(ESN)的研究领域时,是否曾感到迷茫?面对海量文献,如何快速识别这个"学术江湖"中的关键人物、核心团队和前沿方向?这就像初…...

从iris数据集到你的数据:手把手复现ggplot2显著性检验组合图,避坑geom_jitter与stat_compare_means

从经典案例到实战迁移:ggplot2显著性检验组合图的深度避坑指南 第一次在R中成功复现教程里的iris数据集可视化时,那种成就感就像解开了一道数学难题。但当你兴冲冲地把代码套用到自己的实验数据上,突然跳出的错误提示和扭曲的图表布局&#x…...

2025最权威的五大AI写作助手推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在数字化内容创作里头,AI生成的文本常常会被检测工具给识别出来。为了能够降低人…...

别再只知道“自动对焦”了!手机拍照的PDAF、CDAF和激光对焦,到底哪个更快更准?

别再只知道“自动对焦”了!手机拍照的PDAF、CDAF和激光对焦,到底哪个更快更准? 每次用手机拍照时,你是否遇到过这样的场景:想抓拍奔跑的宠物,结果画面糊成一片;在餐厅昏暗灯光下自拍&#xff0c…...

基于RAG的本地PDF智能问答系统:从原理到工程实践

1. 项目概述:当你的PDF文档库有了“智能大脑”最近在折腾本地知识库和智能问答的朋友,估计对RAG(检索增强生成)这个词已经不陌生了。简单来说,它就像一个给大语言模型(LLM)配的“外挂知识库”&a…...

嵌入式固件更新:微编程器架构与S-record解析实战

1. 嵌入式固件更新的核心挑战与解决方案在嵌入式系统开发领域,固件更新功能的设计一直是个令人头疼的问题。想象一下这样的场景:你开发的工业控制器已经部署在数百公里外的工厂里,突然发现了一个关键的安全漏洞需要修复。如果没有可靠的远程更…...

GodotSteam集成指南:从开源引擎到Steam平台发布全流程

1. 项目概述:当开源游戏引擎遇见全球最大PC游戏平台如果你是一位独立游戏开发者,或者对游戏开发感兴趣,正在使用或考虑使用Godot这款轻量级、开源的游戏引擎,那么你迟早会面临一个现实问题:如何将你的游戏发布到Steam上…...