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

NumPy 函数手册:数组重复与扩展

在 NumPy 中,数组不仅可以通过索引与切片访问数据,也可以通过重复与扩展操作生成新的数组结构。在数据分析、机器学习以及科学计算中,经常需要将某些数据模式重复多次,例如复制标签、扩展样本、生成网格数据或构造测试矩阵等。

这类操作称为数组重复(array repetition)或数组扩展(array expansion)。与数组变形不同,这些操作要么通过复制元素或数组结构生成新数组,要么通过广播机制在不复制数据的前提下扩展数组的“可视形状”(视图)。

按照 NumPy 的函数体系,数组重复与扩展操作通常可以分为三类:

(1)元素级重复

(2)结构级复制

(3)广播机制扩展

一、元素级重复

repeat()

按指定次数重复数组中的元素。

numpy.repeat(a, repeats, axis=None)

参数说明:

• a:输入数组

• repeats:每个元素重复的次数,可以是整数或整数序列。当 repeats 为序列时,其长度必须与指定 axis 上的元素个数一致,否则会报错

• axis:指定重复操作的轴;若为 None,则先将数组展平成一维数组再进行重复

示例 1:一维数组

import numpy as np a = np.array([1, 2, 3]) np.repeat(a, 2)

输出:

[1 1 2 2 3 3]

说明:每个元素都被重复两次。

示例 2:二维数组

a = np.array([[1, 2], [3, 4]]) np.repeat(a, 2, axis=0)

输出:

[[1 2] [1 2] [3 4] [3 4]]

说明:

沿 axis=0 对各行依次重复,因此每一行都连续出现两次。

二、结构级复制

tile()

按指定模式重复整个数组结构。

numpy.tile(A, reps)

参数说明:

• A:输入数组

• reps:数组在各维度上的重复次数,可以是整数或整数序列

示例 1:

import numpy as np a = np.array([1, 2, 3]) np.tile(a, 2)

输出:

[1 2 3 1 2 3]

说明:整个数组被复制两次。

示例 2:

a = np.array([[1, 2], [3, 4]]) np.tile(a, (2, 3))

输出:

[[1 2 1 2 1 2] [3 4 3 4 3 4] [1 2 1 2 1 2] [3 4 3 4 3 4]]

说明:数组在行方向复制两次,列方向复制三次。

示例 3:

np.tile(np.array([1, 2, 3]), (2, 2))

输出:

[[1 2 3 1 2 3] [1 2 3 1 2 3]]

说明:当 reps 的维度长度大于数组的维度时,NumPy 会在数组前面补充新的维度,使其维度与 reps 对齐。

repeat() 与 tile() 都用于数组重复,但其重复方式不同:

• repeat():在元素层面进行重复(element-wise duplication)

• tile():在数组结构层面进行复制(block-wise replication)

三、广播机制扩展

broadcast_to()

按广播规则将数组扩展为指定形状。

numpy.broadcast_to(array, shape)

参数说明:

• array:输入数组

• shape:目标形状。目标形状必须符合 NumPy 的广播规则(即从尾部维度开始对齐,原数组在对应维度上要么相等,要么为 1)

示例:

import numpy as np a = np.array([1, 2, 3]) np.broadcast_to(a, (3, 3))

输出:

[[1 2 3] [1 2 3] [1 2 3]]

说明:原数组被广播为新的形状。

需要注意的是,返回结果通常是只读视图(writeable=False),其核心机制是基于广播规则构造视图,而不是按目标形状复制整块数据;若尝试直接修改,通常会触发错误。

broadcast_arrays()

将多个数组广播到相同形状。

返回一个元组,其中包含广播后具有相同形状的数组视图。这些结果通常共享底层数据,而不是独立复制出的完整新数组。

numpy.broadcast_arrays(*arrays)

参数说明:

• arrays:需要广播的数组序列

示例:

a = np.array([1, 2, 3])b = np.array([[10], [20]]) x,y = np.broadcast_arrays(a, b)print(x)print(y)

输出:

[[1 2 3] [1 2 3]] [[10 10 10] [20 20 20]]

说明:broadcast_arrays() 会根据 NumPy 的广播规则,将多个数组扩展为相同形状的数组。

该函数常用于在进行向量化计算前,使不同形状的数组具有一致的维度结构。

📘 小结

NumPy 提供了多种数组重复与扩展方式:repeat() 用于元素级复制,tile() 用于结构级复制,而 broadcast_to() 与 broadcast_arrays() 则基于广播机制在不复制整块数据的前提下扩展数组形状。这些操作覆盖了从“数据真实复制”到“视图扩展”的不同机制,在数据构造与向量化计算中具有重要作用。

“点赞有美意,赞赏是鼓励”

http://www.jsqmd.com/news/530198/

相关文章:

  • OpenClaw 中文文档 — WhatsApp 与 Telegram 接入
  • 光伏MPPT之变步长电导增量法探究
  • 魔兽争霸III现代系统兼容解决方案与优化指南
  • OpenClaw 中文文档 — v2026.3.23 稳定性修复分析:Auth 系统、浏览器连接与插件生态
  • 全国30米分辨率地形坡度数据Tif格式
  • iOS系统降级与硬件漏洞利用实战指南:基于checkm8技术的设备降级全流程
  • 探索任意极槽数永磁同步电机绕组计算器
  • 某软件验证思路
  • 基础算法:前缀和(Prefix Sum)
  • AssetStudio:3步快速掌握Unity资源提取与管理的终极指南
  • 小米手表表盘设计完整指南:如何用可视化工具10分钟打造个性化界面
  • 掌握Icarus Verilog:从零开始的数字电路仿真完整指南
  • Day22:RAG 王炸进阶!多格式文档 (PDF_Word)+ 多文档知识库搭建
  • 跨平台键鼠共享:3步实现多设备无缝控制
  • python社区智慧医疗养老系统vue3
  • PolSARpro v6.0 (Biomass Edition)安装指南:从依赖配置到环境搭建
  • 回调函数到底算哪一层的?——嵌入式分层设计里最纠结的问题
  • 动画制作行业变革:HY-Motion推动文生动作商业化落地
  • 基于Matlab的信号处理GUI人机交互探索
  • 小白友好!造相-Z-Image极简部署,无需网络也能玩转AI绘画
  • 鸣潮自动化工具ok-ww深度评测:图像识别驱动的游戏效率革新
  • PP-DocLayoutV3入门指南:Gradio界面各组件功能详解与交互逻辑说明
  • Grafana中文汉化实战:从零打造本土化监控仪表盘
  • 猫抓:突破网页资源限制的全能媒体捕获工具
  • 蒸馏模型到底强在哪?DeepSeek-R1-Distill-Qwen-1.5B实战验证教程
  • Token经济学全景报告 2026
  • QQ音乐加密音频解决方案:qmcdump技术指南
  • MpcVideoRenderer
  • VideoAgentTrek-ScreenFilter一文详解:屏幕内容过滤验证全流程
  • Python代码秒变C语言?Cython实战教程:加密与性能提升全攻略(附避坑指南)