numpy.ma.arange#
- ma.arange([start, ]stop, [step, ]dtype=None, *, device=None, like=None)[源代码]#
在给定区间内返回等间隔的值。
arange可以通过可变数量的位置参数调用arange(stop):值在半开区间[0, stop)中生成(换句话说,包含 start 但不包含 stop 的区间)。arange(start, stop):值在半开区间[start, stop)中生成。arange(start, stop, step)值在半开区间[start, stop)中生成,相邻值之间的间隔由step指定。
对于整数参数,该函数大致等同于 Python 内置的 (Python v3.14)
range,但返回的是 ndarray 而不是range实例。当使用非整数步长(例如 0.1)时,通常最好使用
numpy.linspace。有关更多信息,请参阅下面的“警告”部分。
- 参数:
- start整数或实数,可选
区间的开始。区间包含此值。默认的起始值为 0。
- stop整数或实数
区间的结束。区间不包含此值,除非在某些 step 不是整数且浮点数舍入误差影响 out 长度的情况下。
- step整数或实数,可选
值之间的间隔。对于任何输出 out,这是两个相邻值之间的距离,即
out[i+1] - out[i]。默认的步长为 1。如果 step 被指定为位置参数,则还必须提供 start。- dtypedtype, optional
输出数组的类型。如果未给出
dtype,则从其他输入参数推断数据类型。- devicestr,可选
创建的数组所在的设备。默认为
None。仅用于 Array-API 互操作性,因此如果传递,必须是"cpu"。版本 2.0.0 中新增。
- likearray_like, optional
用于创建非 NumPy 数组的引荐对象。如果传入的
like支持__array_function__协议,则结果将由它定义。在这种情况下,它确保创建与通过此参数传入的数组兼容的数组对象。版本 1.20.0 中新增。
- 返回:
- arangeMaskedArray
等间隔值的数组。
对于浮点数参数,结果的长度为
ceil((stop - start)/step)。由于浮点数溢出,此规则可能导致 out 的最后一个元素大于 stop。
警告
输出的长度可能在数值上不稳定。
另一个稳定性问题是由于
numpy.arange的内部实现。用于填充数组的实际步长值是dtype(start + step) - dtype(start),而不是 step。此处可能会发生精度损失,原因可能是由于类型转换或使用浮点数(当 start 远大于 step 时)。这可能导致意外行为。例如:>>> np.arange(0, 5, 0.5, dtype=int) array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) >>> np.arange(-3, 3, 0.5, dtype=int) array([-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
在这种情况下,应首选
numpy.linspace。内置的 (Python v3.14)
range会生成具有任意大小的 (Python v3.14) Python 内置整数,而numpy.arange生成的是numpy.int32或numpy.int64数字。这可能导致大整数值的结果不正确。>>> power = 40 >>> modulo = 10000 >>> x1 = [(n ** power) % modulo for n in range(8)] >>> x2 = [(n ** power) % modulo for n in np.arange(8)] >>> print(x1) [0, 1, 7776, 8801, 6176, 625, 6576, 4001] # correct >>> print(x2) [0, 1, 7776, 7185, 0, 5969, 4816, 3361] # incorrect
另请参阅
numpy.linspace带有精确端点处理的等间隔数字。
numpy.ogridN 维等间隔数字数组。
numpy.mgridN 维等间隔数字的网格状数组。
- 如何创建具有规则间隔值的数组
示例
>>> import numpy as np >>> np.arange(3) array([0, 1, 2]) >>> np.arange(3.0) array([ 0., 1., 2.]) >>> np.arange(3,7) array([3, 4, 5, 6]) >>> np.arange(3,7,2) array([3, 5])