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.])
主要区别是:
-
端点包含:
np.arange()
默认情况下不包括端点,而np.linspace()
确实包括端点。
-
返回类型:两个函数都返回一个 numpy.ndarray,但是
np.linspace()
即使输入是整数(由于其内部计算),也可以返回具有浮点数的数组。
使用 arange() 与 linspace() 的优缺点
np.arange()
and np.linspace()
都是 NumPy 中强大的函数,可以生成具有均匀间隔值的数组。
但是,根据您的需要,一种功能可能比另一种更合适。这是它们的优点和缺点的比较。
使用 arange() 的优点:
-
简单:
np.arange()
与 Python 的内置 range 函数类似,对于从普通 Python 过渡到 NumPy 的人来说非常直观。
-
基于步长的间距:
np.arange()
根据定义的“步长”大小生成序列,当您需要值之间的特定增量时,这会很有帮助。
使用 arange() 的缺点:
-
排除止损值: 默认情况下,
np.arange()
数组中不包含停止值,这可能会造成混乱。
-
浮点精度:使用时
np.arange()
对于浮点步长值,由于浮点算术的有限精度,输出大小可能无法预测。
使用 linspace() 的优点:
-
包括端点:
np.linspace()
默认情况下包括端点,这在许多情况下都是可取的。
-
控制元素数量: With
np.linspace()
,您可以指定数组中所需元素的确切数量,这在您需要特定大小的数组时提供更精细的控制。
使用 linspace() 的缺点:
-
复杂:
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])
以下是主要区别:
-
返回类型:Python的
range()
函数返回一个range
需要转换为列表以显示其值的对象。另一方面,np.arange()
直接返回一个 NumPy 数组(numpy.ndarray)。
-
与浮动体一起使用:Python的
range()
仅适用于整数开始、停止和步长值,而np.arange()
可以接受浮点数。
-
表现:
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