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]])]
本文来自博客园,作者:ffff5,转载请注明原文链接:https://www.cnblogs.com/ffff5/p/18797133