- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 创建和操作数组
- NumPy - 数组创建例程
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 迭代数组
- NumPy - 重塑数组
- NumPy - 连接数组
- NumPy - 堆叠数组
- NumPy - 分割数组
- NumPy - 展平数组
- NumPy - 转置数组
- NumPy 索引和切片
- NumPy - 索引和切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组的轴
- NumPy - 字节交换
- NumPy - 副本和视图
- NumPy - 元素级数组比较
- NumPy - 过滤数组
- NumPy - 连接数组
- NumPy - 排序、搜索和计数函数
- NumPy - 搜索数组
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O
- NumPy 排序和高级操作
- NumPy - 排序数组
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组的列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 估算缺失数据
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行矢量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 求解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 求平均值
- NumPy - 求中位数
- NumPy - 求最小值
- NumPy - 求最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 创建结构化数组
结构化数组简介
NumPy 中的结构化数组允许在单个数组中表示不同类型和大小的数据。结构化数组中的每个元素都可以是具有多个字段的记录,每个字段都有自己的数据类型。
这类似于拥有一个表格,其中每一行代表一个具有各种属性的记录。主要要点如下:
- 结构化数组中的每个元素(记录)可以有多个字段。
- 字段可以具有不同的数据类型(例如,整数、浮点数、字符串)。
- 结构化数组可用于表示复杂的数据结构。
定义结构化数组
创建结构化数组的第一步是为结构化数组定义数据类型。这使用 NumPy 的dtype对象完成,该对象指定数组中字段的名称和类型,如下例所示:
import numpy as np # Define the data type for the structured array dtype = np.dtype([('name', 'U10'), ('age', 'i4'), ('height', 'f4')])
这里,dtype是一个结构化数据类型,具有三个字段:
- name: 最多 10 个字符的字符串 ('U10')
- age: 一个整数 ('i4')
- height: 一个浮点数 ('f4')
创建结构化数组
定义好“dtype”后,可以通过将 dtype 传递给 np.array() 函数来创建结构化数组。以下是语法:
numpy.array( object, dtype=None, copy=True, order='K', subok=False, ndmin=0 )
其中,
- object: 这是您要转换为 NumPy 数组的输入数据。它可以是列表、元组或任何其他类似序列的结构。
- dtype (可选): 指定数组所需的数据类型。如果未提供,NumPy 将从输入数据推断数据类型。例如,您可以使用 'int32'、'float64'、'str' 等。
- copy (可选): 如果为 True(默认值),则创建一个新数组。如果为 False,则仅在必要时创建新数组(即,如果输入对象本身不是数组)。如果为 False,则 np.array 可能在可能的情况下返回原始数组的视图。
- order (可选): 指定内存布局顺序。它可以是 'C' 表示行主序(C 样式)顺序,'F' 表示列主序(Fortran 样式)顺序,或 'K' 表示输入中找到的顺序。默认值为 'K'。
- subok (可选): 如果为 True,则如果输入是子类,则将使用 ndarray 的子类。默认值为 False,这意味着返回的数组将始终是 ndarray 的实例。
- ndmin (可选): 指定结果数组应具有的最小维度数。例如,将 ndmin 设置为 2 可确保结果至少为二维数组。
示例
在下面的示例中,我们正在定义一个结构化数组,其指定的 dtype 包括“name”、“age”和“height”的字段。然后我们使用与该结构匹配的数据创建数组,并打印结果结构化数组:
import numpy as np # Define the dtype with field names and data types dtype = [('name', 'U10'), ('age', 'i4'), ('height', 'f4')] # Create data consistent with the dtype data = [('Alice', 30, 5.6), ('Bob', 25, 5.8), ('Charlie', 35, 5.9)] # Create the structured array structured_array = np.array(data, dtype=dtype) print("Structured Array:\n", structured_array)
获得以下输出:
Structured Array: [('Alice', 30, 5.6) ('Bob', 25, 5.8) ('Charlie', 35, 5.9)]
使用不同的数据类型创建结构化数组
您可以根据应用程序的需求创建具有各种数据类型(包括字符串、整数和浮点数)的结构化数组。
在结构化数组的上下文中:
- 字符串: 您可以在结构化数组中存储文本数据。例如,名称字段可以使用字符串数据类型。
- 整数: 数值数据(如年龄或计数)可以存储为整数。这可能包括年龄或数量等数据,它们是整数。
- 浮点数: 对于十进制数或实数,您可以使用浮点数据类型。这对于测量或任何需要精度的值(例如身高或体重)很有用。
示例
在下面的示例中,我们正在创建一个结构化数组,其数据类型 (dtype) 包括混合数据类型:整数表示 ID、字符串表示名称以及浮点数表示分数:
import numpy as np # Define a dtype with mixed data types dtype = [('id', 'i4'), ('name', 'U15'), ('score', 'f8')] data = [(1, 'Alice', 88.5), (2, 'Bob', 91.2), (3, 'Charlie', 85.4)] # Create the structured array structured_array = np.array(data, dtype=dtype) print("Structured Array with Mixed Data Types:\n", structured_array)
这将产生以下结果:
Structured Array with Mixed Data Types:[(1, 'Alice', 88.5) (2, 'Bob', 91.2) (3, 'Charlie', 85.4)]
使用元组列表创建结构化数组
您可以使用元组列表定义 dtype 并创建结构化数组,其中每个元组表示一个字段。每个元组包含两个元素:第一个元素是字段的名称,第二个元素是该字段的数据类型。
示例
在下面的示例中,我们正在使用指定的 dtype 定义一个具有“name”、“age”和“height”字段的结构化数组。然后我们使用相应的数据创建此数组:
import numpy as np # Define the dtype dtype = [('name', 'U10'), ('age', 'i4'), ('height', 'f4')] # Define the data data = [('Alice', 30, 5.6), ('Bob', 25, 5.8), ('Charlie', 35, 5.9)] # Create the structured array structured_array = np.array(data, dtype=dtype) print("Structured Array:\n", structured_array)
获得以下输出:
Structured Array: [('Alice', 30, 5.6) ('Bob', 25, 5.8) ('Charlie', 35, 5.9)]
使用字典创建结构化数组
或者,您可以使用字典定义数据和 dtype 以清楚地指定字段的名称和类型。字典中的每个键都代表一个字段名称,与每个键关联的值定义该字段的数据类型。
示例
在此示例中,我们使用字典格式定义结构化数组的 dtype 以指定“name”、“age”和“height”的字段。然后我们创建并显示此结构化数组及其对应的数据,将其组织成支持每个记录中多种数据类型的格式:
import numpy as np # Define the dtype using a dictionary dtype = np.dtype([('name', 'U10'), ('age', 'i4'), ('height', 'f4')]) # Define the data data = [('Alice', 30, 5.6), ('Bob', 25, 5.8), ('Charlie', 35, 5.9)] # Create the structured array structured_array = np.array(data, dtype=dtype) print("Structured Array from Dictionary:\n", structured_array)
这将产生以下结果:
Structured Array from Dictionary: [('Alice', 30, 5.6) ('Bob', 25, 5.8) ('Charlie', 35, 5.9)]