def linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0): """ Return evenly spaced numbers over a specified interval. Returns `num` evenly spaced samples, calculated over the interval [`start`, `stop`]. The endpoint of the interval can optionally be excluded. .. versionchanged:: 1.16.0 Non-scalar `start` and `stop` are now supported. .. versionchanged:: 1.20.0 Values are rounded towards ``-inf`` instead of ``0`` when an integer ``dtype`` is specified. The old behavior can still be obtained with ``np.linspace(start, stop, num).astype(int)`` Parameters ---------- start : array_like The starting value of the sequence. stop : array_like The end value of the sequence, unless `endpoint` is set to False. In that case, the sequence consists of all but the last of ``num + 1`` evenly spaced samples, so that `stop` is excluded. Note that the step size changes when `endpoint` is False. num : int, optional Number of samples to generate. Default is 50. Must be non-negative. endpoint : bool, optional If True, `stop` is the last sample. Otherwise, it is not included. Default is True. retstep : bool, optional If True, return (`samples`, `step`), where `step` is the spacing between samples. dtype : dtype, optional The type of the output array. If `dtype` is not given, the data type is inferred from `start` and `stop`. The inferred dtype will never be an integer; `float` is chosen even if the arguments would produce an array of integers. .. versionadded:: 1.9.0 axis : int, optional The axis in the result to store the samples. Relevant only if start or stop are array-like. By default (0), the samples will be along a new axis inserted at the beginning. Use -1 to get an axis at the end. .. versionadded:: 1.16.0 Returns ------- samples : ndarray There are `num` equally spaced samples in the closed interval ``[start, stop]`` or the half-open interval ``[start, stop)`` (depending on whether `endpoint` is True or False). step : float, optional Only returned if `retstep` is True Size of spacing between samples. See Also -------- arange : Similar to `linspace`, but uses a step size (instead of the number of samples). geomspace : Similar to `linspace`, but with numbers spaced evenly on a log scale (a geometric progression). logspace : Similar to `geomspace`, but with the end points specified as logarithms. Examples -------- >>> np.linspace(2.0, 3.0, num=5) array([2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) Graphical illustration: >>> import matplotlib.pyplot as plt >>> N = 8 >>> y = np.zeros(N) >>> x1 = np.linspace(0, 10, N, endpoint=True) >>> x2 = np.linspace(0, 10, N, endpoint=False) >>> plt.plot(x1, y, 'o') [
] >>> plt.plot(x2, y + 0.5, 'o') [ ] >>> plt.ylim([-0.5, 1]) (-0.5, 1) >>> plt.show() """ num = operator.index(num) if num < 0: raise ValueError("Number of samples, %s, must be non-negative." % num) div = (num - 1) if endpoint else num # Convert float/complex array scalars to float, gh-3504 # and make sure one can use variables that have an __array_interface__, gh-6634 start = asanyarray(start) * 1.0 stop = asanyarray(stop) * 1.0 dt = result_type(start, stop, float(num)) if dtype is None: dtype = dt delta = stop - start y = _nx.arange(0, num, dtype=dt).reshape((-1,) + (1,) * ndim(delta)) # In-place multiplication y *= delta/div is faster, but prevents the multiplicant # from overriding what class is produced, and thus prevents, e.g. use of Quantities, # see gh-7142. Hence, we multiply in place only for standard scalar types. _mult_inplace = _nx.isscalar(delta) if div > 0: step = delta / div if _nx.any(step == 0): # Special handling for denormal numbers, gh-5437 y /= div if _mult_inplace: y *= delta else: y = y * delta else: if _mult_inplace: y *= step else: y = y * step else: # sequences with 0 items or 1 item with endpoint=True (i.e. div <= 0) # have an undefined step step = NaN # Multiply with delta to allow possible override of output class. y = y * delta y += start if endpoint and num > 1: y[-1] = stop if axis != 0: y = _nx.moveaxis(y, 0, axis) if _nx.issubdtype(dtype, _nx.integer): _nx.floor(y, out=y) if retstep: return y.astype(dtype, copy=False), step else: return y.astype(dtype, copy=False) 返回指定间隔内的等距数字。
返回“num”均匀分布的样本,在间隔['start','stop`]。返回指定间隔内的等距数字。
可以选择排除间隔的端点。
参数
----------
start:array_like
序列的起始值。
stop:array_like
序列的结束值,除非“endpoint”设置为False。在这种情况下,序列由除最后一个以外的所有``num+1组成``均匀分布的样本,以便排除“停止”。请注意,步骤当“endpoint”为False时,大小会发生变化。
num:int,可选
要生成的样本数。默认值为50。必须是非负的。
端点:bool,可选
如果为True,“stop”是最后一个示例。否则不包括在内。默认是真的。
retstep:bool,可选
如果为True,则返回('samples','step'),其中'step'是间距
在样本之间。
dtype:dtype,可选
输出数组的类型。如果未给出'dtype',则为数据类型由“开始”和“停止”推断。推断出的数据类型永远不会被删除整数`即使参数会产生整数数组。
轴:int,可选
结果中用于存储样本的轴。只有在启动时才相关或停止是阵列式的。默认情况下(0),样本将沿着开始处插入新轴。使用-1在末尾获得一个轴。Returns
-------samples :Ndaray
在闭合间隔中有'num'等间距的样本
``[start,stop]``或半开区间```或[start,stop]``
(取决于“endpoint”是真是假)。step : float, optional
仅当'retstep'为真时返回
样本之间的间距大小。
另见
--------
arange:与“linspace”类似,但使用步长(而不是样本数量)。
geomspace:类似于“linspace”,但数字在一根圆木上均匀分布比例(几何级数)。
logspace:类似于“geomspace”,但端点指定为对数。Examples -------- >>> np.linspace(2.0, 3.0, num=5) array([2. , 2.25, 2.5 , 2.75, 3. ]) >>> np.linspace(2.0, 3.0, num=5, endpoint=False) array([2. , 2.2, 2.4, 2.6, 2.8]) >>> np.linspace(2.0, 3.0, num=5, retstep=True) (array([2. , 2.25, 2.5 , 2.75, 3. ]), 0.25) Graphical illustration: >>> import matplotlib.pyplot as plt >>> N = 8 >>> y = np.zeros(N) >>> x1 = np.linspace(0, 10, N, endpoint=True) >>> x2 = np.linspace(0, 10, N, endpoint=False) >>> plt.plot(x1, y, 'o') [] >>> plt.plot(x2, y + 0.5, 'o') [ ] >>> plt.ylim([-0.5, 1])