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

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

相关推荐
T型码农要学习1 小时前
开源项目5|FileBrowser:免费在线文件管理器!随时随地管控服务器文件
运维·服务器·人工智能·开源
Sylvia33.1 小时前
LOL实时数据接入深度解析:从WebSocket到完整数据模型
java·网络·python·websocket·网络协议
梦想不只是梦与想1 小时前
Web 服务器网关协议:ASGI 和 WSGI
服务器·python·fastapi
智恒百亿1 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能
小弥儿3 小时前
开源 VoiceStudio,声音克隆|配音|有声书一站式本地完成
学习·开源·github
ai小陈3 小时前
PyTorch DataLoader数据加载性能排查:GPU利用率低的实操指南
人工智能·pytorch·python·深度学习·ai·gpu算力
测试者家园5 小时前
为什么意图驱动测试是自动化测试的下一站,而不是替代品
自动化测试·软件测试·人工智能·持续测试·ai赋能·智能化测试·软件测试变革
点心的游戏开发世界6 小时前
Unity C# 脚本学习笔记:命名空间与 using
学习·unity·c#
D202020206 小时前
TikTok Shop禁止AI语音直播落地后,跨境卖家如何通过达秘合规调整带货内容
人工智能
2601_962299246 小时前
Azure python操作系统列表
python·操作系统·azure·虚拟机·存储配置文件