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

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

本文基于一段 NumPy 代码,整理了常见的数组创建方法,并深入分析了 np.arangenp.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.arangenp.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.randnp.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.arangenp.random.randint),因为这与 Python 的 range 行为一致,方便循环和索引。
  • 两端包含 通常出现在需要明确定义边界的情况下(如 np.linspace),因为它更符合数学上的线性插值需求。
  • 记忆口诀 :随机函数(randrandint)和 arange 右边"开",线性插值(linspace)两端"闭"。

总结

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

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

相关推荐
why1514 小时前
腾讯(QQ浏览器)后端开发
开发语言·后端·golang
浪裡遊4 小时前
跨域问题(Cross-Origin Problem)
linux·前端·vue.js·后端·https·sprint
声声codeGrandMaster4 小时前
django之优化分页功能(利用参数共存及封装来实现)
数据库·后端·python·django
呼Lu噜5 小时前
WPF-遵循MVVM框架创建图表的显示【保姆级】
前端·后端·wpf
bing_1585 小时前
为什么选择 Spring Boot? 它是如何简化单个微服务的创建、配置和部署的?
spring boot·后端·微服务
学c真好玩5 小时前
Django创建的应用目录详细解释以及如何操作数据库自动创建表
后端·python·django
Asthenia04125 小时前
GenericObjectPool——重用你的对象
后端
Piper蛋窝5 小时前
Go 1.18 相比 Go 1.17 有哪些值得注意的改动?
后端
excel6 小时前
招幕技术人员
前端·javascript·后端
盖世英雄酱581366 小时前
什么是MCP
后端·程序员