返回
NumPy基础:结构化数组深潜
闲谈
2024-01-27 01:06:19
结构化数组的遍历
使用NumPy数组中的iterrows()
函数,可以访问结构化数组中的每一行,在每次迭代中返回一个记录数组对象,该对象具有可以按属性访问的字段。
import numpy as np
# 创建一个结构化数组
data = np.array([('Alice', 20, 100.0), ('Bob', 25, 90.0), ('Carol', 30, 80.0)],
dtype=[('name', 'U10'), ('age', 'i4'), ('score', 'f8')])
# 使用iterrows()函数遍历数组
for row in data.iterrows():
# 通过属性访问字段
print(f"Name: {row['name']}, Age: {row['age']}, Score: {row['score']}")
# 输出:
# Name: Alice, Age: 20, Score: 100.0
# Name: Bob, Age: 25, Score: 90.0
# Name: Carol, Age: 30, Score: 80.0
结构化数组的子集选择
使用NumPy数组中的[]
操作符,可以按字段值选择结构化数组中的行。
# 选择年龄大于25岁的行
data[data['age'] > 25]
# 输出:
# [(('Bob', 25, 90.0),)
# (('Carol', 30, 80.0),)]
结构化数组的字段操作
NumPy提供了各种函数来对结构化数组的字段进行操作,例如sum()
, mean()
, max()
和min()
。
# 计算每列的总和
print(data.sum(axis=0))
# 输出:
# (('AliceBobCarol', 'U10'), (75, 'i4'), (270.0, 'f8'))
# 计算每列的平均值
print(data.mean(axis=0))
# 输出:
# (('AliceBobCarol', 'U10'), (25.0, 'i4'), (90.0, 'f8'))
# 计算每列的最大值
print(data.max(axis=0))
# 输出:
# (('Carol', 'U10'), (30, 'i4'), (100.0, 'f8'))
# 计算每列的最小值
print(data.min(axis=0))
# 输出:
# (('Alice', 'U10'), (20, 'i4'), (80.0, 'f8'))
小结
结构化数组是NumPy中一种强大的数据结构,它允许按属性而不是仅按索引访问字段。这使得数据访问和操作更加方便。本文介绍了如何遍历结构化数组、选择子集、以及对字段进行操作。