当前位置: 首页 > news >正文

NumPy 数组重塑

文章目录

  • 数组重塑(Reshaping of Arrays)
    • 1. 基本用法​
    • 2. 核心规则​​
    • 3. 参数说明
    • 4. 应用场景
    • 5. 注意事项
    • 6. 扩展方法

数组重塑(Reshaping of Arrays)

NumPy 允许通过 reshape 方法或 np.reshape 函数改变数组的维度结构,而无需修改底层数据。这种操作在数据预处理、矩阵运算和机器学习中极为常见。

1. 基本用法​

import numpy as np# 一维数组 → 二维数组(3行2列)
arr = np.arange(6)        # [0 1 2 3 4 5]
reshaped = arr.reshape(3, 2)
print(reshaped)
# 输出:
# [[0 1]
#  [2 3]
#  [4 5]]

2. 核心规则​​

  • (1)​元素总数不变​​:新形状的各维度乘积必须等于原数组元素总数
# 错误示例:6元素无法重塑为3x3
arr.reshape(3,3)  # 报错: ValueError: cannot reshape array of size 6 into shape (3,3)

ValueError

  • (2) ​自动计算维度​​:可用 -1 自动推断某维度大小
# 自动计算列数(总元素6 → 行2 → 列3)
arr.reshape(2, -1)  # 输出: [[0 1 2], [3 4 5]]
  • (3)内存共享​​:默认返回​​视图​​(共享数据),除非使用 copy=True
reshaped[0,0] = 100
print(arr)  # 输出: [100   1   2   3   4   5] → 原数组被修改!

3. 参数说明

参数​​ ​​说明​​
newshape目标形状(整数或元组,如 (行, 列) 或 (通道, 高, 宽))
order数据填充顺序(默认 ‘C’ 按行优先,‘F’ 按列优先,‘A’ 保留原顺序)

4. 应用场景

  • (1)图像处理​​:将一维像素数据转换为三维张量(高×宽×通道)
flat_image = np.random.rand(3072)  # CIFAR-10图像展平后
image_3d = flat_image.reshape(32, 32, 3)  # 还原为32x32 RGB图像
  • (2)​模型输入​​:适配神经网络输入形状
# 将批量数据(100样本,每样本784特征)转为100x28x28
X_train = X_flatten.reshape(100, 28, 28)
  • (3)矩阵运算​​:满足线性代数维度要求
vector = np.array([1,2,3])
column_matrix = vector.reshape(-1,1)  # 3x1列向量

column_matrix

5. 注意事项

操作​​ ​​结果​​
原数组连续内存(C顺序)reshape 高效生成视图( O ( 1 ) O(1) O(1)时间复杂度)
原数组非连续内存可能触发隐式拷贝(order='A' 时优先保留布局)
需强制拷贝使用 arr.reshape(...).copy()np.reshape(arr, ..., copy=True)

6. 扩展方法

  • ​​flatten()​​:将多维数组展平为一维(​​返回副本​​)
  • ​ravel()​​:将多维数组展平为一维(​​返回视图​​,优先使用)
print(reshaped.ravel())  # 输出: [100 1 2 3 4 5]

相关文章:

  • 慢查询日志的开启与分析:优化SQL性能的实战指南
  • Win11亮度条和亮度设置消失的解决方法
  • 位运算基本知识:异或,左移,右移
  • 蓝桥杯178 全球变暖
  • 【辰辉创聚生物】FGF信号通路相关蛋白:解码生命调控的关键枢纽
  • some java面试题
  • C++23内存分配新特性:std::allocate_at_least
  • Linux 内核学习(8) --- 字符设备操作函数
  • 独占内存访问工作原理
  • 题目 3326: 蓝桥杯2025年第十六届省赛真题-最短距离
  • Linux 内核学习(9) --- Linux sysfs 文件系统
  • 驱动: file_operations、register_chrdev、/proc 文件系统概述
  • Android 启动流程开发注意事项
  • 删除链表的倒数第N个结点--LeetCode
  • 5.25本日总结
  • MySQL的查询进阶
  • 中断和信号详解
  • 嵌入式软件--DAY8 IIC通讯下 硬件实现
  • 什么是maven(详细介绍)
  • MMDetection3D最全源码安装教程
  • 教师资格证中职网站建设与管理/口碑营销的案例有哪些
  • 网站连接微信支付/百度搜索引擎下载免费
  • 网站外包价格/百度seo排名优化费用
  • 如何刷网站流量/色盲测试图
  • 学院网站建设情况总结/深圳关键词推广排名
  • 如何给网站增加关键词/如何建立网站的步骤