学习嵌入式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)

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

相关推荐
少年执笔1 小时前
ollama搭建本地模型框架
python·ai
mit6.8241 小时前
从 Vibe Coding 到 Agentic Engineering
人工智能
极光代码工作室1 小时前
基于大数据的校园消费行为分析系统
大数据·hadoop·python·数据分析·spark
ErizJ1 小时前
Linux|学习笔记
linux·笔记·学习
kay_5451 小时前
YOLO26改进| 主干网络 | 提升长距离特征建模与全局上下文理解能力【CVPR】
人工智能·目标检测·计算机视觉·目标跟踪·论文·yolo26·yolo26改进
ting94520001 小时前
Huddle01 VMs 支持 AI 助手一键部署,MCP 协议重塑云基础设施管理
人工智能
地理探险家1 小时前
我整理了一份动物数据集合集,做深度学习的直接省掉80%时间(附使用建议)
人工智能·深度学习·数据集·图像·动物
大数据三康2 小时前
Java字符统计:从输入到输出的完整解析
java·学习·循环结构
硅谷秋水2 小时前
语言智体的Harness工程:Harness层作为控制、智体和运行时
人工智能·深度学习·机器学习·语言模型