NumPy 数组创建方法与区间差异分析

NumPy 数组创建方法与区间差异分析

本文基于一段 NumPy 代码,整理了常见的数组创建方法,并深入分析了 np.arange 和 np.linspace 的区别与记忆方法,同时探讨了 NumPy 中不同 API 的开闭区间特性。

代码概览

以下是代码中涉及的 NumPy 数组创建方法:

  1. 创建 2 行 3 列全为 0 的二维数组

    python 复制代码
    a1 = np.zeros((2, 3))
    • np.zeros 创建指定形状的全 0 数组,参数为形状元组。
  2. 创建 3 行 3 列全为 1 的二维数组

    python 复制代码
    a2 = np.ones((3, 3))
    • np.ones 创建指定形状的全 1 数组,参数为形状元组。
  3. 创建 4 阶单位矩阵

    python 复制代码
    a3 = np.eye(4)
    • np.eye 创建指定阶数的单位矩阵(主对角线为 1,其余为 0)。
  4. 创建一维等差数组,从 1 到 10,公差为 4

    python 复制代码
    a4 = np.linspace(1, 10, 4)
    • np.linspace 创建等差数组,参数为起点、终点和元素个数。
  5. 创建一维等差数组,从 1 到 4,公差为 0.5

    python 复制代码
    a5 = np.arange(1, 4, 0.5)
    • np.arange 创建等差数组,参数为起点、终点和公差。
  6. 创建 2 行 3 列的随机数组

    python 复制代码
    np.random.seed(0)  # 设置随机种子
    a6 = np.random.rand(2, 3)
    • np.random.rand 创建指定形状的随机数组,元素值在 [0, 1) 区间。
  7. 创建 3 行 4 列的随机整数数组,范围为 [10, 51)

    python 复制代码
    a7 = np.random.randint(10, 51, size=(3, 4))
    • np.random.randint 创建指定范围和形状的随机整数数组。

重点分析:np.arange 与 np.linspace 的差异与记忆方法

差异

  • np.arange(start, stop, step)

    • 参数:起点、终点(不包含)、步长。

    • 区间 :左闭右开 [start, stop)。

    • 特点 :通过指定步长(step)控制数组的间隔,元素个数由 (stop - start) / step 决定(向上取整)。

    • 示例 :

      python 复制代码
      a5 = np.arange(1, 4, 0.5)
      # 结果:[1.0, 1.5, 2.0, 2.5, 3.0, 3.5]
      • 从 1 开始,每次增加 0.5,直到小于 4(不包含 4)。
  • np.linspace(start, stop, num)

    • 参数:起点、终点(包含)、元素个数。

    • 区间 :左闭右闭 [start, stop]。

    • 特点 :通过指定元素个数(num),自动计算步长,步长为 (stop - start) / (num - 1)。

    • 示例 :

      python 复制代码
      a4 = np.linspace(1, 10, 4)
      # 结果:[1.0, 4.0, 7.0, 10.0]
      • 从 1 到 10,共 4 个元素,等分为 3 段,步长为 (10 - 1) / (4 - 1) = 3。

记忆方法

  • 参数核心区别:

    • np.arange 的第三个参数是步长 (step),强调"间隔多大"。
    • np.linspace 的第三个参数是个数 (num),强调"要多少个点"。
    • 记忆口诀 :arange 爱"步长"(range 类似 Python 的 range,步长驱动);linspace 爱"个数"(linear space,线性划分空间,指定点数)。
  • 区间特性:

    • np.arange 类似 Python 的 range,右端点不包含(左闭右开)。
    • np.linspace 强调线性插值,包含两端(左闭右闭)。
    • 记忆口诀 :arange 右边"开",linspace 两端"闭"。

使用场景

  • 如果需要控制步长 ,且不在意具体元素个数,用 np.arange。
  • 如果需要固定元素个数 ,且希望包含终点,用 np.linspace。

NumPy 中不同 API 的开闭区间差异

NumPy 中不同函数的区间定义可能不同,理解这些差异有助于避免错误:

  1. np.arange(start, stop, step)

    • 区间:[start, stop),右端点不包含。
    • 示例:np.arange(1, 4, 0.5) 不包含 4。
  2. np.linspace(start, stop, num)

    • 区间:[start, stop],包含两端。
    • 示例:np.linspace(1, 10, 4) 包含 10。
  3. np.random.rand 和 np.random.uniform

    • 区间:[0, 1)(rand)或 [low, high)(uniform),右端点不包含。
    • 示例:np.random.rand(2, 3) 生成的值在 [0, 1)。
  4. np.random.randint(low, high, size)

    • 区间:[low, high),右端点不包含。
    • 示例:np.random.randint(10, 51, size=(3, 4)) 生成的值在 [10, 51),不包含 51。

记忆方法

  • 右端点不包含 是 NumPy 中常见的默认行为(如 np.arange、np.random.randint),因为这与 Python 的 range 行为一致,方便循环和索引。
  • 两端包含 通常出现在需要明确定义边界的情况下(如 np.linspace),因为它更符合数学上的线性插值需求。
  • 记忆口诀 :随机函数(rand、randint)和 arange 右边"开",线性插值(linspace)两端"闭"。

总结

  • np.arange 和 np.linspace 是创建等差数组的常用方法,区别在于参数(步长 vs 个数)和区间(右开 vs 两端闭)。
  • NumPy 中不同 API 的开闭区间特性需要注意,尤其是随机函数和 arange 的右端点不包含行为。
  • 通过口诀和使用场景,可以更轻松地记忆和选择合适的函数。

希望这篇博客对你理解 NumPy 数组创建方法有所帮助!

相关推荐
1 分钟前
正则少一个 re.MULTILINE,我的安全闸门全程空转——而我以为修好了
后端·代码规范
柠檬味拥抱3 分钟前
脑肿瘤检测数据集 | 4400张YOLO医学影像数据集
后端
柠檬味拥抱10 分钟前
汽车损伤检测数据集 | 11700张YOLO车辆定损数据集
后端
柠檬味拥抱11 分钟前
基于 YOLO11 的规模化禽舍鸡只行为视觉监测平台:从模型到 Streamlit 全流程实战
后端
柠檬味拥抱13 分钟前
火灾智能检测预警系统:从 YOLO11n 训练到 Streamlit 全链路实战【实战源码】
后端
言午说数据17 分钟前
Paimon把LSM搬进湖里的得与失
大数据·后端
故图19 分钟前
JDBC 读 ResultSet 读到一半,报 stream closed
后端
武子康23 分钟前
AI Agent 设备指令超时后,重试会执行两次吗?
人工智能·后端·agent
全栈弄潮儿25 分钟前
Python实战第6期:列表与元组
后端·python·编程语言
用户8175952201329 分钟前
QNAP NAS 部署 Vaultwarden:使用 Cloudflare Tunnel 实现外网访问与手机同步
后端