numpy 拆分数组
时间: 2025-03-09 08:08:30 浏览: 46
### 使用 NumPy 拆分数组的方法
#### 方法一:水平拆分 `hsplit`
当需要将多维数组沿着水平轴(即行的方向)进行拆分时,`np.hsplit()` 函数是非常有效的工具。此函数接受两个参数:要被分割的数组以及指示切割次数或位置的整数或列表。
```python
import numpy as np
arr = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[10, 11, 12],
[13, 14, 15],
[16, 17, 18]])
newarr = np.hsplit(arr, 3)
print(newarr)
```
上述代码会创建一个新的三维数组集合,每个子数组包含了原矩阵中的部分列[^2]。
#### 方法二:通用拆分 `split`
对于更灵活的需求,比如按照指定索引处切片或将整个数组均匀分配给若干个新数组的情况,则应考虑使用更为通用的 `np.split()` 函数。该函数同样适用于任何维度的数据结构,并允许用户自定义划分方式。
```python
import numpy as np
# 创建一个简单的二维数组作为演示对象
data = np.arange(16).reshape((4, 4))
# 均匀地将其划分为四个相同大小的一维向量
result = np.split(data.flatten(), 4)
print(result)
```
这里展示了如何先展平原始数组再做均等分割的操作[^3]。
#### 方法三:垂直拆分 `vsplit`
如果目标是在竖直方向上对数组实施分区——也就是按照行来进行分离的话,那么应该选用 `np.vsplit()` 来完成这项工作。这与前面提到过的 `hsplit` 类似,只不过作用于不同的轴线上而已。
```python
import numpy as np
matrix = np.random.rand(6, 3) * 100
sub_matrices = np.vsplit(matrix, 3)
for i, sub_matrix in enumerate(sub_matrices):
print(f'Sub-matrix {i}:')
print(sub_matrix)
```
这段脚本实现了随机生成的一个 \(6 \times 3\) 的浮点型数值表单被切成三个独立的小表格的过程。
#### 组合应用实例
有时可能还会遇到更加复杂的场景,例如既要在横向也要在纵向执行多次连续性的切割动作;此时可以通过组合运用这些基础命令来达成目的:
```python
import numpy as np
original_array = np.arange(24).reshape((6, 4))
horizontal_parts = np.hsplit(original_array, 2)
final_result = []
for part in horizontal_parts:
vertical_slices = np.vsplit(part, 3)
final_result.extend(vertical_slices)
for idx, slice_ in enumerate(final_result):
print(f'Final Slice #{idx}:\n{slice_}')
```
以上程序片段先是把输入的大矩形区域依据宽度劈成两半,接着又分别在这两份基础上进一步细分成更多小块[^4]。
阅读全文
相关推荐

















