NumPy入门系列②:数组操作进阶指南——重塑、合并与分割核心技巧

1 重塑数组

1.1 reshape():调整数组维度

import numpy as np

# 示例数组
arr = np.arange(12)  

# 重塑为3行4列的二维数组
reshaped = arr.reshape(3, 4)
print(reshaped)

# 使用 -1 自动计算某一维度
auto_reshape = arr.reshape(2, -1)  # 2行,自动计算列数(6列)
print(auto_reshape.shape)  

# 注意:元素总数必须一致,否则报错 ValueError
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
(2, 6)

1.2 flatten():展平为⼀维数组

# 将多维数组展开为一维(返回拷贝)
matrix = np.array([[1, 2], [3, 4]])
flattened = matrix.flatten()  
print(flattened)

# 修改展平后的数组不影响原数组
flattened[0] = 100
print(matrix)  # 原数组不变
[1 2 3 4]
[[1 2]
 [3 4]]

2 合并数组

2.1 np.concatenate():通用拼接

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])

# 沿行方向(axis=0)拼接(垂直堆叠)
vertical = np.concatenate((a, b), axis=0)
print(vertical)

# 沿列方向(axis=1)拼接(需维度匹配)
c = np.array([[7], [8]])
horizontal = np.concatenate((a, c), axis=1)
print(horizontal)
[[1 2]
 [3 4]
 [5 6]]
[[1 2 7]
 [3 4 8]]

2.2 np.vstack() 与 np.hstack()

# vstack:垂直堆叠(等效于 concatenate(axis=0))
v_combined = np.vstack((a, b))  # 结果同上文 vertical
print(v_combined)
# hstack:水平堆叠(等效于 concatenate(axis=1))
d = np.array([[5, 6]])
h_combined = np.hstack((a, d.T))  # 转置后拼接
print(h_combined)
[[1 2]
 [3 4]
 [5 6]]
[[1 2 5]
 [3 4 6]]

3 分割数组

3.1 np.split():按索引或份数分割

arr = np.arange(9)  # [0 1 2 3 4 5 6 7 8 9]

# 等量分割为3份(需可整除)
subarrays = np.split(arr, 3)
print(subarrays)  

# 按指定位置分割(索引点为2和5)
split_at = [2, 5]
parts = np.split(arr, split_at)
print(parts)

# 二维数组分割示例
matrix = np.array([[1,2,3], [4,5,6], [7,8,9]])
split_rows = np.split(matrix, 3, axis=0)  # 按行分割为3个单行数组
print(split_rows)
[array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
[array([0, 1]), array([2, 3, 4]), array([5, 6, 7, 8])]
[array([[1, 2, 3]]), array([[4, 5, 6]]), array([[7, 8, 9]])]
posted @ 2025-03-27 23:41  ffff5  阅读(110)  评论(0)    收藏  举报