numpy.arange#
- numpy.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 内置的
range,但返回一个ndarray而不是range实例.当使用非整数步长(例如 0.1)时,通常最好使用
numpy.linspace.有关更多信息,请参见下面的“警告”部分.
- 参数:
- startinteger 或 real,可选
间隔的起始值.该区间包含此值.默认起始值为0.
- stopinteger 或 real
间隔的结束值.该区间不包含此值,除非在某些情况下 step 不是整数并且浮点舍入会影响 out 的长度.
- stepinteger 或 real,可选
值之间的间距.对于任何输出 out ,这是两个相邻值之间的距离,
out[i+1] - out[i].默认步长为 1.如果 step 被指定为位置参数,则还必须给出 start .- dtypedtype, optional
输出数组的类型.如果未给定
dtype,则从其他输入参数推断数据类型.- devicestr, optional
放置创建的数组的设备.默认值:
None.仅用于 Array-API 互操作性,因此如果传递,则必须为"cpu".在 2.0.0 版本加入.
- likearray_like, optional
参考对象以允许创建非NumPy数组的数组. 如果作为
like传入的类数组支持__array_function__协议,则结果将由它定义. 在这种情况下,它可以确保创建与通过此参数传入的数组对象兼容的数组对象.在 1.20.0 版本加入.
- 返回:
- arangendarray
均匀间隔的值的数组.
对于浮点参数,结果的长度是
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.内置的
range生成 Python built-in integers that have arbitrary size ,而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])