Python NumPy arange() 教程

2023-10-19

NumPyarange()函数用于生成给定区间内的值序列。您可以将其视为数字范围生成器。它允许您创建一个 NumPy 数组,其值在指定范围内均匀分布。

它提供了更多功能,例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性。

在本教程中,我们将探索语法、参数和各种用例np.arange()功能,展示其在数据创建、操作和之间的差异方面的多功能性和实用性arange()和其他功能,例如linspace()和Pythonrange().

 

 

语法和参数

The np.arange()NumPy 中的函数具有简单的语法:


numpy.arange([start, ]stop, [step, ]dtype=None)
  

该函数采用以下位置参数:

  • start:这是一个可选参数,表示间隔的开始。如果未提供,该函数假定 start = 0。
  • stop:这是定义间隔结束的强制参数。除非另有明确指示,停止值不包含在生成的序列中。
  • step:这也是一个可选参数,定义值之间的间距。默认步长为 1。
  • dtype:这是一个可选参数,您可以在其中指定结果数组所需的数据类型。如果未提供,该函数将从其他输入参数推断数据类型。以下是如何使用np.arange()函数与dtype范围:

import numpy as np
arr = np.arange(0, 20, 2, dtype=int)
print(arr)  

Output:


array([ 0,  2,  4,  6,  8, 10, 12, 14, 16, 18])
  

在此示例中,我们创建一个数组dtype参数明确设置为int。我们定义区间 [0,20),步长值为 2。

该函数返回一个数组,该数组在给定间隔内具有均匀间隔的整数值。

 

np.arange 函数有什么作用?

The np.arange函数的一部分,NumPy 库,是一个用于生成定义区间内的一维数值数组的函数。

数组中的元素根据提供给函数的间隔和步长均匀分布。
这是该功能的另一个演示:


import numpy as np
arr = np.arange(5, 15)
print(arr)
  

Output:


