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

大家好,我是贺老师,嵌入式 AI 工程师,《嵌入式AI:让单片机学会思考》主理人,专注AI在MCU上的落地实践。

本文中,重点关注学习嵌入式AI需要掌握的Python编程语言的基础知识,包括基本语法、NumPy库的使用以及数据处理的基本概念。这些知识对于后续学习TinyML至关重要。

Python是机器学习领域最流行的编程语言,而NumPy是Python科学计算的核心库。掌握这些基础知识将帮助我们更好地理解和实现TinyML模型。

Python语法基础

变量和数据类型

Python是一种动态类型语言,变量不需要显式声明类型。

python 复制代码
# 基本数据类型示例
# 整数
age = 15
# 浮点数
height = 1.75
# 字符串
name = "小明"
# 布尔值
is_student = True
# 列表
fruits = ["苹果", "香蕉", "橙子"]
# 字典
student = {"name": "小红", "age": 14, "grade": 8}

控制结构

Python使用缩进来定义代码块,而不是大括号

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"这是第{i+1}次循环")
# while循环
count = 0
while count < 3:
    print(f"计数: {count}")
    count += 1

函数定义

函数是组织代码的重要方式,可以提高代码的可读性和复用性。

python 复制代码
# 函数定义示例
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基础

什么是NumPy?

NumPy是Python的一个开源数值计算库,提供了强大的多维数组对象和用于处理这些数组的函数。

在TinyML中,NumPy常用于:

  • 数据预处理和特征工程

  • 实现数学运算和线性代数操作

  • 与机器学习框架(如TensorFlow Lite)交互

NumPy数组

NumPy的核心是ndarray(N维数组)对象。

python 复制代码
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提供了丰富的数组操作函数

python 复制代码
# 数组运算
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项目中,我们通常需要从各种来源加载数据。

python 复制代码
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])

数据清洗

数据清洗是数据处理的重要步骤,包括处理缺失值、异常值等

python 复制代码
# 处理缺失值示例
# 假设我们的数据中有一些缺失值(用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, axis=0)
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)

数据标准化

数据标准化是将数据按比例缩放,使之落入一个小的特定区间。

python 复制代码
# 数据标准化示例
# 使用之前的学生成绩数据
scores = data[:, :3]  # 只取前三列(数学、语文、英语成绩)
print("原始成绩数据:")
print(scores)
# 最小-最大标准化
min_vals = np.min(scores, axis=0)
max_vals = np.max(scores, axis=0)
normalized_scores = (scores - min_vals) / (max_vals - min_vals)
print("最小-最大标准化后的数据:")
print(normalized_scores)
# Z-score标准化
mean_vals = np.mean(scores, axis=0)
std_vals = np.std(scores, axis=0)
z_scores = (scores - mean_vals) / std_vals
print("Z-score标准化后的数据:")
print(z_scores)

因平台推荐规则变化,多点赞和在看**,我们才能常出现在你的推送里。**

相关推荐
fthux4 小时前
装闭 RenoPit 源码解析(09):AnalysisEngine装修闭坑分析主流程
人工智能·ai·开源·github·open source·renopit
敏编程4 小时前
开源项目 NextBand:探索融合健康传感、语音交互与 AI Agent 的下一代可穿戴设备
人工智能
ovO4 小时前
我按下“发送”之后:DeepSeek Harness 如何把一次请求变成 1,177 个增量片段
人工智能·开源·deepseek
2603_965148114 小时前
如何解析JSON数据?API返回的商品信息处理教程
开发语言·数据库·python·自动化·json·api
昨日之日20064 小时前
LTX-2.5:更清晰、更可控、同步音画、多镜头连贯的AI视频神器
人工智能·音视频
九硕智慧建筑一体化厂家5 小时前
数字化管控落地,直流照明构筑安全照明体系
运维·人工智能·笔记·安全·智慧城市
江厌015 小时前
本地部署DeepSeek显卡怎么选?我把显存计算公式和实测记录写下来了
人工智能·百度·联想工作站·代理商推荐·渠道对比·工作站
小席是个热心肠5 小时前
AI相关的自我学习
java·人工智能·学习
FII工业富联科技服务5 小时前
工业AI自治的演进趋势:从内容生成到Agent驱动的工厂运营范式转变
人工智能
云和数据.ChenGuang5 小时前
fastapi的参数剖析
人工智能·深度学习·机器学习·语言模型·状态模式·fastapi