51单片机读取SHT30温湿度传感器并数码管显示详解
2026/10/14 17:22:04
你想理解 Python 中一维、二维、三维数组的核心概念、结构差异和实际使用方式,我会用生活化的比喻 + 代码示例(兼顾 Python 原生列表和数据分析常用的 NumPy 数组),帮你从直观认知到实际操作,彻底理清这三种数组的区别。
首先要明确:Python 原生没有 “数组(array)” 的专属类型,日常说的 “数组” 要么是嵌套列表(纯 Python),要么是 NumPy 库的ndarray(数据分析 / 科学计算主流)—— 后者是真正意义上的 “数组”,支持维度操作,以下会重点讲解。
数组的维度,本质就是 “数据的嵌套层数”:
像超市收银台的单行排队人群,只有 “前后” 一个维度,每个位置只有 1 个元素。
python
# 1. Python原生列表(模拟一维数组) one_d_list = [10, 20, 30, 40, 50] print("一维列表:", one_d_list) print("访问第2个元素(索引从0开始):", one_d_list[1]) # 输出20 # 2. NumPy一维数组(推荐,支持数值计算) import numpy as np one_d_np = np.array([10, 20, 30, 40, 50]) print("\nNumPy一维数组:", one_d_np) print("数组维度:", one_d_np.ndim) # 输出1(ndim查看维度) print("数组形状:", one_d_np.shape) # 输出(5,)(5个元素,1个维度) print("访问第2个元素:", one_d_np[1]) # 输出20存储单列数据(如学生成绩、温度值、时间序列)。
像 Excel 表格 / 教室座位表,有行和列两个维度,每个位置需要 “行号 + 列号” 才能定位。
python
# 1. Python原生嵌套列表(模拟二维数组) two_d_list = [ [1, 2, 3], # 第0行 [4, 5, 6], # 第1行 [7, 8, 9] # 第2行 ] print("二维列表:", two_d_list) print("访问第1行第2列元素:", two_d_list[1][2]) # 输出6 # 2. NumPy二维数组 two_d_np = np.array([[1,2,3], [4,5,6], [7,8,9]]) print("\nNumPy二维数组:") print(two_d_np) print("数组维度:", two_d_np.ndim) # 输出2 print("数组形状:", two_d_np.shape) # 输出(3,3)(3行3列) print("访问第1行第2列元素:", two_d_np[1, 2]) # NumPy支持逗号分隔索引,更直观存储结构化表格数据(如学生姓名 + 成绩 + 年龄、图片的灰度像素值)。
像魔方 / 多层 Excel 表格,有层、行、列三个维度,每个位置需要 “层号 + 行号 + 列号” 才能定位。
python
# 1. Python原生嵌套列表(模拟三维数组) three_d_list = [ [ # 第0层 [1, 2], # 第0层第0行 [3, 4] # 第0层第1行 ], [ # 第1层 [5, 6], # 第1层第0行 [7, 8] # 第1层第1行 ] ] print("三维列表:", three_d_list) print("访问第1层第0行第1列元素:", three_d_list[1][0][1]) # 输出6 # 2. NumPy三维数组 three_d_np = np.array([[[1,2],[3,4]], [[5,6],[7,8]]]) print("\nNumPy三维数组:") print(three_d_np) print("数组维度:", three_d_np.ndim) # 输出3 print("数组形状:", three_d_np.shape) # 输出(2,2,2)(2层、2行、2列) print("访问第1层第0行第1列元素:", three_d_np[1, 0, 1]) # 输出6存储立体 / 多维度数据(如彩色图片的 RGB 通道 + 像素行列、视频的帧 + 像素行列)。
实际开发中,NumPy 是处理数组的核心工具,这些方法能帮你快速理解 / 操作维度:
python
import numpy as np # 1. 查看维度:ndim print(one_d_np.ndim, two_d_np.ndim, three_d_np.ndim) # 1 2 3 # 2. 查看形状:shape(返回元组,元素个数=维度数) print(one_d_np.shape) # (5,) → 一维:5个元素 print(two_d_np.shape) # (3,3) → 二维:3行3列 print(three_d_np.shape) # (2,2,2) → 三维:2层2行2列 # 3. 维度转换(比如一维转二维) one_d_to_two = one_d_np.reshape(5, 1) # 转成5行1列的二维数组 print("\n一维转二维:") print(one_d_to_two) print("转换后形状:", one_d_to_two.shape) # (5,1)[层,行,列]的直观写法,原生列表需[层][行][列];如果需要结合具体场景(比如处理图片、数据分析)理解数组维度,或者想知道如何创建 / 操作指定维度的数组,可以告诉我,我会补充对应的示例。