array([ 5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
  

在此示例中,我们使用 NumPy arange 函数创建一个值在 5 到 15 之间的数组。

请注意结果数组如何以起始值 5 开始,并包含每个后续整数(由于默认步长大小为 1),直到但不包括结束值 15。

 

生成均匀间隔值的数组

NumPy arange 函数根据指定的间隔和步长值生成具有均匀间隔值的数组。让我们考虑一个更详细的例子:


import numpy as np

# create an array with a specified step value
arr = np.arange(0, 50, 5)
print(arr)
  

Output:


array([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45])
  

在上面的代码中,我们使用 NumPy arange 函数创建一个从 0 开始,到 50 结束,步长为 5 的数组。该函数返回的数组包含定义间隔内均匀间隔的值。
步长值指示数组中连续数字之间的差异。

在此示例中,每个数字都比前一个数字大 5,表示按照间隔和步长均匀分布的序列。
当您需要特定范围内的数据且连续值之间存在特定差异时,这种具有均匀间隔元素的数组非常有用。

 

将 arange() 与浮点数结合使用

The np.arange()函数用途广泛,还可以用来生成浮点数数组。

当您需要更精细的十进制值序列时,这尤其有用。
以下是创建带有浮点数的数组的方法:


import numpy as np

# Create an array with floating point numbers
arr = np.arange(0.0, 1.0, 0.1)
print(arr)
  

Output:


array([0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
  

在此示例中,我们使用 NumPy arange 函数创建一个具有 0.0 到 1.0 之间均匀间隔的十进制值的数组。

该函数将开始值、停止值和步长值作为参数,生成一个从 0.0(含)开始、到 1.0(不含)结束的数组,步长值为 0.1。
结果,该函数返回一个浮点数数组,其中元素按照指定的间隔均匀分布。当值序列需要精度时,这特别有用。

 

arange() 中的负步长(反向数组)

The np.arange()函数还支持负步长,允许我们创建一个降序的数字序列。
让我们用一个例子来说明这一点:


import numpy as np

# Create an array with a negative step size
arr = np.arange(10, 0, -1)
print(arr)
  

Output:


array([10,  9,  8,  7,  6,  5,  4,  3,  2,  1])
  

在此代码片段中,我们使用 NumPy arange 函数创建一个从 10 开始到 0(不包括)结束的降序数组,步长大小为 -1。
当使用负步长时,起始值应大于停止值才能得到非空数组。

生成的数组包含一系列值,由于步长值为 -1,每个值都比前一个值小 1。

当您需要生成反向数组时,此功能特别有用。

 

使用 dtype 参数处理内存效率

使用 NumPy 函数创建数组的优点之一是其高效的内存管理。

The np.arange()函数提供了一个dtype参数,它允许您指定数组中元素的数据类型。

通过选择适当的数据类型,您可以控制数组的内存分配。
以下是如何执行此操作的示例:


import numpy as np

# Create an array with dtype parameter
arr = np.arange(0, 10, dtype=np.int8)
print(arr)
  

Output:


array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=int8)
  

在此示例中,我们使用 NumPy arange 函数创建一个数组,并显式指定元素的数据类型为np.int8.

这是一个 8 位整数类型,可以保存从 -128 到 127 的值,因此与高位整数相比使用更少的内存。
当您使用大型数组并想要优化内存使用时,此方法特别有用。

 

arange() 和 linspace() 之间的区别

虽然两者np.arange() and np.linspace()用于创建具有均匀间隔值的数组,它们的不同之处在于定义间距和端点的方式。
为了澄清差异,让我们使用这两个函数创建类似的数组。
With np.arange():


import numpy as np
arr = np.arange(0, 10, 2)
print(arr)
  

Output:


array([0, 2, 4, 6, 8])
  

With np.linspace():


import numpy as np
arr = np.linspace(0, 8, 5)
print(arr)
  

Output:


array([0., 2., 4., 6., 8.])
  

主要区别是:

  1. 端点包含: np.arange()默认情况下不包括端点,而np.linspace()确实包括端点。
  2. 返回类型:两个函数都返回一个 numpy.ndarray,但是np.linspace()即使输入是整数(由于其内部计算),也可以返回具有浮点数的数组。

 

使用 arange() 与 linspace() 的优缺点

np.arange() and np.linspace()都是 NumPy 中强大的函数,可以生成具有均匀间隔值的数组。

但是,根据您的需要,一种功能可能比另一种更合适。这是它们的优点和缺点的比较。
使用 arange() 的优点:

  1. 简单: np.arange()与 Python 的内置 range 函数类似,对于从普通 Python 过渡到 NumPy 的人来说非常直观。
  2. 基于步长的间距: np.arange()根据定义的“步长”大小生成序列,当您需要值之间的特定增量时,这会很有帮助。

使用 arange() 的缺点:

  1. 排除止损值: 默认情况下,np.arange()数组中不包含停止值,这可能会造成混乱。
  2. 浮点精度:使用时np.arange()对于浮点步长值,由于浮点算术的有限精度,输出大小可能无法预测。

使用 linspace() 的优点:

  1. 包括端点: np.linspace()默认情况下包括端点,这在许多情况下都是可取的。
  2. 控制元素数量: With np.linspace(),您可以指定数组中所需元素的确切数量,这在您需要特定大小的数组时提供更精细的控制。

使用 linspace() 的缺点:

  1. 复杂: np.linspace()需要了解“num”参数,它可能不像中的“step”参数那么简单np.arange().

总之,您的选择np.arange() and np.linspace()将取决于您的具体需求,您是否想要控制步长或总点数,以及是否想要包含端点。

 

arange() 和 Python range() 之间的区别

Python 内置range()函数和 NumPy 的arange()函数都生成数字序列,但它们在用途、灵活性和功能上有显着差异。
以下是使用两者的示例进行的比较:
与Python的range():


arr = list(range(0, 10, 2))
print(arr)
  

Output:


[0, 2, 4, 6, 8]
  

使用 NumPyarange():


import numpy as np
arr = np.arange(0, 10, 2)
print(arr)
  

Output:


array([0, 2, 4, 6, 8])
  

以下是主要区别:

  1. 返回类型:Python的range()函数返回一个range需要转换为列表以显示其值的对象。另一方面,np.arange()直接返回一个 NumPy 数组(numpy.ndarray)。
  2. 与浮动体一起使用:Python的range()仅适用于整数开始、停止和步长值,而np.arange()可以接受浮点数。
  3. 表现: np.arange()对于大范围来说更快、更高效,因为它直接在内存中创建数组。相比之下,Python 的range()对于小范围更好,因为它动态创建元素并且不会不必要地消耗内存。

这些差异凸显了如何np.arange()对于涉及数组的数值计算,尤其是大型数据集或复杂的数值任务,可以更加通用和高效。

 

现实世界中的 NumPy arange()

一位客户雇用我来帮助他们理解和可视化他们的大型数据集,其中包括过去一年每小时采集的温度读数。

原始数据集只是 24 * 365 = 8760 个温度值的简单序列,没有相应的时间戳。

客户希望了解温度趋势如何随时间演变,我意识到的第一件事是我需要将温度值与其各自的时间戳对齐。

由于温度数据是每小时收集的,因此我需要创建一个代表一年中每个小时的数组,作为时间建模的一种方式。

NumPy 来了arange()功能。

我编写了以下代码来生成所需的时间数据:


import numpy as np

# Creating an array with each hour of the year
hours = np.arange(0, 8760)  

这段代码有效地创建了一个从 0 到 8759(代表一年中的每个小时)的 numpy 数组,我将其用作绘图的 X 轴值。

接下来,我使用这些时间戳绘制了温度数据matplotlib.

温度读数存储在temperature_values大批。我使用以下代码来创建绘图:


import matplotlib.pyplot as plt
plt.plot(hours, temperature_values)
plt.xlabel('Hour of the Year')
plt.ylabel('Temperature')
plt.show()  

NumPyarange()函数使得创建必要的时间数据变得异常简单和高效。

 

进一步阅读

https://numpy.org/doc/stable/reference/ generated/numpy.arange.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python NumPy arange() 教程 的相关文章

  • 存储为 np.arrays 的不同数据集的分组堆积条形图

    我正在研究一个平衡问题 我想比较一些数据 我想通过创建不同年份的堆叠条形图来做到这一点 每年 我想要两个不同数据集的堆叠条形图 我正在尝试创建一种 分组堆积条形图 我设法创建了我想要比较的 2 个堆叠条形图 但它们仍然位于两个不同的图中 我
  • from __future__ importabsolute_import 实际上做了什么?

    I have answered https stackoverflow com a 22679558 2588818一个关于Python中绝对导入的问题 我认为我通过阅读理解了这个问题Python 2 5 变更日志 https docs p
  • 有没有办法离线将多个 Plotly HTML 文件合并/嵌入到一个页面/HTML 文件中?

    我正在尝试将多个图表合并成一个 HTML 报告来发送 问题是我真的不认为子图是最好的主意 因为图表相对不相关 不同的 X Y 轴 我所需要做的只是将图表附加到 1 个 HTML 文件中 有一个指南解释了如何使用绘图 URL 来完成此操作 但
  • 将 python scikit learn 模型导出到 pmml

    我想将 python scikit learn 模型导出到 PMML 中 什么 python 包最适合 我读到Augustus https github com opendatagroup augustus 但我找不到任何使用 scikit
  • Python中的键盘可中断阻塞队列

    It seems import Queue Queue Queue get timeout 10 键盘可中断 ctrl c 而 import Queue Queue Queue get 不是 我总是可以创建一个循环 import Queue
  • 是否可以在 SQLAlchemy 中创建一个可以创建父记录的事件侦听器?

    有两个表 父表和子表 我想创建一个事件监听器 触发器 如果孩子没有父母 它可以创建父母 这就是我试图做的 class parent db Model tablename parent id db Column db Integer prim
  • 在 AWS Elastic Beanstalk 中部署 Flask 应用程序

    当我部署 Flask 应用程序时 它显示成功 但是当我检索日志时 我看到错误 找不到 Flask 我的需求文件中有烧瓶 任何帮助 Sat Jan 11 06 51 50 503908 2020 error pid 3393 remote 1
  • PyKCS11 不可哈希列表

    我的 python 脚本旨在获取特定 so 库中插槽 令牌的详细信息 输出如下所示 Library manufacturerID Safenet Inc Available Slots 4 Slot no 0 slotDescription
  • Matplotlib 动画未显示

    当我在家里的电脑上尝试这个时 它可以工作 但在工作的电脑上却不行 这是代码 import numpy as np import matplotlib pyplot as plt import matplotlib animation as
  • 如何在 PyCharm 中启用 flake8 的自动代码格式化

    我使用 Tox 运行单元测试 并使用 flake8 命令检查代码格式错误 每次我在 PyCharm 中编码时 我都会运行 tox 然后意识到我有一堆烦人的格式错误 我必须返回并手动修复 我希望 PyCharm 自动格式化代码 根据 flak
  • 使用底图和Python在地图中绘制海洋

    我正在绘制此处提供的 netCDF 文件 https goo gl QyUI4J https goo gl QyUI4J Using the code below the map looks like this 然而 我希望海洋是白色的 更
  • 在用户提交的正则表达式中查找捕获组

    我有一个 python 应用程序 需要处理用户提交的正则表达式 出于性能考虑 我想禁止捕获组和反向引用 我的想法是使用另一个正则表达式来验证用户提交的正则表达式不包含任何命名或未命名的组捕获 如下所示 def validate user r
  • 模拟导入失败

    我该如何制作import pkg失败moduleA py 我可以打补丁pkg如果从中导入某些内容则会失败 否则不会失败 test py import os import moduleA from unittest mock import p
  • 如何在 Python 中重命名文件并保留创建日期

    我知道创建日期不存储在文件系统本身中 但是当我使用时我遇到了问题os rename 它正在更新我正在使用的文件的创建日期 是否可以重命名文件而不更改其原始创建日期 正如都铎所说 你可以使用os stat http docs python o
  • 为什么删除 DataFrame 的列或部分会增加内存使用量,以及如何确保对未使用的 DataFrame 切片进行垃圾回收

    处理大型 DataFrame 时 您需要小心内存使用情况 例如 您可能想要分块下载大数据 处理这些块 然后从内存中删除所有不必要的部分 我找不到任何有关处理垃圾收集的最佳程序的资源pandas 但我尝试了以下方法并得到了令人惊讶的结果 im
  • 对二进制数的字符串表示进行按位运算 python 2.7

    我想对二进制数的两个字符串表示执行按位或 但我不知道如何将字符串转换为原始二进制 a 010110 b 100000 a b 应该产生 110110 然后我想计算 on 位的数量 这应该返回 4 您可以使用内置的将字符串转换为二进制int
  • Mac OS 上的 pybluez 安装错误

    我尝试安装pybluez使用以下命令 pip install pybluez sudo easy install pybluez 但对于这两个命令我最终都会出错 环境 Mac OSX 10 9 1 Python 2 7 点日志 cc fno
  • Python 中的“lambda”是什么意思,最简单的使用方法是什么?

    您能否给出一个示例和其他示例来说明何时以及何时不使用 Lambda 我的书给了我一些例子 但它们很令人困惑 拉姆达 起源于拉姆达演算 http en wikipedia org wiki Lambda calculus和 AFAIK 首先实
  • 保存 Jupyter Notebook,并显示 Plotly Express 小部件

    我有一个 Jupyter 笔记本 python 我使用plotlyexpress 在笔记本中绘图以进行分析 我想与非编码人员共享此笔记本 并让交互式视觉效果仍然可用 但它似乎不起作用 我尝试以下此处提出的建议 https community
  • 交响二阶颂歌

    我有一个简单的二阶 ODE 的齐次解 当我尝试使用 Sympy 求解初始值时 它返回相同的解 它应该替代 y 0 和 y 0 并产生一个没有常数的解 但事实并非如此 这是建立方程的代码 它是一个弹簧平衡方程 k 弹簧常数 m 质量 我在其他

随机推荐

  • 如何在 Ubuntu 15.10、14.04 和 12.04 上安装 RabbitVCS

    兔子VCS是版本管理系统 SVN 和 Git 的图形客户端 它提供了一个简单且易于使用的图形用户界面 可以说 RabbitVCS 是 TortoiseSVN 的最佳 Linux 替代品 本教程将帮助您在 Ubuntu 15 10 14 04
  • 如何更改 Linux 内核中的 Swappiness 值

    Swappiness 是一个 Linux 内核参数 用于控制交换空闲进程和使用可用 RAM 内存之间的平衡 大多数Linux发行版中的默认交换值是60 这意味着当可用内存低于40 时系统开始交换进程 但是 此默认值可能并不适合所有情况 更改
  • Linux 中的 du 命令及有用示例

    du 是缺少磁盘使用 这意味着 du 命令计算文件在磁盘上使用的大小 它是Linux系统用户经常使用的基本Linux命令 Syntax du OPTION FILE 在本教程中 您将通过有用的示例了解 du 命令在 Linux 中的用法 d
  • 如何在 PHP 中向数组追加项目

    问题 如何在 PHP 中向数组追加项目 如何在 PHP 中将任何元素追加到现有数组的末尾 如何在 PHP 中将元素推送到数组 本教程使用数组推 函数将新元素插入或追加到数组末尾 PHP 将元素追加到数组 以下示例创建一个包含两个元素 如 b
  • 如何在 Ubuntu 18.04 上安装 Yarn

    Yarn 是一个与 npm 兼容的 JavaScript 包管理器 可帮助您自动执行安装 更新 配置和删除 npm 包的过程 它的创建是为了解决 npm 的一系列问题 例如通过并行操作加快软件包安装过程并减少与网络连接相关的错误 在本教程中
  • 如何在 CentOS 7 上安装 Python 3

    本教程将指导您使用 Software Collections SCL 以及发行版默认 Python 版本 2 7 在 CentOS 7 系统上安装 Python 3 我们还将向您展示如何创建 Python 虚拟环境 Python 是世界上最
  • 如何在 Debian 10 Linux 上安装 Vagrant

    Vagrant是一个用于构建和管理虚拟机环境的开源命令行工具 默认情况下 Vagrant 可以在 VirtualBox Hyper V 之上配置计算机 和码头工人 其他提供商如 Libvirt KVM VMware 和 AWS 可以通过 V
  • Linux 中的 Wget 命令及示例

    GNU Wget 是一个用于从网络下载文件的命令行实用程序 使用 Wget 您可以使用 HTTP HTTPS 和 FTP 协议下载文件 Wget 提供了许多选项 允许您下载多个文件 恢复下载 限制带宽 递归下载 后台下载 镜像网站等等 本文
  • 如何在 Ubuntu 20.04 上安装 Odoo 15

    Odoo 是一款流行的开源商业应用程序套件 可帮助公司管理和运营其业务 它包括广泛的应用程序 例如 CRM 电子商务 网站构建器 计费 会计 制造 仓库 项目管理 库存等等 所有这些都无缝集成 Odoo根据使用案例和可用技术 可以以不同的方
  • 如何在 Debian 10 Linux 上安装 Node.js 和 npm

    Node js 是一个基于 Chrome JavaScript 构建的跨平台 JavaScript 运行时环境 旨在在服务器端执行 JavaScript 代码 使用 Node js 您可以构建可扩展的网络应用程序 npm 是 Node js
  • 如何在 Debian 9 上安装 Java

    在本教程中 我们将逐步介绍在 Debian 9 上安装 Java Java 是用于构建不同类型的应用程序和系统的最流行的编程语言之一 用 Java 开发的应用程序具有可扩展性 灵活性和可维护性 有两种不同的 Java 包 Java 运行时环
  • 如何在 Debian 9 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 本教程提供了在 Debian 9 系统上安装 Compos
  • 如何列出 CentOS 上已安装的软件包

    在本教程中 我们将向您展示如何列出和过滤 CentOS 上已安装的软件包 当您需要在另一台计算机上安装相同的软件包或想要重新安装系统时 了解如何列出 CentOS 系统上已安装的软件包会很有帮助 我们还将向您展示如何检查是否安装了特定的软件
  • 如何检查您的 CentOS 版本

    当您第一次登录 CentOS 计算机时 在进行任何工作之前 您可能需要检查系统上运行的 CentOS 版本 在本教程中 我们将展示几个不同的命令 了解如何检查系统上安装的 CentOS 版本 截至撰写本文时 CentOS Linux 拥有三
  • 如何在 CentOS 8 上添加交换空间

    交换空间是磁盘上的空间 当物理 RAM 内存已满时使用 当 Linux 系统耗尽 RAM 时 非活动页面将从 RAM 移至交换空间 交换空间可以采用专用交换分区或交换文件的形式 通常 在虚拟机上运行 CentOS 时 不存在交换分区 因此唯
  • 配置 Magento 2 在 CentOS 7 上使用 Varnish

    页面速度或加载时间对于在线商店的成功至关重要 加载时间是加载特定页面上的内容所需的总时间 加载时间越长 转化率越低 这也是谷歌考虑确定搜索引擎排名的最重要因素之一 在第一篇文章中 我们在 CentOS 7 机器上安装了 Magento 2
  • 自动启动 wampserver 在 Windows 10 上自动启动

    在向您展示如何自动启动 wampserver 之前 我先简单介绍一下 Wampserver 是 Windows 平台上最好的 Web 开发堆栈之一 与 xampp 相比 我更喜欢它 因为它有方便的托盘菜单 可以让我访问任何配置 您可以从此网
  • 使用 Sed 命令删除行:Linux 文本删除教程

    Using sed命令从文件或流中删除行是常见操作 使用删除行的基本语法sed如下 sed pattern to match d filename Here pattern to match是您要在文件的每一行中匹配的模式 如果一行包含指定
  • 使用 to_sql 将 Python Pandas DataFrame 导出到 SQL

    The to sql函数允许您将存储在 DataFrame 中的记录写入 SQL 数据库 通过使用 SQLAlchemy 可以使用该库支持的任何数据库 在接下来的部分中 我们将更深入地研究此功能并探索更多功能 目录 hide 1 基本语法和
  • Python NumPy arange() 教程

    NumPyarange 函数用于生成给定区间内的值序列 您可以将其视为数字范围生成器 它允许您创建一个 NumPy 数组 其值在指定范围内均匀分布 它提供了更多功能 例如使用浮点数的能力以及显式定义数组中包含的值的间隔的灵活性 在本教程中