学习嵌入式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 分钟前
第十一章《对齐与安全》 完整学习资料
python·安全·机器学习
晓梦林3 分钟前
bughush靶场学习笔记
笔记·学习
hssfscv3 分钟前
QT的学习记录1
开发语言·qt·学习
Kratzdisteln3 分钟前
【无标题】
前端·python
weixin_446260855 分钟前
[特殊字符] 从弱点中学习:小计算使用智能体的自动领域专业化
人工智能·学习
hakesashou8 分钟前
python文件操作需要导入模块吗
python
sunshine8858 分钟前
2026财务数字化全景图:合规、效率与安全的三角平衡术
人工智能
wuxinyan12310 分钟前
工业级大模型学习之路029:解决双智能体调用数据库报错问题
数据库·人工智能·python·学习·智能体
志栋智能11 分钟前
超越监控:超自动化巡检提供的主动价值
运维·网络·人工智能·自动化
SunnyDays101117 分钟前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel