章节 3: 高级功能
1. 数组的迭代和排序
NumPy提供了迭代数组元素的方法,并且可以对数组进行排序。
示例代码:
arr = np.array([3, 1, 5, 2, 4])
# 迭代数组元素
for x in arr:
print(x)
# 输出:
# 3
# 1
# 5
# 2
# 4
# 对数组进行排序
sorted_arr = np.sort(arr)
print(sorted_arr)
# 输出: [1 2 3 4 5]
2. 数组的复制和视图
在NumPy中,复制数组可以通过copy()
函数来实现。同时,数组的切片也可以创建原数组的视图。
示例代码:
arr = np.array([1, 2, 3, 4, 5])
# 复制数组
copied_arr = arr.copy()
print(copied_arr)
# 输出: [1 2 3 4 5]
# 创建数组的视图
view_arr = arr[1:4]
print(view_arr)
# 输出: [2 3 4]
3. 结构化数组和记录数组
NumPy支持创建结构化数组和记录数组,用于存储和操作复杂的数据结构。
示例代码:
# 创建结构化数组
person_data = np.array([('John', 28, 180),
('Alice', 32, 165),
('Bob', 24, 175)],
dtype=[('name', 'S10'), ('age', int), ('height', float)])
print(person_data)
# 输出:
# [(b'John', 28, 180.) (b'Alice', 32, 165.) (b'Bob', 24, 175.)]
# 访问结构化数组的字段
print(person_data['name'])
# 输出: [b'John' b'Alice' b'Bob']
# 创建记录数组
record_arr = person_data.view(np.recarray)
print(record_arr.age)
# 输出: [28 32 24]
4. 多维索引和布尔索引
在NumPy中,可以使用多维索引和布尔索引来访问和修改多维数组中的元素。
示例代码:
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 多维索引
print(arr[0, 2])
# 输出: 3
# 切片和多维索引
print(arr[1:, [0, 2]])
# 输出:
# [[4 6]
# [7 9]]
# 布尔索引
bool_arr = arr > 5
print(arr[bool_arr])
# 输出: [6 7 8 9]
5. 文件的读取和写入
NumPy可以方便地读取和写入数组数据到文件中。
示例代码:
# 从文件中读取数组
read_arr = np.loadtxt('data.txt')
print(read_arr)
# 将数组写入文件
write_arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
np.savetxt('output.txt', write_arr)