control API Reference
Full documentation for control (0.10.2)
control.ControlArgument
Python Library Documentation: class ControlArgument in module control.exception class ControlArgument(builtins.TypeError) | Raised when arguments to a function are not correct. | | Method resolution order: | ControlArgument | builtins.TypeError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.TypeError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.TypeError: | | __new__(*args, **kwargs) class method of builtins.TypeError | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.ControlDimension
Python Library Documentation: class ControlDimension in module control.exception class ControlDimension(builtins.ValueError) | Raised when dimensions of system objects are not correct. | | Method resolution order: | ControlDimension | builtins.ValueError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.ValueError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.ValueError: | | __new__(*args, **kwargs) class method of builtins.ValueError | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.ControlIndexError
Python Library Documentation: class ControlIndexError in module control.exception class ControlIndexError(builtins.IndexError) | Raised when arguments to an indexed object are not correct. | | Method resolution order: | ControlIndexError | builtins.IndexError | builtins.LookupError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.IndexError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.IndexError: | | __new__(*args, **kwargs) class method of builtins.IndexError | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.ControlMIMONotImplemented
Python Library Documentation: class ControlMIMONotImplemented in module control.exception class ControlMIMONotImplemented(builtins.NotImplementedError) | Function is not currently implemented for MIMO systems. | | Method resolution order: | ControlMIMONotImplemented | builtins.NotImplementedError | builtins.RuntimeError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.NotImplementedError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.NotImplementedError: | | __new__(*args, **kwargs) class method of builtins.NotImplementedError | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.ControlNotImplemented
Python Library Documentation: class ControlNotImplemented in module control.exception class ControlNotImplemented(builtins.NotImplementedError) | Functionality is not yet implemented. | | Method resolution order: | ControlNotImplemented | builtins.NotImplementedError | builtins.RuntimeError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.NotImplementedError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | ---------------------------------------------------------------------- | Static methods inherited from builtins.NotImplementedError: | | __new__(*args, **kwargs) class method of builtins.NotImplementedError | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __reduce__(...) | Helper for pickle. | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | __str__(self, /) | Return str(self). | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.ControlPlot
Python Library Documentation: class ControlPlot in module control.ctrlplot class ControlPlot(builtins.object) | ControlPlot(lines, axes=None, figure=None, legend=None) | | Return class for control platting functions. | | This class is used as the return type for control plotting functions. | It contains the information required to access portions of the plot | that the user might want to adjust, as well as providing methods to | modify some of the properties of the plot. | | A control figure consists of a `matplotlib.figure.Figure` with | an array of `matplotlib.axes.Axes`. Each axes in the figure has | a number of lines that represent the data for the plot. There may also | be a legend present in one or more of the axes. | | Parameters | ---------- | lines : array of list of `matplotlib.lines.Line2D` | Array of Line2D objects for each line in the plot. Generally, the | shape of the array matches the subplots shape and the value of the | array is a list of Line2D objects in that subplot. Some plotting | functions will return variants of this structure, as described in | the individual documentation for the functions. | axes : 2D array of `matplotlib.axes.Axes` | Array of Axes objects for each subplot in the plot. | figure : `matplotlib.figure.Figure` | Figure on which the Axes are drawn. | legend : `matplotlib.legend.Legend` (instance or ndarray) | Legend object(s) for the plot. If more than one legend is | included, this will be an array with each entry being either None | (for no legend) or a legend object. | | Methods defined here: | | __getitem__(self, item) | | __init__(self, lines, axes=None, figure=None, legend=None) | Initialize self. See help(type(self)) for accurate signature. | | __iter__ lambda self | # Implement methods and properties to allow legacy interface (np.array) | | __len__ lambda self | | __setitem__(self, item, val) | | reshape(self, *args) | Reshape lines array (legacy). | | set_plot_title(self, title, frame='axes') | Set the title for a control plot. | | This is a wrapper for the matplotlib `suptitle` function, but by | setting `frame` to 'axes' (default) then the title is centered on | the midpoint of the axes in the figure, rather than the center of | the figure. This usually looks better (particularly with | multi-panel plots), though it takes longer to render. | | Parameters | ---------- | title : str | Title text. | fig : Figure, optional | Matplotlib figure. Defaults to current figure. | frame : str, optional | Coordinate frame for centering: 'axes' (default) or 'figure'. | **kwargs : `matplotlib.pyplot.suptitle` keywords, optional | Additional keywords (passed to matplotlib). | | ---------------------------------------------------------------------- | Readonly properties defined here: | | shape | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.ControlSlycot
Python Library Documentation: class ControlSlycot in module control.exception class ControlSlycot(builtins.ImportError) | Slycot import failed. | | Method resolution order: | ControlSlycot | builtins.ImportError | builtins.Exception | builtins.BaseException | builtins.object | | Data descriptors defined here: | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.ImportError: | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __reduce__(...) | Helper for pickle. | | __str__(self, /) | Return str(self). | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.ImportError: | | msg | exception message | | name | module name | | name_from | name imported from module | | path | module path | | ---------------------------------------------------------------------- | Static methods inherited from builtins.Exception: | | __new__(*args, **kwargs) class method of builtins.Exception | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Methods inherited from builtins.BaseException: | | __getattribute__(self, name, /) | Return getattr(self, name). | | __repr__(self, /) | Return repr(self). | | __setstate__(...) | | add_note(...) | Exception.add_note(note) -- | add a note to the exception | | with_traceback(...) | Exception.with_traceback(tb) -- | set self.__traceback__ to tb and return self. | | ---------------------------------------------------------------------- | Data descriptors inherited from builtins.BaseException: | | __cause__ | exception cause | | __context__ | exception context | | __dict__ | | __suppress_context__ | | __traceback__ | | args
control.DescribingFunctionNonlinearity
Python Library Documentation: class DescribingFunctionNonlinearity in module control.descfcn class DescribingFunctionNonlinearity(builtins.object) | Base class for nonlinear systems with a describing function. | | This class is intended to be used as a base class for nonlinear functions | that have an analytically defined describing function. Subclasses should | override the `__call__` and `describing_function` methods and (optionally) | the `_isstatic` method (should be False if `__call__` updates the | instance state). | | Methods defined here: | | __call__(self, A) | Evaluate the nonlinearity at a (scalar) input value. | | __init__(self) | Initialize a describing function nonlinearity (optional). | | describing_function(self, A) | Return the describing function for a nonlinearity. | | This method is used to allow analytical representations of the | describing function for a nonlinearity. It turns the (complex) value | of the describing function for sinusoidal input of amplitude `A`. | | Parameters | ---------- | A : float | Amplitude of the sinusoidal input to the nonlinearity. | | Returns | ------- | float | Value of the describing function at the given amplitude. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.DescribingFunctionResponse
Python Library Documentation: class DescribingFunctionResponse in module control.descfcn class DescribingFunctionResponse(builtins.object) | DescribingFunctionResponse(response, N_vals, positions, intersections) | | Results of describing function analysis. | | Describing functions allow analysis of a linear I/O systems with a | nonlinear feedback function. The DescribingFunctionResponse class | is used by the `describing_function_response` function to return | the results of a describing function analysis. The response | object can be used to obtain information about the describing | function analysis or generate a Nyquist plot showing the frequency | response of the linear systems and the describing function for the | nonlinear element. | | Parameters | ---------- | response : `FrequencyResponseData` | Frequency response of the linear system component of the system. | intersections : 1D array of 2-tuples or None | A list of all amplitudes and frequencies in which | :math:`H(j\omega) N(A) = -1`, where :math:`N(A)` is the describing | function associated with `F`, or None if there are no such | points. Each pair represents a potential limit cycle for the | closed loop system with amplitude given by the first value of the | tuple and frequency given by the second value. | N_vals : complex array | Complex value of the describing function, indexed by amplitude. | positions : list of complex | Location of the intersections in the complex plane. | | Methods defined here: | | __getitem__(self, index) | | __init__(self, response, N_vals, positions, intersections) | Create a describing function response data object. | | __iter__(self) | # Implement iter, getitem, len to allow recovering the intersections | | __len__(self) | | plot(self, **kwargs) | Plot the results of a describing function analysis. | | See `describing_function_plot` for details. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.FRD
Python Library Documentation: class FrequencyResponseData in module control.frdata
class FrequencyResponseData(control.lti.LTI)
| FrequencyResponseData(*args, **kwargs)
|
| FrequencyResponseData(frdata, omega[, smooth])
|
| Input/output model defined by frequency response data (FRD).
|
| The FrequencyResponseData (FRD) class is used to represent systems in
| frequency response data form. It can be created manually using the
| class constructor, using the `frd` factory function, or
| via the `frequency_response` function.
|
| Parameters
| ----------
| frdata : 1D or 3D complex array_like
| The frequency response at each frequency point. If 1D, the system is
| assumed to be SISO. If 3D, the system is MIMO, with the first
| dimension corresponding to the output index of the FRD, the second
| dimension corresponding to the input index, and the 3rd dimension
| corresponding to the frequency points in `omega`. When accessed as an
| attribute, `frdata` is always stored as a 3D array.
| omega : iterable of real frequencies
| List of monotonically increasing frequency points for the response.
| smooth : bool, optional
| If True, create an interpolation function that allows the frequency
| response to be computed at any frequency within the range of
| frequencies give in `omega`. If False (default), frequency response
| can only be obtained at the frequencies specified in `omega`.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
| squeeze : bool
| By default, if a system is single-input, single-output (SISO) then
| the outputs (and inputs) are returned as a 1D array (indexed by
| frequency) and if a system is multi-input or multi-output, then the
| outputs are returned as a 2D array (indexed by output and
| frequency) or a 3D array (indexed by output, trace, and frequency).
| If `squeeze` = True, access to the output response will remove
| single-dimensional entries from the shape of the inputs and outputs
| even if the system is not SISO. If `squeeze` = False, the output is
| returned as a 3D array (indexed by the output, input, and
| frequency) even if the system is SISO. The default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| sysname : str or None
| Name of the system that generated the data.
|
| Attributes
| ----------
| complex : array
| Complex frequency response, indexed by output index, input index, and
| frequency point, with squeeze processing.
| magnitude : array
| Magnitude of the frequency response, indexed by output index, input
| index, and frequency point, with squeeze processing.
| phase : array
| Phase of the frequency response, indexed by output index, input index,
| and frequency point, with squeeze processing.
| frequency : 1D array
| Array of frequency points for which data are available.
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : array of str
| Names for the input and output signals.
| name : str
| System name. For data generated using
| `frequency_response`, stores the name of the
| system that created the data.
|
| Other Parameters
| ----------------
| plot_type : str, optional
| Set the type of plot to generate with `~FrequencyResponseData.plot`
| ('bode', 'nichols').
| title : str, optional
| Set the title to use when plotting.
| plot_magnitude, plot_phase : bool, optional
| If set to False, don't plot the magnitude or phase, respectively.
| return_magphase : bool, optional
| If True, then a frequency response data object will enumerate
| as a tuple of the form ``(mag, phase, omega)`` where where `mag`
| is the magnitude (absolute value, not dB or log10) of the system
| frequency response, `phase` is the wrapped phase in radians of the
| system frequency response, and `omega` is the (sorted) frequencies
| at which the response was evaluated.
|
| See Also
| --------
| frd, frequency_response, InputOutputSystem, TransferFunction
|
| Notes
| -----
| The main data members are `omega` and `frdata`, where `omega` is a 1D
| array of frequency points and and `frdata` is a 3D array of frequency
| responses, with the first dimension corresponding to the output index of
| the FRD, the second dimension corresponding to the input index, and the
| 3rd dimension corresponding to the frequency points in omega. For example,
|
| >>> frdata[2,5,:] = numpy.array([1., 0.8-0.2j, 0.2-0.8j]) # doctest: +SKIP
|
| means that the frequency response from the 6th input to the 3rd output at
| the frequencies defined in omega is set to the array above, i.e. the rows
| represent the outputs and the columns represent the inputs.
|
| A frequency response data object is callable and returns the value of the
| transfer function evaluated at a point in the complex plane (must be on
| the imaginary axis). See `FrequencyResponseData.__call__`
| for a more detailed description.
|
| Subsystem response corresponding to selected input/output pairs can be
| created by indexing the frequency response data object::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| Method resolution order:
| FrequencyResponseData
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x=None, squeeze=None, return_magphase=None)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems. For a frequency response data
| object, the argument should be an imaginary number (since only the
| frequency response is defined) and only the imaginary component of
| `x` will be used.
|
| By default, a (complex) scalar will be returned for SISO systems
| and a p x m array will be return for MIMO systems with m inputs and
| p outputs. This can be changed using the `squeeze` keyword.
|
| To evaluate at a frequency `omega` in radians per second, enter ``x
| = omega * 1j`` for continuous-time systems, ``x = exp(1j * omega *
| dt)`` for discrete-time systems, or use the
| `~LTI.frequency_response` method.
|
| If `x` is not given, this function creates a copy of a frequency
| response data object with a different set of output settings.
|
| Parameters
| ----------
| x : complex scalar or 1D array_like
| Imaginary value(s) at which frequency response will be evaluated.
| The real component of `x` is ignored. If not specified, return
| a copy of the frequency response data object with updated
| settings for output processing (`squeeze`, `return_magphase`).
| squeeze : bool, optional
| Squeeze output, as described below. Default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| return_magphase : bool, optional
| (`x` = None only) If True, then a frequency response data object
| will enumerate as a tuple of the form ``(mag, phase, omega)``
| where where `mag` is the magnitude (absolute value, not dB or
| log10) of the system frequency response, `phase` is the wrapped
| phase in radians of the system frequency response, and `omega` is
| the (sorted) frequencies at which the response was evaluated.
|
| Returns
| -------
| frdata : complex ndarray
| The value of the system transfer function at `x`. If the system
| is SISO and `squeeze` is not True, the shape of the array matches
| the shape of `x`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for the
| output and input and the remaining dimensions match `x`. If
| `squeeze` is True then single-dimensional axes are removed.
|
| Raises
| ------
| ValueError
| If `s` is not purely imaginary, because `FrequencyResponseData`
| systems are only defined at imaginary values (corresponding to
| real frequencies).
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| FrequencyResponseData(response, omega[, dt])
|
| Construct a frequency response data (FRD) object.
|
| The default constructor is `FrequencyResponseData(response, omega)`,
| where `omega` is an iterable of frequency points and `response` is
| the matching frequency data. If `response` is a single list, 1D
| array, or tuple, a SISO system description is assumed. `response`
| can also be a 2D array, in which case a MIMO response is created.
| To call the copy constructor, call `FrequencyResponseData(sys)`,
| where `sys` is a FRD object. The timebase for the frequency
| response can be provided using an optional third argument or the
| `dt` keyword.
|
| To construct frequency response data for an existing LTI object,
| other than an FRD, call `FrequencyResponseData(sys, omega)`. This
| functionality can also be obtained using `frequency_response`
| (which has additional options available).
|
| See `FrequencyResponseData` and `frd` for more
| information.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right Multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self)
| String representation of the transfer function.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to FRD if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `LTI`
| System to be appended.
|
| Returns
| -------
| sys : `FrequencyResponseData`
| System model with `other` appended to `self`.
|
| eval(self, omega, squeeze=None)
| Evaluate a transfer function at a frequency point.
|
| Note that a "normal" FRD only returns values for which there is an
| entry in the `omega` vector. An interpolating FRD can return
| intermediate values.
|
| Parameters
| ----------
| omega : float or 1D array_like
| Frequency(s) for evaluation, in radians per second.
| squeeze : bool, optional
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep all indices (output, input and, if
| `omega` is array_like, frequency) even if the system is
| SISO. The default value can be set using
| `config.defaults['control.squeeze_frequency_response']`.
|
| Returns
| -------
| frdata : complex ndarray
| The frequency response of the system. If the system is SISO
| and `squeeze` is not True, the shape of the array matches the
| shape of `omega`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for
| the output and input and the remaining dimensions match `omega`.
| If `squeeze` is True then single-dimensional axes are removed.
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two FRD objects.
|
| Parameters
| ----------
| other : `LTI`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `FrequencyResponseData.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| plot(self, plot_type=None, *args, **kwargs)
| Plot the frequency response using Bode or singular values plot.
|
| Plot the frequency response using either a standard Bode plot
| (plot_type='bode', default) or a singular values plot
| (plot_type='svplot'). See `bode_plot` and `singular_values_plot`
| for more detailed descriptions.
|
| to_pandas(self)
| Convert response data to pandas data frame.
|
| Creates a pandas data frame for the value of the frequency
| response at each `omega`. The frequency response values are
| labeled in the form "H_{<out>, <in>}" where "<out>" and "<in>"
| are replaced with the output and input labels for the system.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| complex
| Complex value of the frequency response.
|
| Value of the frequency response as a complex number, indexed by
| either the output and frequency (if only a single input is given)
| or the output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| frequency
| Frequencies at which the response is evaluated.
|
| :type: 1D array
|
| fresp
|
| magnitude
| Magnitude of the frequency response.
|
| Magnitude of the frequency response, indexed by either the output
| and frequency (if only a single input is given) or the output,
| input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| phase
| Phase of the frequency response.
|
| Phase of the frequency response in radians/sec, indexed by either
| the output and frequency (if only a single input is given) or the
| output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| response
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| ninputs = 1
|
| noutputs = 1
|
| squeeze = None
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| dcgain(self)
| Return the zero-frequency (DC) gain.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
control.FrequencyResponseData
Python Library Documentation: class FrequencyResponseData in module control.frdata
class FrequencyResponseData(control.lti.LTI)
| FrequencyResponseData(*args, **kwargs)
|
| FrequencyResponseData(frdata, omega[, smooth])
|
| Input/output model defined by frequency response data (FRD).
|
| The FrequencyResponseData (FRD) class is used to represent systems in
| frequency response data form. It can be created manually using the
| class constructor, using the `frd` factory function, or
| via the `frequency_response` function.
|
| Parameters
| ----------
| frdata : 1D or 3D complex array_like
| The frequency response at each frequency point. If 1D, the system is
| assumed to be SISO. If 3D, the system is MIMO, with the first
| dimension corresponding to the output index of the FRD, the second
| dimension corresponding to the input index, and the 3rd dimension
| corresponding to the frequency points in `omega`. When accessed as an
| attribute, `frdata` is always stored as a 3D array.
| omega : iterable of real frequencies
| List of monotonically increasing frequency points for the response.
| smooth : bool, optional
| If True, create an interpolation function that allows the frequency
| response to be computed at any frequency within the range of
| frequencies give in `omega`. If False (default), frequency response
| can only be obtained at the frequencies specified in `omega`.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
| squeeze : bool
| By default, if a system is single-input, single-output (SISO) then
| the outputs (and inputs) are returned as a 1D array (indexed by
| frequency) and if a system is multi-input or multi-output, then the
| outputs are returned as a 2D array (indexed by output and
| frequency) or a 3D array (indexed by output, trace, and frequency).
| If `squeeze` = True, access to the output response will remove
| single-dimensional entries from the shape of the inputs and outputs
| even if the system is not SISO. If `squeeze` = False, the output is
| returned as a 3D array (indexed by the output, input, and
| frequency) even if the system is SISO. The default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| sysname : str or None
| Name of the system that generated the data.
|
| Attributes
| ----------
| complex : array
| Complex frequency response, indexed by output index, input index, and
| frequency point, with squeeze processing.
| magnitude : array
| Magnitude of the frequency response, indexed by output index, input
| index, and frequency point, with squeeze processing.
| phase : array
| Phase of the frequency response, indexed by output index, input index,
| and frequency point, with squeeze processing.
| frequency : 1D array
| Array of frequency points for which data are available.
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : array of str
| Names for the input and output signals.
| name : str
| System name. For data generated using
| `frequency_response`, stores the name of the
| system that created the data.
|
| Other Parameters
| ----------------
| plot_type : str, optional
| Set the type of plot to generate with `~FrequencyResponseData.plot`
| ('bode', 'nichols').
| title : str, optional
| Set the title to use when plotting.
| plot_magnitude, plot_phase : bool, optional
| If set to False, don't plot the magnitude or phase, respectively.
| return_magphase : bool, optional
| If True, then a frequency response data object will enumerate
| as a tuple of the form ``(mag, phase, omega)`` where where `mag`
| is the magnitude (absolute value, not dB or log10) of the system
| frequency response, `phase` is the wrapped phase in radians of the
| system frequency response, and `omega` is the (sorted) frequencies
| at which the response was evaluated.
|
| See Also
| --------
| frd, frequency_response, InputOutputSystem, TransferFunction
|
| Notes
| -----
| The main data members are `omega` and `frdata`, where `omega` is a 1D
| array of frequency points and and `frdata` is a 3D array of frequency
| responses, with the first dimension corresponding to the output index of
| the FRD, the second dimension corresponding to the input index, and the
| 3rd dimension corresponding to the frequency points in omega. For example,
|
| >>> frdata[2,5,:] = numpy.array([1., 0.8-0.2j, 0.2-0.8j]) # doctest: +SKIP
|
| means that the frequency response from the 6th input to the 3rd output at
| the frequencies defined in omega is set to the array above, i.e. the rows
| represent the outputs and the columns represent the inputs.
|
| A frequency response data object is callable and returns the value of the
| transfer function evaluated at a point in the complex plane (must be on
| the imaginary axis). See `FrequencyResponseData.__call__`
| for a more detailed description.
|
| Subsystem response corresponding to selected input/output pairs can be
| created by indexing the frequency response data object::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| Method resolution order:
| FrequencyResponseData
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x=None, squeeze=None, return_magphase=None)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems. For a frequency response data
| object, the argument should be an imaginary number (since only the
| frequency response is defined) and only the imaginary component of
| `x` will be used.
|
| By default, a (complex) scalar will be returned for SISO systems
| and a p x m array will be return for MIMO systems with m inputs and
| p outputs. This can be changed using the `squeeze` keyword.
|
| To evaluate at a frequency `omega` in radians per second, enter ``x
| = omega * 1j`` for continuous-time systems, ``x = exp(1j * omega *
| dt)`` for discrete-time systems, or use the
| `~LTI.frequency_response` method.
|
| If `x` is not given, this function creates a copy of a frequency
| response data object with a different set of output settings.
|
| Parameters
| ----------
| x : complex scalar or 1D array_like
| Imaginary value(s) at which frequency response will be evaluated.
| The real component of `x` is ignored. If not specified, return
| a copy of the frequency response data object with updated
| settings for output processing (`squeeze`, `return_magphase`).
| squeeze : bool, optional
| Squeeze output, as described below. Default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| return_magphase : bool, optional
| (`x` = None only) If True, then a frequency response data object
| will enumerate as a tuple of the form ``(mag, phase, omega)``
| where where `mag` is the magnitude (absolute value, not dB or
| log10) of the system frequency response, `phase` is the wrapped
| phase in radians of the system frequency response, and `omega` is
| the (sorted) frequencies at which the response was evaluated.
|
| Returns
| -------
| frdata : complex ndarray
| The value of the system transfer function at `x`. If the system
| is SISO and `squeeze` is not True, the shape of the array matches
| the shape of `x`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for the
| output and input and the remaining dimensions match `x`. If
| `squeeze` is True then single-dimensional axes are removed.
|
| Raises
| ------
| ValueError
| If `s` is not purely imaginary, because `FrequencyResponseData`
| systems are only defined at imaginary values (corresponding to
| real frequencies).
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| FrequencyResponseData(response, omega[, dt])
|
| Construct a frequency response data (FRD) object.
|
| The default constructor is `FrequencyResponseData(response, omega)`,
| where `omega` is an iterable of frequency points and `response` is
| the matching frequency data. If `response` is a single list, 1D
| array, or tuple, a SISO system description is assumed. `response`
| can also be a 2D array, in which case a MIMO response is created.
| To call the copy constructor, call `FrequencyResponseData(sys)`,
| where `sys` is a FRD object. The timebase for the frequency
| response can be provided using an optional third argument or the
| `dt` keyword.
|
| To construct frequency response data for an existing LTI object,
| other than an FRD, call `FrequencyResponseData(sys, omega)`. This
| functionality can also be obtained using `frequency_response`
| (which has additional options available).
|
| See `FrequencyResponseData` and `frd` for more
| information.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right Multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self)
| String representation of the transfer function.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to FRD if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `LTI`
| System to be appended.
|
| Returns
| -------
| sys : `FrequencyResponseData`
| System model with `other` appended to `self`.
|
| eval(self, omega, squeeze=None)
| Evaluate a transfer function at a frequency point.
|
| Note that a "normal" FRD only returns values for which there is an
| entry in the `omega` vector. An interpolating FRD can return
| intermediate values.
|
| Parameters
| ----------
| omega : float or 1D array_like
| Frequency(s) for evaluation, in radians per second.
| squeeze : bool, optional
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep all indices (output, input and, if
| `omega` is array_like, frequency) even if the system is
| SISO. The default value can be set using
| `config.defaults['control.squeeze_frequency_response']`.
|
| Returns
| -------
| frdata : complex ndarray
| The frequency response of the system. If the system is SISO
| and `squeeze` is not True, the shape of the array matches the
| shape of `omega`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for
| the output and input and the remaining dimensions match `omega`.
| If `squeeze` is True then single-dimensional axes are removed.
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two FRD objects.
|
| Parameters
| ----------
| other : `LTI`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `FrequencyResponseData.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| plot(self, plot_type=None, *args, **kwargs)
| Plot the frequency response using Bode or singular values plot.
|
| Plot the frequency response using either a standard Bode plot
| (plot_type='bode', default) or a singular values plot
| (plot_type='svplot'). See `bode_plot` and `singular_values_plot`
| for more detailed descriptions.
|
| to_pandas(self)
| Convert response data to pandas data frame.
|
| Creates a pandas data frame for the value of the frequency
| response at each `omega`. The frequency response values are
| labeled in the form "H_{<out>, <in>}" where "<out>" and "<in>"
| are replaced with the output and input labels for the system.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| complex
| Complex value of the frequency response.
|
| Value of the frequency response as a complex number, indexed by
| either the output and frequency (if only a single input is given)
| or the output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| frequency
| Frequencies at which the response is evaluated.
|
| :type: 1D array
|
| fresp
|
| magnitude
| Magnitude of the frequency response.
|
| Magnitude of the frequency response, indexed by either the output
| and frequency (if only a single input is given) or the output,
| input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| phase
| Phase of the frequency response.
|
| Phase of the frequency response in radians/sec, indexed by either
| the output and frequency (if only a single input is given) or the
| output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| response
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| ninputs = 1
|
| noutputs = 1
|
| squeeze = None
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| dcgain(self)
| Return the zero-frequency (DC) gain.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
control.FrequencyResponseList
Python Library Documentation: class FrequencyResponseList in module control.freqplot class FrequencyResponseList(builtins.list) | FrequencyResponseList(iterable=(), /) | | List of FrequencyResponseData objects with plotting capability. | | This class consists of a list of `FrequencyResponseData` objects. | It is a subclass of the Python `list` class, with a `plot` method that | plots the individual `FrequencyResponseData` objects. | | Method resolution order: | FrequencyResponseList | builtins.list | builtins.object | | Methods defined here: | | plot(self, *args, plot_type=None, **kwargs) | Plot a list of frequency responses. | | See `FrequencyResponseData.plot` for details. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.list: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return bool(key in self). | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(self, index, /) | Return self[index]. | | __gt__(self, value, /) | Return self>value. | | __iadd__(self, value, /) | Implement self+=value. | | __imul__(self, value, /) | Implement self*=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __mul__(self, value, /) | Return self*value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | __reversed__(self, /) | Return a reverse iterator over the list. | | __rmul__(self, value, /) | Return value*self. | | __setitem__(self, key, value, /) | Set self[key] to value. | | __sizeof__(self, /) | Return the size of the list in memory, in bytes. | | append(self, object, /) | Append object to the end of the list. | | clear(self, /) | Remove all items from list. | | copy(self, /) | Return a shallow copy of the list. | | count(self, value, /) | Return number of occurrences of value. | | extend(self, iterable, /) | Extend list by appending elements from the iterable. | | index(self, value, start=0, stop=9223372036854775807, /) | Return first index of value. | | Raises ValueError if the value is not present. | | insert(self, index, object, /) | Insert object before index. | | pop(self, index=-1, /) | Remove and return item at index (default last). | | Raises IndexError if list is empty or index is out of range. | | remove(self, value, /) | Remove first occurrence of value. | | Raises ValueError if the value is not present. | | reverse(self, /) | Reverse *IN PLACE*. | | sort(self, /, *, key=None, reverse=False) | Sort the list in ascending order and return None. | | The sort is in-place (i.e. the list itself is modified) and stable (i.e. the | order of two equal elements is maintained). | | If a key function is given, apply it once to each list item and sort them, | ascending or descending, according to their function values. | | The reverse flag can be set to sort in descending order. | | ---------------------------------------------------------------------- | Class methods inherited from builtins.list: | | __class_getitem__(...) | See PEP 585 | | ---------------------------------------------------------------------- | Static methods inherited from builtins.list: | | __new__(*args, **kwargs) class method of builtins.list | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes inherited from builtins.list: | | __hash__ = None
control.InputOutputSystem
Python Library Documentation: class InputOutputSystem in module control.iosys class InputOutputSystem(builtins.object) | InputOutputSystem(name=None, inputs=None, outputs=None, states=None, input_prefix='u', output_prefix='y', state_prefix='x', **kwargs) | | Base class for input/output systems. | | The `InputOutputSystem` class allows (possibly nonlinear) input/output | systems to be represented in Python. It is used as a parent class for | a set of subclasses that are used to implement specific structures and | operations for different types of input/output dynamical systems. | | The timebase for the system, `dt`, is used to specify whether the system | is operating in continuous or discrete time. It can have the following | values: | | * `dt` = None: No timebase specified | * `dt` = 0: Continuous time system | * `dt` > 0: Discrete time system with sampling time dt | * `dt` = True: Discrete time system with unspecified sampling time | | Parameters | ---------- | inputs : int, list of str, or None | Description of the system inputs. This can be given as an integer | count or a list of strings that name the individual signals. If an | integer count is specified, the names of the signal will be of the | form 's[i]' (where 's' is given by the `input_prefix` parameter and | has default value 'u'). If this parameter is not given or given as | None, the relevant quantity will be determined when possible | based on other information provided to functions using the system. | outputs : int, list of str, or None | Description of the system outputs. Same format as `inputs`, with | the prefix given by `output_prefix` (defaults to 'y'). | states : int, list of str, or None | Description of the system states. Same format as `inputs`, with | the prefix given by `state_prefix` (defaults to 'x'). | dt : None, True or float, optional | System timebase. 0 (default) indicates continuous time, True | indicates discrete time with unspecified sampling time, positive | number is discrete time with specified sampling time, None indicates | unspecified timebase (either continuous or discrete time). | name : string, optional | System name (used for specifying signals). If unspecified, a generic | name 'sys[id]' is generated with a unique integer id. | params : dict, optional | Parameter values for the system. Passed to the evaluation functions | for the system as default values, overriding internal defaults. | | Attributes | ---------- | ninputs, noutputs, nstates : int | Number of input, output, and state variables. | input_index, output_index, state_index : dict | Dictionary of signal names for the inputs, outputs, and states and | the index of the corresponding array. | input_labels, output_labels, state_labels : list of str | List of signal names for inputs, outputs, and states. | shape : tuple | 2-tuple of I/O system dimension, (noutputs, ninputs). | | Other Parameters | ---------------- | input_prefix : string, optional | Set the prefix for input signals. Default = 'u'. | output_prefix : string, optional | Set the prefix for output signals. Default = 'y'. | state_prefix : string, optional | Set the prefix for state signals. Default = 'x'. | repr_format : str | String representation format. See `control.iosys_repr`. | | Methods defined here: | | __init__(self, name=None, inputs=None, outputs=None, states=None, input_prefix='u', output_prefix='y', state_prefix='x', **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __repr__(self) | Return repr(self). | | __str__(self) | String representation of an input/output object | | copy(self, name=None, use_prefix_suffix=True) | Make a copy of an input/output system. | | A copy of the system is made, with a new name. The `name` keyword | can be used to specify a specific name for the system. If no name | is given and `use_prefix_suffix` is True, the name is constructed | by prepending `config.defaults['iosys.duplicate_system_name_prefix']` | and appending `config.defaults['iosys.duplicate_system_name_suffix']`. | Otherwise, a generic system name of the form 'sys[<id>]' is used, | where '<id>' is based on an internal counter. | | Parameters | ---------- | name : str, optional | Name of the newly created system. | | use_prefix_suffix : bool, optional | If True and `name` is None, set the name of the new system | to the name of the original system with prefix | `config.defaults['duplicate_system_name_prefix']` and | suffix `config.defaults['duplicate_system_name_suffix']`. | | Returns | ------- | `InputOutputSystem` | | find_input(self, name) | Find the index for an input given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired input. | | Returns | ------- | int | Index of the named input. | | find_inputs(self, name_list) | Return list of indices matching input spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired inputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified inputs. | | find_output(self, name) | Find the index for a output given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired output. | | Returns | ------- | int | Index of the named output. | | find_outputs(self, name_list) | Return list of indices matching output spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired outputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified outputs. | | find_state(self, name) | Find the index for a state given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired state. | | Returns | ------- | int | Index of the named state. | | find_states(self, name_list) | Return list of indices matching state spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired states. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified states.. | | isctime(self, strict=False) | Check to see if a system is a continuous-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | isdtime(self, strict=False) | Check to see if a system is a discrete-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | issiso(self) | Check to see if a system is single input, single output. | | set_inputs(self, inputs, prefix='u') | Set the number/names of the system inputs. | | Parameters | ---------- | inputs : int, list of str, or None | Description of the system inputs. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'u[i]' (where the prefix 'u' can be changed using the | optional prefix parameter). | prefix : string, optional | If `inputs` is an integer, create the names of the states using | the given prefix (default = 'u'). The names of the input will be | of the form 'prefix[i]'. | | set_outputs(self, outputs, prefix='y') | Set the number/names of the system outputs. | | Parameters | ---------- | outputs : int, list of str, or None | Description of the system outputs. This can be given as an | integer count or as a list of strings that name the individual | signals. If an integer count is specified, the names of the | signal will be of the form 'y[i]' (where the prefix 'y' can be | changed using the optional prefix parameter). | prefix : string, optional | If `outputs` is an integer, create the names of the states using | the given prefix (default = 'y'). The names of the input will be | of the form 'prefix[i]'. | | set_states(self, states, prefix='x') | Set the number/names of the system states. | | Parameters | ---------- | states : int, list of str, or None | Description of the system states. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'x[i]' (where the prefix 'x' can be changed using the | optional prefix parameter). | prefix : string, optional | If `states` is an integer, create the names of the states using | the given prefix (default = 'x'). The names of the input will be | of the form 'prefix[i]'. | | update_names(self, **kwargs) | update_names([name, inputs, outputs, states]) | | Update signal and system names for an I/O system. | | Parameters | ---------- | name : str, optional | New system name. | inputs : list of str, int, or None, optional | List of strings that name the individual input signals. If | given as an integer or None, signal names default to the form | 'u[i]'. See `InputOutputSystem` for more information. | outputs : list of str, int, or None, optional | Description of output signals; defaults to 'y[i]'. | states : int, list of str, int, or None, optional | Description of system states; defaults to 'x[i]'. | input_prefix : string, optional | Set the prefix for input signals. Default = 'u'. | output_prefix : string, optional | Set the prefix for output signals. Default = 'y'. | state_prefix : string, optional | Set the prefix for state signals. Default = 'x'. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | shape | 2-tuple of I/O system dimension, (noutputs, ninputs). | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | input_labels | List of labels for the input signals. | | output_labels | List of labels for the output signals. | | repr_format | String representation format. | | Format used in creating the representation for the system: | | * 'info' : <IOSystemType sysname: [inputs] -> [outputs]> | * 'eval' : system specific, loadable representation | * 'latex' : HTML/LaTeX representation of the object | | The default representation for an input/output is set to 'eval'. | This value can be changed for an individual system by setting the | `repr_format` parameter when the system is created or by setting | the `repr_format` property after system creation. Set | `config.defaults['iosys.repr_format']` to change for all I/O systems | or use the `repr_format` parameter/attribute for a single system. | | state_labels | List of labels for the state signals. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __array_priority__ = 20 | | dt = None | | ninputs = None | | noutputs = None | | nstates = None
control.InterconnectedSystem
Python Library Documentation: class InterconnectedSystem in module control.nlsys
class InterconnectedSystem(NonlinearIOSystem)
| InterconnectedSystem(syslist, connections=None, inplist=None, outlist=None, params=None, warn_duplicate=None, connection_type=None, **kwargs)
|
| Interconnection of a set of input/output systems.
|
| This class is used to implement a system that is an interconnection of
| input/output systems. The system consists of a collection of subsystems
| whose inputs and outputs are connected via a connection map. The overall
| system inputs and outputs are subsets of the subsystem inputs and outputs.
|
| The `interconnect` factory function should be used to create an
| interconnected I/O system since it performs additional argument
| processing and checking.
|
| Parameters
| ----------
| syslist : list of `NonlinearIOSystem`
| List of state space systems to interconnect.
| connections : list of connections
| Description of the internal connections between the subsystem. See
| `interconnect` for details.
| inplist, outlist : list of input and output connections
| Description of the inputs and outputs for the overall system. See
| `interconnect` for details.
| inputs, outputs, states : int, list of str or None, optional
| Description of the system inputs, outputs, and states. See
| `control.nlsys` for more details.
| params : dict, optional
| Parameter values for the systems. Passed to the evaluation functions
| for the system as default values, overriding internal defaults.
| connection_type : str
| Type of connection: 'explicit' (or None) for explicitly listed
| set of connections, 'implicit' for connections made via signal names.
|
| Attributes
| ----------
| ninputs, noutputs, nstates : int
| Number of input, output and state variables.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| name : string, optional
| System name.
| connect_map : 2D array
| Mapping of subsystem outputs to subsystem inputs.
| input_map : 2D array
| Mapping of system inputs to subsystem inputs.
| output_map : 2D array
| Mapping of (stacked) subsystem outputs and inputs to system outputs.
| input_labels, output_labels, state_labels : list of str
| Names for the input, output, and state variables.
| input_offset, output_offset, state_offset : list of int
| Offset to the subsystem inputs, outputs, and states in the overall
| system input, output, and state arrays.
| syslist_index : dict
| Index of the subsystem with key given by the name of the subsystem.
|
| See Also
| --------
| interconnect, NonlinearIOSystem, LinearICSystem
|
| Method resolution order:
| InterconnectedSystem
| NonlinearIOSystem
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __init__(self, syslist, connections=None, inplist=None, outlist=None, params=None, warn_duplicate=None, connection_type=None, **kwargs)
| Create an I/O system from a list of systems + connection info.
|
| __str__(self)
| String representation of an input/output object
|
| check_unused_signals(self, ignore_inputs=None, ignore_outputs=None, print_warning=True)
| Check for unused subsystem inputs and outputs.
|
| Check to see if there are any unused signals and return a list of
| unused input and output signal descriptions. If `warning` is
| True and any unused inputs or outputs are found, emit a warning.
|
| Parameters
| ----------
| ignore_inputs : list of input-spec
| Subsystem inputs known to be unused. input-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem inputs with that
| name are considered ignored.
|
| ignore_outputs : list of output-spec
| Subsystem outputs known to be unused. output-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem outputs with that
| name are considered ignored.
|
| print_warning : bool, optional
| If True, print a warning listing any unused signals.
|
| Returns
| -------
| dropped_inputs : list of tuples
| A list of the dropped input signals, with each element of the
| list in the form of (isys, isig).
|
| dropped_outputs : list of tuples
| A list of the dropped output signals, with each element of the
| list in the form of (osys, osig).
|
| connection_table(self, show_names=False, column_width=32)
| Table of connections inside an interconnected system.
|
| Intended primarily for `InterconnectedSystem`'s that have been
| connected implicitly using signal names.
|
| Parameters
| ----------
| show_names : bool, optional
| Instead of printing out the system number, print out the name
| of each system. Default is False because system name is not
| usually specified when performing implicit interconnection
| using `interconnect`.
| column_width : int, optional
| Character width of printed columns.
|
| Examples
| --------
| >>> P = ct.ss(1,1,1,0, inputs='u', outputs='y', name='P')
| >>> C = ct.tf(10, [.1, 1], inputs='e', outputs='u', name='C')
| >>> L = ct.interconnect([C, P], inputs='e', outputs='y')
| >>> L.connection_table(show_names=True) # doctest: +SKIP
| signal | source | destination
| --------------------------------------------------------------------
| e | input | C
| u | C | P
| y | P | output
|
| set_connect_map(self, connect_map)
| Set the connection map for an interconnected I/O system.
|
| Parameters
| ----------
| connect_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs to obtain the vector of subsystem inputs.
|
| set_input_map(self, input_map)
| Set the input map for an interconnected I/O system.
|
| Parameters
| ----------
| input_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| system inputs to obtain the vector of subsystem inputs. These
| values are added to the inputs specified in the connection map.
|
| set_output_map(self, output_map)
| Set the output map for an interconnected I/O system.
|
| Parameters
| ----------
| output_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs concatenated with subsystem inputs to obtain
| the vector of system outputs.
|
| unused_signals(self)
| Find unused subsystem inputs and outputs.
|
| Returns
| -------
| unused_inputs : dict
| A mapping from tuple of indices (isys, isig) to string
| '{sys}.{sig}', for all unused subsystem inputs.
|
| unused_outputs : dict
| A mapping from tuple of indices (osys, osig) to string
| '{sys}.{sig}', for all unused subsystem outputs.
|
| ----------------------------------------------------------------------
| Methods inherited from NonlinearIOSystem:
|
| __add__(self, other)
| Add two input/output systems (parallel interconnection)
|
| __call__(sys, u, params=None, squeeze=None)
| Evaluate a (static) nonlinearity at a given input value.
|
| If a nonlinear I/O system has no internal state, then evaluating
| the system at an input `u` gives the output ``y = F(u)``,
| determined by the output function.
|
| Parameters
| ----------
| params : dict, optional
| Parameter values for the system. Passed to the evaluation function
| for the system as default values, overriding internal defaults.
| squeeze : bool, optional
| If True and if the system has a single output, return the
| system output as a 1D array rather than a 2D array. If
| False, return the system output as a 2D array even if the
| system is SISO. Default value set by
| `config.defaults['control.squeeze_time_response']`.
|
| __mul__(self, other)
| Multiply two input/output systems (series interconnection)
|
| __neg__(self)
| Negate an input/output system (rescale)
|
| __radd__(self, other)
| Parallel addition of input/output system to a compatible object.
|
| __rmul__(self, other)
| Pre-multiply an input/output systems by a scalar/matrix
|
| __rsub__(self, other)
| Parallel subtraction of I/O system to a compatible object.
|
| __sub__(self, other)
| Subtract two input/output systems (parallel interconnection)
|
| __truediv__(self, other)
| Division of input/output system (by scalar or array)
|
| dynamics(self, t, x, u, params=None)
| Dynamics of a differential or difference equation.
|
| Given time `t`, input `u` and state `x`, returns the value of the
| right hand side of the dynamical system. If the system is a
| continuous-time system, returns the time derivative::
|
| dx/dt = updfcn(t, x, u[, params])
|
| where `updfcn` is the system's (possibly nonlinear) update function.
| If the system is discrete time, returns the next value of `x`::
|
| x[t+dt] = updfcn(t, x[t], u[t][, params])
|
| where `t` is a scalar.
|
| The inputs `x` and `u` must be of the correct length. The `params`
| argument is an optional dictionary of parameter values.
|
| Parameters
| ----------
| t : float
| Time at which to evaluate.
| x : array_like
| Current state.
| u : array_like
| Current input.
| params : dict, optional
| System parameter values.
|
| Returns
| -------
| dx/dt or x[t+dt] : ndarray
|
| feedback(self, other=1, sign=-1, params=None)
| Feedback interconnection between two I/O systems.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| params : dict, optional
| Parameter values for the overall system. Passed to the
| evaluation functions for the system as default values,
| overriding defaults for the individual systems.
|
| Returns
| -------
| `NonlinearIOSystem`
|
| linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs)
| Linearize an input/output system at a given state and input.
|
| Return the linearization of an input/output system at a given
| operating point (or state and input value) as a `StateSpace` system.
| See `linearize` for complete documentation.
|
| output(self, t, x, u, params=None)
| Compute the output of the system.
|
| Given time `t`, input `u` and state `x`, returns the output of the
| system::
|
| y = outfcn(t, x, u[, params])
|
| The inputs `x` and `u` must be of the correct length.
|
| Parameters
| ----------
| t : float
| The time at which to evaluate.
| x : array_like
| Current state.
| u : array_like
| Current input.
| params : dict, optional
| System parameter values.
|
| Returns
| -------
| y : ndarray
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| ninputs = None
|
| noutputs = None
|
| nstates = None
control.LTI
Python Library Documentation: class LTI in module control.lti class LTI(control.iosys.InputOutputSystem) | LTI(inputs=1, outputs=1, states=None, name=None, **kwargs) | | Parent class for linear time-invariant system objects. | | LTI is the parent to the `FrequencyResponseData`, `StateSpace`, and | `TransferFunction` child classes. It contains the number of inputs and | outputs, and the timebase (dt) for the system. This class is not | generally accessed directly by the user. | | See Also | -------- | InputOutputSystem, StateSpace, TransferFunction, FrequencyResponseData | | Method resolution order: | LTI | control.iosys.InputOutputSystem | builtins.object | | Methods defined here: | | __call__(self, x, squeeze=None, warn_infinite=True) | Evaluate system transfer function at point in complex plane. | | Returns the value of the system's transfer function at a point `x` | in the complex plane, where `x` is `s` for continuous-time systems | and `z` for discrete-time systems. | | By default, a (complex) scalar will be returned for SISO systems | and a p x m array will be return for MIMO systems with m inputs and | p outputs. This can be changed using the `squeeze` keyword. | | To evaluate at a frequency `omega` in radians per second, | enter ``x = omega * 1j`` for continuous-time systems, | ``x = exp(1j * omega * dt)`` for discrete-time systems, or | use the `~LTI.frequency_response` method. | | Parameters | ---------- | x : complex or complex 1D array_like | Complex value(s) at which transfer function will be evaluated. | squeeze : bool, optional | Squeeze output, as described below. Default value can be set | using `config.defaults['control.squeeze_frequency_response']`. | warn_infinite : bool, optional | If set to False, turn off divide by zero warning. | | Returns | ------- | fresp : complex ndarray | The value of the system transfer function at `x`. If the system | is SISO and `squeeze` is not True, the shape of the array matches | the shape of `x`. If the system is not SISO or `squeeze` is | False, the first two dimensions of the array are indices for the | output and input and the remaining dimensions match `x`. If | `squeeze` is True then single-dimensional axes are removed. | | Notes | ----- | See `FrequencyResponseData.__call__`, `StateSpace.__call__`, | `TransferFunction.__call__` for class-specific details. | | __init__(self, inputs=1, outputs=1, states=None, name=None, **kwargs) | Assign the LTI object's numbers of inputs and outputs. | | bandwidth(self, dbdrop=-3) | Evaluate bandwidth of an LTI system for a given dB drop. | | Evaluate the first frequency that the response magnitude is lower than | DC gain by `dbdrop` dB. | | Parameters | ---------- | dbdrop : float, optional | A strictly negative scalar in dB (default = -3) defines the | amount of gain drop for deciding bandwidth. | | Returns | ------- | bandwidth : ndarray | The first frequency (rad/time-unit) where the gain drops below | `dbdrop` of the dc gain of the system, or nan if the system has | infinite dc gain, inf if the gain does not drop for all frequency. | | Raises | ------ | TypeError | If `sys` is not an SISO LTI instance. | ValueError | If `dbdrop` is not a negative scalar. | | bode_plot(self, *args, **kwargs) | Generate a Bode plot for the system. | | See `bode_plot` for more information. | | damp(self) | Natural frequency, damping ratio of system poles. | | Returns | ------- | wn : array | Natural frequency for each system pole. | zeta : array | Damping ratio for each system pole. | poles : array | System pole locations. | | dcgain(self) | Return the zero-frequency (DC) gain. | | feedback(self, other=1, sign=-1) | Feedback interconnection between two input/output systems. | | Parameters | ---------- | other : `InputOutputSystem` | System in the feedback path. | | sign : float, optional | Gain to use in feedback path. Defaults to -1. | | forced_response(self, *args, **kwargs) | Generate the forced response for the system. | | See `forced_response` for more information. | | frequency_response(self, omega=None, squeeze=None) | Evaluate LTI system response at an array of frequencies. | | See `frequency_response` for more detailed information. | | impulse_response(self, *args, **kwargs) | Generate the impulse response for the system. | | See `impulse_response` for more information. | | initial_response(self, *args, **kwargs) | Generate the initial response for the system. | | See `initial_response` for more information. | | ispassive(self) | Indicate if a linear time invariant (LTI) system is passive. | | See `ispassive` for details. | | nichols_plot(self, *args, **kwargs) | Generate a Nichols plot for the system. | | See `nichols_plot` for more information. | | nyquist_plot(self, *args, **kwargs) | Generate a Nyquist plot for the system. | | See `nyquist_plot` for more information. | | step_response(self, *args, **kwargs) | Generate the step response for the system. | | See `step_response` for more information. | | to_ss(self, *args, **kwargs) | Convert to state space representation. | | See `ss` for details. | | to_tf(self, *args, **kwargs) | Convert to transfer function representation. | | See `tf` for details. | | ---------------------------------------------------------------------- | Methods inherited from control.iosys.InputOutputSystem: | | __repr__(self) | Return repr(self). | | __str__(self) | String representation of an input/output object | | copy(self, name=None, use_prefix_suffix=True) | Make a copy of an input/output system. | | A copy of the system is made, with a new name. The `name` keyword | can be used to specify a specific name for the system. If no name | is given and `use_prefix_suffix` is True, the name is constructed | by prepending `config.defaults['iosys.duplicate_system_name_prefix']` | and appending `config.defaults['iosys.duplicate_system_name_suffix']`. | Otherwise, a generic system name of the form 'sys[<id>]' is used, | where '<id>' is based on an internal counter. | | Parameters | ---------- | name : str, optional | Name of the newly created system. | | use_prefix_suffix : bool, optional | If True and `name` is None, set the name of the new system | to the name of the original system with prefix | `config.defaults['duplicate_system_name_prefix']` and | suffix `config.defaults['duplicate_system_name_suffix']`. | | Returns | ------- | `InputOutputSystem` | | find_input(self, name) | Find the index for an input given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired input. | | Returns | ------- | int | Index of the named input. | | find_inputs(self, name_list) | Return list of indices matching input spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired inputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified inputs. | | find_output(self, name) | Find the index for a output given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired output. | | Returns | ------- | int | Index of the named output. | | find_outputs(self, name_list) | Return list of indices matching output spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired outputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified outputs. | | find_state(self, name) | Find the index for a state given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired state. | | Returns | ------- | int | Index of the named state. | | find_states(self, name_list) | Return list of indices matching state spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired states. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified states.. | | isctime(self, strict=False) | Check to see if a system is a continuous-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | isdtime(self, strict=False) | Check to see if a system is a discrete-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | issiso(self) | Check to see if a system is single input, single output. | | set_inputs(self, inputs, prefix='u') | Set the number/names of the system inputs. | | Parameters | ---------- | inputs : int, list of str, or None | Description of the system inputs. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'u[i]' (where the prefix 'u' can be changed using the | optional prefix parameter). | prefix : string, optional | If `inputs` is an integer, create the names of the states using | the given prefix (default = 'u'). The names of the input will be | of the form 'prefix[i]'. | | set_outputs(self, outputs, prefix='y') | Set the number/names of the system outputs. | | Parameters | ---------- | outputs : int, list of str, or None | Description of the system outputs. This can be given as an | integer count or as a list of strings that name the individual | signals. If an integer count is specified, the names of the | signal will be of the form 'y[i]' (where the prefix 'y' can be | changed using the optional prefix parameter). | prefix : string, optional | If `outputs` is an integer, create the names of the states using | the given prefix (default = 'y'). The names of the input will be | of the form 'prefix[i]'. | | set_states(self, states, prefix='x') | Set the number/names of the system states. | | Parameters | ---------- | states : int, list of str, or None | Description of the system states. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'x[i]' (where the prefix 'x' can be changed using the | optional prefix parameter). | prefix : string, optional | If `states` is an integer, create the names of the states using | the given prefix (default = 'x'). The names of the input will be | of the form 'prefix[i]'. | | update_names(self, **kwargs) | update_names([name, inputs, outputs, states]) | | Update signal and system names for an I/O system. | | Parameters | ---------- | name : str, optional | New system name. | inputs : list of str, int, or None, optional | List of strings that name the individual input signals. If | given as an integer or None, signal names default to the form | 'u[i]'. See `InputOutputSystem` for more information. | outputs : list of str, int, or None, optional | Description of output signals; defaults to 'y[i]'. | states : int, list of str, int, or None, optional | Description of system states; defaults to 'x[i]'. | input_prefix : string, optional | Set the prefix for input signals. Default = 'u'. | output_prefix : string, optional | Set the prefix for output signals. Default = 'y'. | state_prefix : string, optional | Set the prefix for state signals. Default = 'x'. | | ---------------------------------------------------------------------- | Readonly properties inherited from control.iosys.InputOutputSystem: | | shape | 2-tuple of I/O system dimension, (noutputs, ninputs). | | ---------------------------------------------------------------------- | Data descriptors inherited from control.iosys.InputOutputSystem: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | input_labels | List of labels for the input signals. | | output_labels | List of labels for the output signals. | | repr_format | String representation format. | | Format used in creating the representation for the system: | | * 'info' : <IOSystemType sysname: [inputs] -> [outputs]> | * 'eval' : system specific, loadable representation | * 'latex' : HTML/LaTeX representation of the object | | The default representation for an input/output is set to 'eval'. | This value can be changed for an individual system by setting the | `repr_format` parameter when the system is created or by setting | the `repr_format` property after system creation. Set | `config.defaults['iosys.repr_format']` to change for all I/O systems | or use the `repr_format` parameter/attribute for a single system. | | state_labels | List of labels for the state signals. | | ---------------------------------------------------------------------- | Data and other attributes inherited from control.iosys.InputOutputSystem: | | __array_priority__ = 20 | | dt = None | | ninputs = None | | noutputs = None | | nstates = None
control.LinearICSystem
Python Library Documentation: class LinearICSystem in module control.statesp
class LinearICSystem(control.nlsys.InterconnectedSystem, StateSpace)
| LinearICSystem(io_sys, ss_sys=None, connection_type=None)
|
| Interconnection of a set of linear input/output systems.
|
| This class is used to implement a system that is an interconnection of
| linear input/output systems. It has all of the structure of an
| `InterconnectedSystem`, but also maintains the required
| elements of the `StateSpace` class structure, allowing it to be
| passed to functions that expect a `StateSpace` system.
|
| This class is generated using `interconnect` and
| not called directly.
|
| Method resolution order:
| LinearICSystem
| control.nlsys.InterconnectedSystem
| StateSpace
| control.nlsys.NonlinearIOSystem
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __call__(self, *args, **kwargs)
| Evaluate a (static) nonlinearity at a given input value.
|
| If a nonlinear I/O system has no internal state, then evaluating
| the system at an input `u` gives the output ``y = F(u)``,
| determined by the output function.
|
| Parameters
| ----------
| params : dict, optional
| Parameter values for the system. Passed to the evaluation function
| for the system as default values, overriding internal defaults.
| squeeze : bool, optional
| If True and if the system has a single output, return the
| system output as a 1D array rather than a 2D array. If
| False, return the system output as a 2D array even if the
| system is SISO. Default value set by
| `config.defaults['control.squeeze_time_response']`.
|
| __init__(self, io_sys, ss_sys=None, connection_type=None)
| Create an I/O system from a list of systems + connection info.
|
| __str__(self)
| Return string representation of the state space system.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| states
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.InterconnectedSystem:
|
| check_unused_signals(self, ignore_inputs=None, ignore_outputs=None, print_warning=True)
| Check for unused subsystem inputs and outputs.
|
| Check to see if there are any unused signals and return a list of
| unused input and output signal descriptions. If `warning` is
| True and any unused inputs or outputs are found, emit a warning.
|
| Parameters
| ----------
| ignore_inputs : list of input-spec
| Subsystem inputs known to be unused. input-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem inputs with that
| name are considered ignored.
|
| ignore_outputs : list of output-spec
| Subsystem outputs known to be unused. output-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem outputs with that
| name are considered ignored.
|
| print_warning : bool, optional
| If True, print a warning listing any unused signals.
|
| Returns
| -------
| dropped_inputs : list of tuples
| A list of the dropped input signals, with each element of the
| list in the form of (isys, isig).
|
| dropped_outputs : list of tuples
| A list of the dropped output signals, with each element of the
| list in the form of (osys, osig).
|
| connection_table(self, show_names=False, column_width=32)
| Table of connections inside an interconnected system.
|
| Intended primarily for `InterconnectedSystem`'s that have been
| connected implicitly using signal names.
|
| Parameters
| ----------
| show_names : bool, optional
| Instead of printing out the system number, print out the name
| of each system. Default is False because system name is not
| usually specified when performing implicit interconnection
| using `interconnect`.
| column_width : int, optional
| Character width of printed columns.
|
| Examples
| --------
| >>> P = ct.ss(1,1,1,0, inputs='u', outputs='y', name='P')
| >>> C = ct.tf(10, [.1, 1], inputs='e', outputs='u', name='C')
| >>> L = ct.interconnect([C, P], inputs='e', outputs='y')
| >>> L.connection_table(show_names=True) # doctest: +SKIP
| signal | source | destination
| --------------------------------------------------------------------
| e | input | C
| u | C | P
| y | P | output
|
| set_connect_map(self, connect_map)
| Set the connection map for an interconnected I/O system.
|
| Parameters
| ----------
| connect_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs to obtain the vector of subsystem inputs.
|
| set_input_map(self, input_map)
| Set the input map for an interconnected I/O system.
|
| Parameters
| ----------
| input_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| system inputs to obtain the vector of subsystem inputs. These
| values are added to the inputs specified in the connection map.
|
| set_output_map(self, output_map)
| Set the output map for an interconnected I/O system.
|
| Parameters
| ----------
| output_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs concatenated with subsystem inputs to obtain
| the vector of system outputs.
|
| unused_signals(self)
| Find unused subsystem inputs and outputs.
|
| Returns
| -------
| unused_inputs : dict
| A mapping from tuple of indices (isys, isig) to string
| '{sys}.{sig}', for all unused subsystem inputs.
|
| unused_outputs : dict
| A mapping from tuple of indices (osys, osig) to string
| '{sys}.{sig}', for all unused subsystem outputs.
|
| ----------------------------------------------------------------------
| Methods inherited from StateSpace:
|
| __add__(self, other)
| Add two LTI systems (parallel connection).
|
| __getitem__(self, key)
| Array style access
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a state space system.
|
| __pow__(self, other)
| Power of a state space system
|
| __radd__(self, other)
| Right add two LTI systems (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI systems.
|
| __rtruediv__(self, other)
| Division by state space system
|
| __sub__(self, other)
| Subtract two LTI systems.
|
| __truediv__(self, other)
| Division of state space systems by TFs, FRDs, scalars, and arrays
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to state-space if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `StateSpace`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| The zero-frequency gain of a continuous-time state-space
| system is given by:
|
| .. math: G(0) = - C A^{-1} B + D
|
| and of a discrete-time state-space system by:
|
| .. math: G(1) = C (I - A)^{-1} B + D
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| dynamics(self, t, x, u=None, params=None)
| Compute the dynamics of the system.
|
| Given input `u` and state `x`, returns the dynamics of the state-space
| system. If the system is continuous, returns the time derivative dx/dt
|
| dx/dt = A x + B u
|
| where A and B are the state-space matrices of the system. If the
| system is discrete time, returns the next value of `x`:
|
| x[t+dt] = A x[t] + B u[t]
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to numerical integrators, such as `scipy.integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input, zero if omitted.
|
| Returns
| -------
| dx/dt or x[t+dt] : ndarray
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `StateSpace.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| Notes
| -----
| Attempts to use Laub's method from Slycot library, with a fall-back
| to Python code.
|
| initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs) from control.timeresp
| Compute the initial condition response for a linear system.
|
| If the system has multiple outputs (MIMO), optionally, one output
| may be selected. If no selection is made for the output, all
| outputs are given.
|
| For information on the **shape** of parameters `T`, `X0` and
| return values `T`, `yout`, see :ref:`time-series-convention`.
|
| Parameters
| ----------
| sysdata : I/O system or list of I/O systems
| I/O system(s) for which initial response is computed.
| timepts (or T) : array_like or float, optional
| Time vector, or simulation time duration if a number (time vector is
| auto-computed if not given; see `step_response` for more detail).
| initial_state (or X0) : array_like or float, optional
| Initial condition (default = 0). Numbers are converted to constant
| arrays with the correct shape.
| output_indices (or output) : int
| Index of the output that will be used in this simulation. Set
| to None to not trim outputs.
| timepts_num (or T_num) : int, optional
| Number of time steps to use in simulation if `timepts` is not
| provided as an array (auto-computed if not given); ignored if the
| system is discrete time.
| params : dict, optional
| If system is a nonlinear I/O system, set parameter values.
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`). Default
| value is False.
| return_states (or return_x) : bool, optional
| If True, return the state vector when assigning to a tuple
| (default = False). See `forced_response` for more details.
| squeeze : bool, optional
| By default, if a system is single-input, single-output (SISO) then
| the output response is returned as a 1D array (indexed by time).
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep the output as a 2D array (indexed by the
| output number and time) even if the system is SISO. The default
| value can be set using
| `config.defaults['control.squeeze_time_response']`.
|
| Returns
| -------
| results : `TimeResponseData` or `TimeResponseList`
| Time response represented as a `TimeResponseData` object or
| list of `TimeResponseData` objects. See
| `forced_response` for additional information.
|
| See Also
| --------
| forced_response, impulse_response, step_response
|
| Notes
| -----
| This function uses the `forced_response` function with the input set to
| zero.
|
| Examples
| --------
| >>> G = ct.rss(4)
| >>> T, yout = ct.initial_response(G)
|
| lft(self, other, nu=-1, ny=-1)
| Return the linear fractional transformation.
|
| A definition of the LFT operator can be found in Appendix A.7,
| page 512 in [1]_. An alternative definition can be found here:
| https://www.mathworks.com/help/control/ref/lft.html
|
| Parameters
| ----------
| other : `StateSpace`
| The lower LTI system.
| ny : int, optional
| Dimension of (plant) measurement output.
| nu : int, optional
| Dimension of (plant) control input.
|
| Returns
| -------
| `StateSpace`
|
| References
| ----------
| .. [1] S. Skogestad, Multivariable Feedback Control. Second
| edition, 2005.
|
| minreal(self, tol=0.0)
| Remove unobservable and uncontrollable states.
|
| Calculate a minimal realization for a state space system,
| removing all unobservable and/or uncontrollable states.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether states are unobservable
| or uncontrollable.
|
| output(self, t, x, u=None, params=None)
| Compute the output of the system.
|
| Given input `u` and state `x`, returns the output `y` of the
| state-space system:
|
| y = C x + D u
|
| where A and B are the state-space matrices of the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to most numerical integrators, such as SciPy's `integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input (zero if omitted).
|
| Returns
| -------
| y : ndarray
|
| poles(self)
| Compute the poles of a state space system.
|
| returnScipySignalLTI(self, strict=True)
| Return a list of a list of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = ssobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3][5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the transfer
| function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `ssobject.dt` cannot be None; it must
| be continuous (0) or discrete (True or > 0).
| False:
| If `ssobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned.
|
| Returns
| -------
| out : list of list of `scipy.signal.StateSpace`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with method='gbt', and is
| ignored otherwise.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous-time system's magnitude and phase (the gain = 1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is
| generated with a unique integer id. If `copy_names` is
| True, the new system name is determined by adding the
| prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with
| the default being to add the suffix '$sampled'.
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `StateSpace`
| Discrete-time system, with sampling rate `Ts`.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
| states : int, list of str, or None, optional
| Description of the system states. Same format as `inputs`.
|
| Notes
| -----
| Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> G = ct.ss(0, 1, 1, 0)
| >>> sysd = G.sample(0.5, method='bilinear')
|
| slycot_laub(self, x)
| Laub's method to evaluate response at complex frequency.
|
| Evaluate transfer function at complex frequency using Laub's
| method from Slycot. Expects inputs and outputs to be
| formatted correctly. Use ``sys(x)`` for a more user-friendly
| interface.
|
| Parameters
| ----------
| x : complex array_like or complex
| Complex frequency.
|
| Returns
| -------
| output : (number_outputs, number_inputs, len(x)) complex ndarray
| Frequency response.
|
| zeros(self)
| Compute the zeros of a state space system.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from StateSpace:
|
| A = []
|
| B = []
|
| C = []
|
| D = []
|
| ninputs = 0
|
| noutputs = 0
|
| nstates = 0
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.NonlinearIOSystem:
|
| linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs)
| Linearize an input/output system at a given state and input.
|
| Return the linearization of an input/output system at a given
| operating point (or state and input value) as a `StateSpace` system.
| See `linearize` for complete documentation.
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
control.NamedSignal
Python Library Documentation: class NamedSignal in module control.iosys
class NamedSignal(numpy.ndarray)
| NamedSignal(input_array, signal_labels=None, trace_labels=None)
|
| Named signal with label-based access.
|
| This class modifies the `numpy.ndarray` class and allows signals to
| be accessed using the signal name in addition to indices and slices.
|
| Signals can be either a 2D array, index by signal and time, or a 3D
| array, indexed by signal, trace, and time.
|
| Attributes
| ----------
| signal_labels : list of str
| Label names for each of the signal elements in the signal.
| trace_labels : list of str, optional
| Label names for each of the traces in the signal (if multi-trace).
|
| Examples
| --------
| >>> sys = ct.rss(
| ... states=['p1', 'p2', 'p3'], inputs=['u1', 'u2'], outputs=['y'])
| >>> resp = ct.step_response(sys)
| >>> resp.states['p1', 'u1'] # Step response from u1 to p1
| NamedSignal(...)
|
| Method resolution order:
| NamedSignal
| numpy.ndarray
| builtins.object
|
| Methods defined here:
|
| __array_finalize__(self, obj)
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __getitem__(self, key)
| Return self[key].
|
| __repr__(self)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(cls, input_array, signal_labels=None, trace_labels=None)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| ----------------------------------------------------------------------
| Methods inherited from numpy.ndarray:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __array_wrap__(...)
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __imul__(self, value, /)
| Return self*=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __ipow__(self, value, /)
| Return self**=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| a.all(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if all elements evaluate to True.
|
| Refer to `numpy.all` for full documentation.
|
| See Also
| --------
| numpy.all : equivalent function
|
| any(...)
| a.any(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if any of the elements of `a` evaluate to True.
|
| Refer to `numpy.any` for full documentation.
|
| See Also
| --------
| numpy.any : equivalent function
|
| argmax(...)
| a.argmax(axis=None, out=None, *, keepdims=False)
|
| Return indices of the maximum values along the given axis.
|
| Refer to `numpy.argmax` for full documentation.
|
| See Also
| --------
| numpy.argmax : equivalent function
|
| argmin(...)
| a.argmin(axis=None, out=None, *, keepdims=False)
|
| Return indices of the minimum values along the given axis.
|
| Refer to `numpy.argmin` for detailed documentation.
|
| See Also
| --------
| numpy.argmin : equivalent function
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| flatten(...)
| a.flatten(order='C')
|
| Return a copy of the array collapsed into one dimension.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order.
| 'F' means to flatten in column-major (Fortran-
| style) order. 'A' means to flatten in column-major
| order if `a` is Fortran *contiguous* in memory,
| row-major order otherwise. 'K' means to flatten
| `a` in the order the elements occur in memory.
| The default is 'C'.
|
| Returns
| -------
| y : ndarray
| A copy of the input array, flattened to one dimension.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,2], [3,4]])
| >>> a.flatten()
| array([1, 2, 3, 4])
| >>> a.flatten('F')
| array([1, 3, 2, 4])
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| max(...)
| a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the maximum along a given axis.
|
| Refer to `numpy.amax` for full documentation.
|
| See Also
| --------
| numpy.amax : equivalent function
|
| mean(...)
| a.mean(axis=None, dtype=None, out=None, keepdims=False, *, where=True)
|
| Returns the average of the array elements along given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean : equivalent function
|
| min(...)
| a.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the minimum along a given axis.
|
| Refer to `numpy.amin` for full documentation.
|
| See Also
| --------
| numpy.amin : equivalent function
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| prod(...)
| a.prod(axis=None, dtype=None, out=None, keepdims=False,
| initial=1, where=True)
|
| Return the product of the array elements over the given axis
|
| Refer to `numpy.prod` for full documentation.
|
| See Also
| --------
| numpy.prod : equivalent function
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| ravel(...)
| a.ravel([order])
|
| Return a flattened array.
|
| Refer to `numpy.ravel` for full documentation.
|
| See Also
| --------
| numpy.ravel : equivalent function
|
| ndarray.flat : a flat iterator on the array.
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| squeeze(...)
| a.squeeze(axis=None)
|
| Remove axes of length one from `a`.
|
| Refer to `numpy.squeeze` for full documentation.
|
| See Also
| --------
| numpy.squeeze : equivalent function
|
| std(...)
| a.std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the standard deviation of the array elements along given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std : equivalent function
|
| sum(...)
| a.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
|
| Return the sum of the array elements over the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum : equivalent function
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tolist(...)
| a.tolist()
|
| Return the array as an ``a.ndim``-levels deep nested list of Python scalars.
|
| Return a copy of the array data as a (nested) Python list.
| Data items are converted to the nearest compatible builtin Python type, via
| the `~numpy.ndarray.item` function.
|
| If ``a.ndim`` is 0, then since the depth of the nested list is 0, it will
| not be a list at all, but a simple Python scalar.
|
| Parameters
| ----------
| none
|
| Returns
| -------
| y : object, or list of object, or list of list of object, or ...
| The possibly nested list of array elements.
|
| Notes
| -----
| The array may be recreated via ``a = np.array(a.tolist())``, although this
| may sometimes lose precision.
|
| Examples
| --------
| For a 1D array, ``a.tolist()`` is almost the same as ``list(a)``,
| except that ``tolist`` changes numpy scalars to Python scalars:
|
| >>> import numpy as np
| >>> a = np.uint32([1, 2])
| >>> a_list = list(a)
| >>> a_list
| [1, 2]
| >>> type(a_list[0])
| <class 'numpy.uint32'>
| >>> a_tolist = a.tolist()
| >>> a_tolist
| [1, 2]
| >>> type(a_tolist[0])
| <class 'int'>
|
| Additionally, for a 2D array, ``tolist`` applies recursively:
|
| >>> a = np.array([[1, 2], [3, 4]])
| >>> list(a)
| [array([1, 2]), array([3, 4])]
| >>> a.tolist()
| [[1, 2], [3, 4]]
|
| The base case for this recursion is a 0D array:
|
| >>> a = np.array(1)
| >>> list(a)
| Traceback (most recent call last):
| ...
| TypeError: iteration over a 0-d array
| >>> a.tolist()
| 1
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| var(...)
| a.var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the variance of the array elements, along given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var : equivalent function
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods inherited from numpy.ndarray:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from numpy.ndarray:
|
| T
| View of the transposed array.
|
| Same as ``self.transpose()``.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.T
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.T
| array([1, 2, 3, 4])
|
| See Also
| --------
| transpose
|
| __array_interface__
| Array protocol: Python side.
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| ptp
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from numpy.ndarray:
|
| __hash__ = None
control.NonlinearIOSystem
Python Library Documentation: class NonlinearIOSystem in module control.nlsys class NonlinearIOSystem(control.iosys.InputOutputSystem) | NonlinearIOSystem(updfcn, outfcn=None, params=None, **kwargs) | | Nonlinear input/output system model. | | Creates an `InputOutputSystem` for a nonlinear system | by specifying a state update function and an output function. The new | system can be a continuous or discrete-time system. Nonlinear I/O | systems are usually created with the `nlsys` factory | function. | | Parameters | ---------- | updfcn : callable | Function returning the state update function | | ``updfcn(t, x, u, params) -> array`` | | where `t` is a float representing the current time, `x` is a 1-D | array with shape (nstates,), `u` is a 1-D array with shape | (ninputs,), and `params` is a dict containing the values of | parameters used by the function. | | outfcn : callable | Function returning the output at the given state | | `outfcn(t, x, u, params) -> array` | | where the arguments are the same as for `updfcn`. | | inputs, outputs, states : int, list of str or None, optional | Description of the system inputs, outputs, and states. See | `control.nlsys` for more details. | | params : dict, optional | Parameter values for the systems. Passed to the evaluation functions | for the system as default values, overriding internal defaults. | | dt : timebase, optional | The timebase for the system, used to specify whether the system is | operating in continuous or discrete time. It can have the | following values: | | * `dt` = 0: continuous-time system (default) | * `dt` > 0: discrete-time system with sampling period `dt` | * `dt` = True: discrete time with unspecified sampling period | * `dt` = None: no timebase specified | | Attributes | ---------- | ninputs, noutputs, nstates : int | Number of input, output and state variables. | shape : tuple | 2-tuple of I/O system dimension, (noutputs, ninputs). | input_labels, output_labels, state_labels : list of str | Names for the input, output, and state variables. | name : string, optional | System name. | | See Also | -------- | nlsys, InputOutputSystem | | Notes | ----- | The `InputOutputSystem` class (and its subclasses) makes use of two | special methods for implementing much of the work of the class: | | * _rhs(t, x, u): compute the right hand side of the differential or | difference equation for the system. If not specified, the system | has no state. | | * _out(t, x, u): compute the output for the current state of the system. | The default is to return the entire system state. | | Method resolution order: | NonlinearIOSystem | control.iosys.InputOutputSystem | builtins.object | | Methods defined here: | | __add__(self, other) | Add two input/output systems (parallel interconnection) | | __call__(sys, u, params=None, squeeze=None) | Evaluate a (static) nonlinearity at a given input value. | | If a nonlinear I/O system has no internal state, then evaluating | the system at an input `u` gives the output ``y = F(u)``, | determined by the output function. | | Parameters | ---------- | params : dict, optional | Parameter values for the system. Passed to the evaluation function | for the system as default values, overriding internal defaults. | squeeze : bool, optional | If True and if the system has a single output, return the | system output as a 1D array rather than a 2D array. If | False, return the system output as a 2D array even if the | system is SISO. Default value set by | `config.defaults['control.squeeze_time_response']`. | | __init__(self, updfcn, outfcn=None, params=None, **kwargs) | Create a nonlinear I/O system given update and output functions. | | __mul__(self, other) | Multiply two input/output systems (series interconnection) | | __neg__(self) | Negate an input/output system (rescale) | | __radd__(self, other) | Parallel addition of input/output system to a compatible object. | | __rmul__(self, other) | Pre-multiply an input/output systems by a scalar/matrix | | __rsub__(self, other) | Parallel subtraction of I/O system to a compatible object. | | __str__(self) | String representation of an input/output object | | __sub__(self, other) | Subtract two input/output systems (parallel interconnection) | | __truediv__(self, other) | Division of input/output system (by scalar or array) | | dynamics(self, t, x, u, params=None) | Dynamics of a differential or difference equation. | | Given time `t`, input `u` and state `x`, returns the value of the | right hand side of the dynamical system. If the system is a | continuous-time system, returns the time derivative:: | | dx/dt = updfcn(t, x, u[, params]) | | where `updfcn` is the system's (possibly nonlinear) update function. | If the system is discrete time, returns the next value of `x`:: | | x[t+dt] = updfcn(t, x[t], u[t][, params]) | | where `t` is a scalar. | | The inputs `x` and `u` must be of the correct length. The `params` | argument is an optional dictionary of parameter values. | | Parameters | ---------- | t : float | Time at which to evaluate. | x : array_like | Current state. | u : array_like | Current input. | params : dict, optional | System parameter values. | | Returns | ------- | dx/dt or x[t+dt] : ndarray | | feedback(self, other=1, sign=-1, params=None) | Feedback interconnection between two I/O systems. | | Parameters | ---------- | other : `InputOutputSystem` | System in the feedback path. | | sign : float, optional | Gain to use in feedback path. Defaults to -1. | | params : dict, optional | Parameter values for the overall system. Passed to the | evaluation functions for the system as default values, | overriding defaults for the individual systems. | | Returns | ------- | `NonlinearIOSystem` | | linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs) | Linearize an input/output system at a given state and input. | | Return the linearization of an input/output system at a given | operating point (or state and input value) as a `StateSpace` system. | See `linearize` for complete documentation. | | output(self, t, x, u, params=None) | Compute the output of the system. | | Given time `t`, input `u` and state `x`, returns the output of the | system:: | | y = outfcn(t, x, u[, params]) | | The inputs `x` and `u` must be of the correct length. | | Parameters | ---------- | t : float | The time at which to evaluate. | x : array_like | Current state. | u : array_like | Current input. | params : dict, optional | System parameter values. | | Returns | ------- | y : ndarray | | ---------------------------------------------------------------------- | Methods inherited from control.iosys.InputOutputSystem: | | __repr__(self) | Return repr(self). | | copy(self, name=None, use_prefix_suffix=True) | Make a copy of an input/output system. | | A copy of the system is made, with a new name. The `name` keyword | can be used to specify a specific name for the system. If no name | is given and `use_prefix_suffix` is True, the name is constructed | by prepending `config.defaults['iosys.duplicate_system_name_prefix']` | and appending `config.defaults['iosys.duplicate_system_name_suffix']`. | Otherwise, a generic system name of the form 'sys[<id>]' is used, | where '<id>' is based on an internal counter. | | Parameters | ---------- | name : str, optional | Name of the newly created system. | | use_prefix_suffix : bool, optional | If True and `name` is None, set the name of the new system | to the name of the original system with prefix | `config.defaults['duplicate_system_name_prefix']` and | suffix `config.defaults['duplicate_system_name_suffix']`. | | Returns | ------- | `InputOutputSystem` | | find_input(self, name) | Find the index for an input given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired input. | | Returns | ------- | int | Index of the named input. | | find_inputs(self, name_list) | Return list of indices matching input spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired inputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified inputs. | | find_output(self, name) | Find the index for a output given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired output. | | Returns | ------- | int | Index of the named output. | | find_outputs(self, name_list) | Return list of indices matching output spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired outputs. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified outputs. | | find_state(self, name) | Find the index for a state given its name (None if not found). | | Parameters | ---------- | name : str | Signal name for the desired state. | | Returns | ------- | int | Index of the named state. | | find_states(self, name_list) | Return list of indices matching state spec (None if not found). | | Parameters | ---------- | name_list : str or list of str | List of signal specifications for the desired states. A | signal can be described by its name or by a slice-like | description of the form 'start:end` where 'start' and | 'end' are signal names. If either is omitted, it is taken | as the first or last signal, respectively. | | Returns | ------- | list of int | List of indices for the specified states.. | | isctime(self, strict=False) | Check to see if a system is a continuous-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | isdtime(self, strict=False) | Check to see if a system is a discrete-time system. | | Parameters | ---------- | strict : bool, optional | If strict is True, make sure that timebase is not None. Default | is False. | | issiso(self) | Check to see if a system is single input, single output. | | set_inputs(self, inputs, prefix='u') | Set the number/names of the system inputs. | | Parameters | ---------- | inputs : int, list of str, or None | Description of the system inputs. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'u[i]' (where the prefix 'u' can be changed using the | optional prefix parameter). | prefix : string, optional | If `inputs` is an integer, create the names of the states using | the given prefix (default = 'u'). The names of the input will be | of the form 'prefix[i]'. | | set_outputs(self, outputs, prefix='y') | Set the number/names of the system outputs. | | Parameters | ---------- | outputs : int, list of str, or None | Description of the system outputs. This can be given as an | integer count or as a list of strings that name the individual | signals. If an integer count is specified, the names of the | signal will be of the form 'y[i]' (where the prefix 'y' can be | changed using the optional prefix parameter). | prefix : string, optional | If `outputs` is an integer, create the names of the states using | the given prefix (default = 'y'). The names of the input will be | of the form 'prefix[i]'. | | set_states(self, states, prefix='x') | Set the number/names of the system states. | | Parameters | ---------- | states : int, list of str, or None | Description of the system states. This can be given as an integer | count or as a list of strings that name the individual signals. | If an integer count is specified, the names of the signal will be | of the form 'x[i]' (where the prefix 'x' can be changed using the | optional prefix parameter). | prefix : string, optional | If `states` is an integer, create the names of the states using | the given prefix (default = 'x'). The names of the input will be | of the form 'prefix[i]'. | | update_names(self, **kwargs) | update_names([name, inputs, outputs, states]) | | Update signal and system names for an I/O system. | | Parameters | ---------- | name : str, optional | New system name. | inputs : list of str, int, or None, optional | List of strings that name the individual input signals. If | given as an integer or None, signal names default to the form | 'u[i]'. See `InputOutputSystem` for more information. | outputs : list of str, int, or None, optional | Description of output signals; defaults to 'y[i]'. | states : int, list of str, int, or None, optional | Description of system states; defaults to 'x[i]'. | input_prefix : string, optional | Set the prefix for input signals. Default = 'u'. | output_prefix : string, optional | Set the prefix for output signals. Default = 'y'. | state_prefix : string, optional | Set the prefix for state signals. Default = 'x'. | | ---------------------------------------------------------------------- | Readonly properties inherited from control.iosys.InputOutputSystem: | | shape | 2-tuple of I/O system dimension, (noutputs, ninputs). | | ---------------------------------------------------------------------- | Data descriptors inherited from control.iosys.InputOutputSystem: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | input_labels | List of labels for the input signals. | | output_labels | List of labels for the output signals. | | repr_format | String representation format. | | Format used in creating the representation for the system: | | * 'info' : <IOSystemType sysname: [inputs] -> [outputs]> | * 'eval' : system specific, loadable representation | * 'latex' : HTML/LaTeX representation of the object | | The default representation for an input/output is set to 'eval'. | This value can be changed for an individual system by setting the | `repr_format` parameter when the system is created or by setting | the `repr_format` property after system creation. Set | `config.defaults['iosys.repr_format']` to change for all I/O systems | or use the `repr_format` parameter/attribute for a single system. | | state_labels | List of labels for the state signals. | | ---------------------------------------------------------------------- | Data and other attributes inherited from control.iosys.InputOutputSystem: | | __array_priority__ = 20 | | dt = None | | ninputs = None | | noutputs = None | | nstates = None
control.NyquistResponseData
Python Library Documentation: class NyquistResponseData in module control.freqplot class NyquistResponseData(builtins.object) | NyquistResponseData(count, contour, response, dt, sysname=None, return_contour=False) | | Nyquist response data object. | | Nyquist contour analysis allows the stability and robustness of a | closed loop linear system to be evaluated using the open loop response | of the loop transfer function. The NyquistResponseData class is used | by the `nyquist_response` function to return the | response of a linear system along the Nyquist 'D' contour. The | response object can be used to obtain information about the Nyquist | response or to generate a Nyquist plot. | | Parameters | ---------- | count : integer | Number of encirclements of the -1 point by the Nyquist curve for | a system evaluated along the Nyquist contour. | contour : complex array | The Nyquist 'D' contour, with appropriate indentations to avoid | open loop poles and zeros near/on the imaginary axis. | response : complex array | The value of the linear system under study along the Nyquist contour. | dt : None or float | The system timebase. | sysname : str | The name of the system being analyzed. | return_contour : bool | If True, when the object is accessed as an iterable return two | elements: `count` (number of encirclements) and `contour`. If | False (default), then return only `count`. | | Methods defined here: | | __getitem__(self, index) | # Implement (thin) getitem to allow access via legacy indexing | | __init__(self, count, contour, response, dt, sysname=None, return_contour=False) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self) | # Implement iter to allow assigning to a tuple | | __len__(self) | # Implement (thin) len to emulate legacy testing interface | | plot(self, *args, **kwargs) | Plot a list of Nyquist responses. | | See `nyquist_plot` for details. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.NyquistResponseList
Python Library Documentation: class NyquistResponseList in module control.freqplot class NyquistResponseList(builtins.list) | NyquistResponseList(iterable=(), /) | | List of NyquistResponseData objects with plotting capability. | | This class consists of a list of `NyquistResponseData` objects. | It is a subclass of the Python `list` class, with a `plot` method that | plots the individual `NyquistResponseData` objects. | | Method resolution order: | NyquistResponseList | builtins.list | builtins.object | | Methods defined here: | | plot(self, *args, **kwargs) | Plot a list of Nyquist responses. | | See `nyquist_plot` for details. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.list: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return bool(key in self). | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(self, index, /) | Return self[index]. | | __gt__(self, value, /) | Return self>value. | | __iadd__(self, value, /) | Implement self+=value. | | __imul__(self, value, /) | Implement self*=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __mul__(self, value, /) | Return self*value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | __reversed__(self, /) | Return a reverse iterator over the list. | | __rmul__(self, value, /) | Return value*self. | | __setitem__(self, key, value, /) | Set self[key] to value. | | __sizeof__(self, /) | Return the size of the list in memory, in bytes. | | append(self, object, /) | Append object to the end of the list. | | clear(self, /) | Remove all items from list. | | copy(self, /) | Return a shallow copy of the list. | | count(self, value, /) | Return number of occurrences of value. | | extend(self, iterable, /) | Extend list by appending elements from the iterable. | | index(self, value, start=0, stop=9223372036854775807, /) | Return first index of value. | | Raises ValueError if the value is not present. | | insert(self, index, object, /) | Insert object before index. | | pop(self, index=-1, /) | Remove and return item at index (default last). | | Raises IndexError if list is empty or index is out of range. | | remove(self, value, /) | Remove first occurrence of value. | | Raises ValueError if the value is not present. | | reverse(self, /) | Reverse *IN PLACE*. | | sort(self, /, *, key=None, reverse=False) | Sort the list in ascending order and return None. | | The sort is in-place (i.e. the list itself is modified) and stable (i.e. the | order of two equal elements is maintained). | | If a key function is given, apply it once to each list item and sort them, | ascending or descending, according to their function values. | | The reverse flag can be set to sort in descending order. | | ---------------------------------------------------------------------- | Class methods inherited from builtins.list: | | __class_getitem__(...) | See PEP 585 | | ---------------------------------------------------------------------- | Static methods inherited from builtins.list: | | __new__(*args, **kwargs) class method of builtins.list | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes inherited from builtins.list: | | __hash__ = None
control.OperatingPoint
Python Library Documentation: class OperatingPoint in module control.nlsys class OperatingPoint(builtins.object) | OperatingPoint(states, inputs, outputs=None, result=None, return_outputs=False, return_result=False) | | Operating point of nonlinear I/O system. | | The OperatingPoint class stores the operating point of a nonlinear | system, consisting of the state and input vectors for the system. The | main use for this class is as the return object for the | `find_operating_point` function and as an input to the | `linearize` function. | | Parameters | ---------- | states : array | State vector at the operating point. | inputs : array | Input vector at the operating point. | outputs : array, optional | Output vector at the operating point. | result : `scipy.optimize.OptimizeResult`, optional | Result from the `scipy.optimize.root` function, if available. | return_outputs, return_result : bool, optional | If set to True, then when accessed a tuple the output values | and/or result of the root finding function will be returned. | | Notes | ----- | In addition to accessing the elements of the operating point as | attributes, if accessed as a list then the object will return ``(x0, | u0[, y0, res])``, where `y0` and `res` are returned depending on the | `return_outputs` and `return_result` parameters. | | Methods defined here: | | __getitem__(self, index) | # Implement (thin) getitem to allow access via legacy indexing | | __init__(self, states, inputs, outputs=None, result=None, return_outputs=False, return_result=False) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self) | # Implement iter to allow assigning to a tuple | | __len__(self) | # Implement (thin) len to emulate legacy return value | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.PoleZeroData
Python Library Documentation: class PoleZeroData in module control.pzmap class PoleZeroData(builtins.object) | PoleZeroData(poles, zeros, gains=None, loci=None, dt=None, sysname=None, sys=None, sort_loci=True) | | Pole/zero data object. | | This class is used as the return type for computing pole/zero responses | and root locus diagrams. It contains information on the location of | system poles and zeros, as well as the gains and loci for root locus | diagrams. | | Parameters | ---------- | poles : ndarray | 1D array of system poles. | zeros : ndarray | 1D array of system zeros. | gains : ndarray, optional | 1D array of gains for root locus plots. | loci : ndarray, optional | 2D array of poles, with each row corresponding to a gain. | sysname : str, optional | System name. | sys : `StateSpace` or `TransferFunction`, optional | System corresponding to the data. | dt : None, True or float, optional | System timebase (used for showing stability boundary). | sort_loci : bool, optional | Set to False to turn off sorting of loci into unique branches. | | Methods defined here: | | __init__(self, poles, zeros, gains=None, loci=None, dt=None, sysname=None, sys=None, sort_loci=True) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self) | # Implement functions to allow legacy assignment to tuple | | plot(self, *args, **kwargs) | Plot the pole/zero data. | | See `pole_zero_plot` for description of arguments and keywords. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.PoleZeroList
Python Library Documentation: class PoleZeroList in module control.pzmap class PoleZeroList(builtins.list) | PoleZeroList(iterable=(), /) | | List of PoleZeroData objects with plotting capability. | | Method resolution order: | PoleZeroList | builtins.list | builtins.object | | Methods defined here: | | plot(self, *args, **kwargs) | Plot pole/zero data. | | See `pole_zero_plot` for description of arguments and keywords. | | replot(self, cplt: control.ctrlplot.ControlPlot) | Update the pole/zero loci of an existing plot. | | Parameters | ---------- | cplt : `ControlPlot` | Graphics handles of the existing plot. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.list: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return bool(key in self). | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(self, index, /) | Return self[index]. | | __gt__(self, value, /) | Return self>value. | | __iadd__(self, value, /) | Implement self+=value. | | __imul__(self, value, /) | Implement self*=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __mul__(self, value, /) | Return self*value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | __reversed__(self, /) | Return a reverse iterator over the list. | | __rmul__(self, value, /) | Return value*self. | | __setitem__(self, key, value, /) | Set self[key] to value. | | __sizeof__(self, /) | Return the size of the list in memory, in bytes. | | append(self, object, /) | Append object to the end of the list. | | clear(self, /) | Remove all items from list. | | copy(self, /) | Return a shallow copy of the list. | | count(self, value, /) | Return number of occurrences of value. | | extend(self, iterable, /) | Extend list by appending elements from the iterable. | | index(self, value, start=0, stop=9223372036854775807, /) | Return first index of value. | | Raises ValueError if the value is not present. | | insert(self, index, object, /) | Insert object before index. | | pop(self, index=-1, /) | Remove and return item at index (default last). | | Raises IndexError if list is empty or index is out of range. | | remove(self, value, /) | Remove first occurrence of value. | | Raises ValueError if the value is not present. | | reverse(self, /) | Reverse *IN PLACE*. | | sort(self, /, *, key=None, reverse=False) | Sort the list in ascending order and return None. | | The sort is in-place (i.e. the list itself is modified) and stable (i.e. the | order of two equal elements is maintained). | | If a key function is given, apply it once to each list item and sort them, | ascending or descending, according to their function values. | | The reverse flag can be set to sort in descending order. | | ---------------------------------------------------------------------- | Class methods inherited from builtins.list: | | __class_getitem__(...) | See PEP 585 | | ---------------------------------------------------------------------- | Static methods inherited from builtins.list: | | __new__(*args, **kwargs) class method of builtins.list | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes inherited from builtins.list: | | __hash__ = None
control.StateSpace
Python Library Documentation: class StateSpace in module control.statesp
class StateSpace(control.nlsys.NonlinearIOSystem, control.lti.LTI)
| StateSpace(*args, **kwargs)
|
| StateSpace(A, B, C, D[, dt])
|
| State space representation for LTI input/output systems.
|
| The StateSpace class is used to represent state-space realizations of
| linear time-invariant (LTI) systems:
|
| .. math::
|
| dx/dt &= A x + B u \\
| y &= C x + D u
|
| where :math:`u` is the input, :math:`y` is the output, and
| :math:`x` is the state. State space systems are usually created
| with the `ss` factory function.
|
| Parameters
| ----------
| A, B, C, D : array_like
| System matrices of the appropriate dimensions.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
|
| Attributes
| ----------
| ninputs, noutputs, nstates : int
| Number of input, output and state variables.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels, state_labels : list of str
| Names for the input, output, and state variables.
| name : string, optional
| System name.
|
| See Also
| --------
| ss, InputOutputSystem, NonlinearIOSystem
|
| Notes
| -----
| The main data members in the `StateSpace` class are the A, B, C, and D
| matrices. The class also keeps track of the number of states (i.e.,
| the size of A).
|
| A discrete-time system is created by specifying a nonzero 'timebase', dt
| when the system is constructed:
|
| * `dt` = 0: continuous-time system (default)
| * `dt` > 0: discrete-time system with sampling period `dt`
| * `dt` = True: discrete time with unspecified sampling period
| * `dt` = None: no timebase specified
|
| Systems must have compatible timebases in order to be combined. A
| discrete-time system with unspecified sampling time (`dt` = True) can
| be combined with a system having a specified sampling time; the result
| will be a discrete-time system with the sample time of the other
| system. Similarly, a system with timebase None can be combined with a
| system having any timebase; the result will have the timebase of the
| other system. The default value of dt can be changed by changing the
| value of `config.defaults['control.default_dt']`.
|
| A state space system is callable and returns the value of the transfer
| function evaluated at a point in the complex plane. See
| `StateSpace.__call__` for a more detailed description.
|
| Subsystems corresponding to selected input/output pairs can be
| created by indexing the state space system::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets. The subsystem is created by truncating the inputs and
| outputs, but leaving the full set of system states.
|
| StateSpace instances have support for IPython HTML/LaTeX output, intended
| for pretty-printing in Jupyter notebooks. The HTML/LaTeX output can be
| configured using `config.defaults['statesp.latex_num_format']`
| and `config.defaults['statesp.latex_repr_type']`. The
| HTML/LaTeX output is tailored for MathJax, as used in Jupyter, and
| may look odd when typeset by non-MathJax LaTeX systems.
|
| `config.defaults['statesp.latex_num_format']` is a format string
| fragment, specifically the part of the format string after '{:'
| used to convert floating-point numbers to strings. By default it
| is '.3g'.
|
| `config.defaults['statesp.latex_repr_type']` must either be
| 'partitioned' or 'separate'. If 'partitioned', the A, B, C, D
| matrices are shown as a single, partitioned matrix; if
| 'separate', the matrices are shown separately.
|
| Method resolution order:
| StateSpace
| control.nlsys.NonlinearIOSystem
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI systems (parallel connection).
|
| __call__(self, x, squeeze=None, warn_infinite=True)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems.
|
| See `LTI.__call__` for details.
|
| Examples
| --------
| >>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
| >>> fresp = G(1j) # evaluate at s = 1j
|
| __getitem__(self, key)
| Array style access
|
| __init__(self, *args, **kwargs)
| StateSpace(A, B, C, D[, dt])
|
| Construct a state space object.
|
| The default constructor is StateSpace(A, B, C, D), where A, B, C, D
| are matrices or equivalent objects. To create a discrete-time
| system, use StateSpace(A, B, C, D, dt) where `dt` is the sampling
| time (or True for unspecified sampling time). To call the copy
| constructor, call ``StateSpace(sys)``, where `sys` is a `StateSpace`
| object.
|
| See `StateSpace` and `ss` for more information.
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a state space system.
|
| __pow__(self, other)
| Power of a state space system
|
| __radd__(self, other)
| Right add two LTI systems (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI systems.
|
| __rtruediv__(self, other)
| Division by state space system
|
| __str__(self)
| Return string representation of the state space system.
|
| __sub__(self, other)
| Subtract two LTI systems.
|
| __truediv__(self, other)
| Division of state space systems by TFs, FRDs, scalars, and arrays
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to state-space if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `StateSpace`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| The zero-frequency gain of a continuous-time state-space
| system is given by:
|
| .. math: G(0) = - C A^{-1} B + D
|
| and of a discrete-time state-space system by:
|
| .. math: G(1) = C (I - A)^{-1} B + D
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| dynamics(self, t, x, u=None, params=None)
| Compute the dynamics of the system.
|
| Given input `u` and state `x`, returns the dynamics of the state-space
| system. If the system is continuous, returns the time derivative dx/dt
|
| dx/dt = A x + B u
|
| where A and B are the state-space matrices of the system. If the
| system is discrete time, returns the next value of `x`:
|
| x[t+dt] = A x[t] + B u[t]
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to numerical integrators, such as `scipy.integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input, zero if omitted.
|
| Returns
| -------
| dx/dt or x[t+dt] : ndarray
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `StateSpace.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| Notes
| -----
| Attempts to use Laub's method from Slycot library, with a fall-back
| to Python code.
|
| initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs) from control.timeresp
| Compute the initial condition response for a linear system.
|
| If the system has multiple outputs (MIMO), optionally, one output
| may be selected. If no selection is made for the output, all
| outputs are given.
|
| For information on the **shape** of parameters `T`, `X0` and
| return values `T`, `yout`, see :ref:`time-series-convention`.
|
| Parameters
| ----------
| sysdata : I/O system or list of I/O systems
| I/O system(s) for which initial response is computed.
| timepts (or T) : array_like or float, optional
| Time vector, or simulation time duration if a number (time vector is
| auto-computed if not given; see `step_response` for more detail).
| initial_state (or X0) : array_like or float, optional
| Initial condition (default = 0). Numbers are converted to constant
| arrays with the correct shape.
| output_indices (or output) : int
| Index of the output that will be used in this simulation. Set
| to None to not trim outputs.
| timepts_num (or T_num) : int, optional
| Number of time steps to use in simulation if `timepts` is not
| provided as an array (auto-computed if not given); ignored if the
| system is discrete time.
| params : dict, optional
| If system is a nonlinear I/O system, set parameter values.
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`). Default
| value is False.
| return_states (or return_x) : bool, optional
| If True, return the state vector when assigning to a tuple
| (default = False). See `forced_response` for more details.
| squeeze : bool, optional
| By default, if a system is single-input, single-output (SISO) then
| the output response is returned as a 1D array (indexed by time).
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep the output as a 2D array (indexed by the
| output number and time) even if the system is SISO. The default
| value can be set using
| `config.defaults['control.squeeze_time_response']`.
|
| Returns
| -------
| results : `TimeResponseData` or `TimeResponseList`
| Time response represented as a `TimeResponseData` object or
| list of `TimeResponseData` objects. See
| `forced_response` for additional information.
|
| See Also
| --------
| forced_response, impulse_response, step_response
|
| Notes
| -----
| This function uses the `forced_response` function with the input set to
| zero.
|
| Examples
| --------
| >>> G = ct.rss(4)
| >>> T, yout = ct.initial_response(G)
|
| lft(self, other, nu=-1, ny=-1)
| Return the linear fractional transformation.
|
| A definition of the LFT operator can be found in Appendix A.7,
| page 512 in [1]_. An alternative definition can be found here:
| https://www.mathworks.com/help/control/ref/lft.html
|
| Parameters
| ----------
| other : `StateSpace`
| The lower LTI system.
| ny : int, optional
| Dimension of (plant) measurement output.
| nu : int, optional
| Dimension of (plant) control input.
|
| Returns
| -------
| `StateSpace`
|
| References
| ----------
| .. [1] S. Skogestad, Multivariable Feedback Control. Second
| edition, 2005.
|
| minreal(self, tol=0.0)
| Remove unobservable and uncontrollable states.
|
| Calculate a minimal realization for a state space system,
| removing all unobservable and/or uncontrollable states.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether states are unobservable
| or uncontrollable.
|
| output(self, t, x, u=None, params=None)
| Compute the output of the system.
|
| Given input `u` and state `x`, returns the output `y` of the
| state-space system:
|
| y = C x + D u
|
| where A and B are the state-space matrices of the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to most numerical integrators, such as SciPy's `integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input (zero if omitted).
|
| Returns
| -------
| y : ndarray
|
| poles(self)
| Compute the poles of a state space system.
|
| returnScipySignalLTI(self, strict=True)
| Return a list of a list of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = ssobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3][5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the transfer
| function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `ssobject.dt` cannot be None; it must
| be continuous (0) or discrete (True or > 0).
| False:
| If `ssobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned.
|
| Returns
| -------
| out : list of list of `scipy.signal.StateSpace`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with method='gbt', and is
| ignored otherwise.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous-time system's magnitude and phase (the gain = 1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is
| generated with a unique integer id. If `copy_names` is
| True, the new system name is determined by adding the
| prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with
| the default being to add the suffix '$sampled'.
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `StateSpace`
| Discrete-time system, with sampling rate `Ts`.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
| states : int, list of str, or None, optional
| Description of the system states. Same format as `inputs`.
|
| Notes
| -----
| Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> G = ct.ss(0, 1, 1, 0)
| >>> sysd = G.sample(0.5, method='bilinear')
|
| slycot_laub(self, x)
| Laub's method to evaluate response at complex frequency.
|
| Evaluate transfer function at complex frequency using Laub's
| method from Slycot. Expects inputs and outputs to be
| formatted correctly. Use ``sys(x)`` for a more user-friendly
| interface.
|
| Parameters
| ----------
| x : complex array_like or complex
| Complex frequency.
|
| Returns
| -------
| output : (number_outputs, number_inputs, len(x)) complex ndarray
| Frequency response.
|
| zeros(self)
| Compute the zeros of a state space system.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| states
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| A = []
|
| B = []
|
| C = []
|
| D = []
|
| ninputs = 0
|
| noutputs = 0
|
| nstates = 0
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.NonlinearIOSystem:
|
| linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs)
| Linearize an input/output system at a given state and input.
|
| Return the linearization of an input/output system at a given
| operating point (or state and input value) as a `StateSpace` system.
| See `linearize` for complete documentation.
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
control.TimeResponseData
Python Library Documentation: class TimeResponseData in module control.timeresp class TimeResponseData(builtins.object) | TimeResponseData(time, outputs, states=None, inputs=None, issiso=None, output_labels=None, state_labels=None, input_labels=None, title=None, transpose=False, return_x=False, squeeze=None, multi_trace=False, trace_labels=None, trace_types=None, plot_inputs=True, sysname=None, params=None, success=True, message=None) | | Input/output system time response data. | | This class maintains and manipulates the data corresponding to the | temporal response of an input/output system. It is used as the return | type for time domain simulations (`step_response`, `input_output_response`, | etc). | | A time response consists of a time vector, an output vector, and | optionally an input vector and/or state vector. Inputs and outputs can | be 1D (scalar input/output) or 2D (vector input/output). | | A time response can be stored for multiple input signals (called traces), | with the output and state indexed by the trace number. This allows for | input/output response matrices, which is mainly useful for impulse and | step responses for linear systems. For multi-trace responses, the same | time vector must be used for all traces. | | Time responses are accessed through either the raw data, stored as `t`, | `y`, `x`, `u`, or using a set of properties `time`, `outputs`, | `states`, `inputs`. When accessing time responses via their | properties, squeeze processing is applied so that (by default) | single-input, single-output systems will have the output and input | indices suppressed. This behavior is set using the `squeeze` parameter. | | Parameters | ---------- | time : 1D array | Time values of the output. Ignored if None. | outputs : ndarray | Output response of the system. This can either be a 1D array | indexed by time (for SISO systems or MISO systems with a specified | input), a 2D array indexed by output and time (for MIMO systems | with no input indexing, such as initial_response or forced | response) or trace and time (for SISO systems with multiple | traces), or a 3D array indexed by output, trace, and time (for | multi-trace input/output responses). | states : array, optional | Individual response of each state variable. This should be a 2D | array indexed by the state index and time (for single trace | systems) or a 3D array indexed by state, trace, and time. | inputs : array, optional | Inputs used to generate the output. This can either be a 1D array | indexed by time (for SISO systems or MISO/MIMO systems with a | specified input), a 2D array indexed either by input and time (for | a multi-input system) or trace and time (for a single-input, | multi-trace response), or a 3D array indexed by input, trace, and | time. | title : str, optional | Title of the data set (used as figure title in plotting). | squeeze : bool, optional | By default, if a system is single-input, single-output (SISO) then | the inputs and outputs are returned as a 1D array (indexed by time) | and if a system is multi-input or multi-output, then the inputs are | returned as a 2D array (indexed by input and time) and the outputs | are returned as either a 2D array (indexed by output and time) or a | 3D array (indexed by output, trace, and time). If `squeeze` = True, | access to the output response will remove single-dimensional | entries from the shape of the inputs and outputs even if the system | is not SISO. If squeeze=False, keep the input as a 2D or 3D array | (indexed by the input (if multi-input), trace (if single input) and | time) and the output as a 3D array (indexed by the output, trace, | and time) even if the system is SISO. The default value can be set | using `config.defaults['control.squeeze_time_response']`. | | Attributes | ---------- | t : 1D array | Time values of the input/output response(s). This attribute is | normally accessed via the `time` property. | y : 2D or 3D array | Output response data, indexed either by output index and time (for | single trace responses) or output, trace, and time (for multi-trace | responses). These data are normally accessed via the `outputs` | property, which performs squeeze processing. | x : 2D or 3D array, or None | State space data, indexed either by output number and time (for | single trace responses) or output, trace, and time (for multi-trace | responses). If no state data are present, value is None. These | data are normally accessed via the `states` property, which | performs squeeze processing. | u : 2D or 3D array, or None | Input signal data, indexed either by input index and time (for single | trace responses) or input, trace, and time (for multi-trace | responses). If no input data are present, value is None. These | data are normally accessed via the `inputs` property, which | performs squeeze processing. | issiso : bool, optional | Set to True if the system generating the data is single-input, | single-output. If passed as None (default), the input and output | data will be used to set the value. | ninputs, noutputs, nstates : int | Number of inputs, outputs, and states of the underlying system. | params : dict, optional | If system is a nonlinear I/O system, set parameter values. | ntraces : int, optional | Number of independent traces represented in the input/output | response. If `ntraces` is 0 (default) then the data represents a | single trace with the trace index suppressed in the data. | trace_labels : array of string, optional | Labels to use for traces (set to sysname it `ntraces` is 0). | trace_types : array of string, optional | Type of trace. Currently only 'step' is supported, which controls | the way in which the signal is plotted. | | Other Parameters | ---------------- | input_labels, output_labels, state_labels : array of str, optional | Optional labels for the inputs, outputs, and states, given as a | list of strings matching the appropriate signal dimension. | sysname : str, optional | Name of the system that created the data. | transpose : bool, optional | If True, transpose all input and output arrays (for backward | compatibility with MATLAB and `scipy.signal.lsim`). Default value | is False. | return_x : bool, optional | If True, return the state vector when enumerating result by | assigning to a tuple (default = False). | plot_inputs : bool, optional | Whether or not to plot the inputs by default (can be overridden | in the `~TimeResponseData.plot` method). | multi_trace : bool, optional | If True, then 2D input array represents multiple traces. For | a MIMO system, the `input` attribute should then be set to | indicate which trace is being specified. Default is False. | success : bool, optional | If False, result may not be valid (see `input_output_response`). | message : str, optional | Informational message if `success` is False. | | See Also | -------- | input_output_response, forced_response, impulse_response, initial_response, step_response, FrequencyResponseData | | Notes | ----- | The responses for individual elements of the time response can be | accessed using integers, slices, or lists of signal offsets or the | names of the appropriate signals:: | | sys = ct.rss(4, 2, 1) | resp = ct.initial_response(sys, initial_state=[1, 1, 1, 1]) | plt.plot(resp.time, resp.outputs['y[0]']) | | In the case of multi-trace data, the responses should be indexed using | the output signal name (or offset) and the input signal name (or | offset):: | | sys = ct.rss(4, 2, 2, strictly_proper=True) | resp = ct.step_response(sys) | plt.plot(resp.time, resp.outputs[['y[0]', 'y[1]'], 'u[0]'].T) | | For backward compatibility with earlier versions of python-control, | this class has an `__iter__` method that allows it to be assigned to | a tuple with a variable number of elements. This allows the following | patterns to work:: | | t, y = step_response(sys) | t, y, x = step_response(sys, return_x=True) | | Similarly, the class has `__getitem__` and `__len__` methods that | allow the return value to be indexed: | | * response[0]: returns the time vector | * response[1]: returns the output vector | * response[2]: returns the state vector | | When using this (legacy) interface, the state vector is not affected | by the `squeeze` parameter. | | The default settings for `return_x`, `squeeze` and `transpose` | can be changed by calling the class instance and passing new values:: | | response(transpose=True).input | | See `TimeResponseData.__call__` for more information. | | Methods defined here: | | __call__(self, **kwargs) | Change value of processing keywords. | | Calling the time response object will create a copy of the object and | change the values of the keywords used to control the `outputs`, | `states`, and `inputs` properties. | | Parameters | ---------- | squeeze : bool, optional | If `squeeze` = True, access to the output response will remove | single-dimensional entries from the shape of the inputs, | outputs, and states even if the system is not SISO. If | `squeeze` = False, keep the input as a 2D or 3D array (indexed | by the input (if multi-input), trace (if single input) and | time) and the output and states as a 3D array (indexed by the | output/state, trace, and time) even if the system is SISO. | | transpose : bool, optional | If True, transpose all input and output arrays (for backward | compatibility with MATLAB and `scipy.signal.lsim`). | Default value is False. | | return_x : bool, optional | If True, return the state vector when enumerating result by | assigning to a tuple (default = False). | | input_labels, output_labels, state_labels: array of str | Labels for the inputs, outputs, and states, given as a | list of strings matching the appropriate signal dimension. | | __getitem__(self, index) | # Implement (thin) getitem to allow access via legacy indexing | | __init__(self, time, outputs, states=None, inputs=None, issiso=None, output_labels=None, state_labels=None, input_labels=None, title=None, transpose=False, return_x=False, squeeze=None, multi_trace=False, trace_labels=None, trace_types=None, plot_inputs=True, sysname=None, params=None, success=True, message=None) | Create an input/output time response object. | | This function is used by the various time response functions, such | as `input_output_response` and `step_response` to store the | response of a simulation. It can be passed to `plot_time_response` | to plot the data, or the `~TimeResponseData.plot` method can be used. | | See `TimeResponseData` for more information on parameters. | | __iter__(self) | # Implement iter to allow assigning to a tuple | | __len__(self) | # Implement (thin) len to emulate legacy testing interface | | plot(self, *args, **kwargs) | Plot the time response data objects. | | This method calls `time_response_plot`, passing all arguments | and keywords. See `time_response_plot` for details. | | to_pandas(self) | Convert response data to pandas data frame. | | Creates a pandas data frame using the input, output, and state labels | for the time response. The column labels are given by the input and | output (and state, when present) labels, with time labeled by 'time' | and traces (for multi-trace responses) labeled by 'trace'. | | ---------------------------------------------------------------------- | Readonly properties defined here: | | inputs | Time response input vector. | | Input(s) to the system, indexed by input (optional), trace (optional), | and time. If a 1D vector is passed, the input corresponds to a | scalar-valued input. If a 2D vector is passed, then it can either | represent multiple single-input traces or a single multi-input trace. | The optional `multi_trace` keyword should be used to disambiguate | the two. If a 3D vector is passed, then it represents a multi-trace, | multi-input signal, indexed by input, trace, and time. | | Input and output signal names can be used to index the data in | place of integer offsets, with the input signal names being used to | access multi-input data. | | See `TimeResponseData.squeeze` for a description of how the | dimensions of the input vector can be modified using the `squeeze` | keyword. | | :type: 1D or 2D array | | outputs | Time response output vector. | | Output response of the system, indexed by either the output and time | (if only a single input is given) or the output, trace, and time | (for multiple traces). See `TimeResponseData.squeeze` for a | description of how this can be modified using the `squeeze` keyword. | | Input and output signal names can be used to index the data in | place of integer offsets, with the input signal names being used to | access multi-input data. | | :type: 1D, 2D, or 3D array | | states | Time response state vector. | | Time evolution of the state vector, indexed by either the state and | time (if only a single trace is given) or the state, trace, and | time (for multiple traces). See `TimeResponseData.squeeze` for a | description of how this can be modified using the `squeeze` | keyword. | | Input and output signal names can be used to index the data in | place of integer offsets, with the input signal names being used to | access multi-input data. | | :type: 2D or 3D array | | time | Time vector. | | Time values of the input/output response(s). | | :type: 1D array | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | squeeze = None
control.TimeResponseList
Python Library Documentation: class TimeResponseList in module control.timeresp class TimeResponseList(builtins.list) | TimeResponseList(iterable=(), /) | | List of TimeResponseData objects with plotting capability. | | This class consists of a list of `TimeResponseData` objects. | It is a subclass of the Python `list` class, with a `plot` method that | plots the individual `TimeResponseData` objects. | | Method resolution order: | TimeResponseList | builtins.list | builtins.object | | Methods defined here: | | plot(self, *args, **kwargs) | Plot a list of time responses. | | See `time_response_plot` for details. | | ---------------------------------------------------------------------- | Data descriptors defined here: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from builtins.list: | | __add__(self, value, /) | Return self+value. | | __contains__(self, key, /) | Return bool(key in self). | | __delitem__(self, key, /) | Delete self[key]. | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __getattribute__(self, name, /) | Return getattr(self, name). | | __getitem__(self, index, /) | Return self[index]. | | __gt__(self, value, /) | Return self>value. | | __iadd__(self, value, /) | Implement self+=value. | | __imul__(self, value, /) | Implement self*=value. | | __init__(self, /, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __iter__(self, /) | Implement iter(self). | | __le__(self, value, /) | Return self<=value. | | __len__(self, /) | Return len(self). | | __lt__(self, value, /) | Return self<value. | | __mul__(self, value, /) | Return self*value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | __reversed__(self, /) | Return a reverse iterator over the list. | | __rmul__(self, value, /) | Return value*self. | | __setitem__(self, key, value, /) | Set self[key] to value. | | __sizeof__(self, /) | Return the size of the list in memory, in bytes. | | append(self, object, /) | Append object to the end of the list. | | clear(self, /) | Remove all items from list. | | copy(self, /) | Return a shallow copy of the list. | | count(self, value, /) | Return number of occurrences of value. | | extend(self, iterable, /) | Extend list by appending elements from the iterable. | | index(self, value, start=0, stop=9223372036854775807, /) | Return first index of value. | | Raises ValueError if the value is not present. | | insert(self, index, object, /) | Insert object before index. | | pop(self, index=-1, /) | Remove and return item at index (default last). | | Raises IndexError if list is empty or index is out of range. | | remove(self, value, /) | Remove first occurrence of value. | | Raises ValueError if the value is not present. | | reverse(self, /) | Reverse *IN PLACE*. | | sort(self, /, *, key=None, reverse=False) | Sort the list in ascending order and return None. | | The sort is in-place (i.e. the list itself is modified) and stable (i.e. the | order of two equal elements is maintained). | | If a key function is given, apply it once to each list item and sort them, | ascending or descending, according to their function values. | | The reverse flag can be set to sort in descending order. | | ---------------------------------------------------------------------- | Class methods inherited from builtins.list: | | __class_getitem__(...) | See PEP 585 | | ---------------------------------------------------------------------- | Static methods inherited from builtins.list: | | __new__(*args, **kwargs) class method of builtins.list | Create and return a new object. See help(type) for accurate signature. | | ---------------------------------------------------------------------- | Data and other attributes inherited from builtins.list: | | __hash__ = None
control.TransferFunction
Python Library Documentation: class TransferFunction in module control.xferfcn
class TransferFunction(control.lti.LTI)
| TransferFunction(*args, **kwargs)
|
| TransferFunction(num, den[, dt])
|
| Transfer function representation for LTI input/output systems.
|
| The TransferFunction class is used to represent systems in transfer
| function form. Transfer functions are usually created with the
| `tf` factory function.
|
| Parameters
| ----------
| num : 2D list of coefficient arrays
| Polynomial coefficients of the numerator.
| den : 2D list of coefficient arrays
| Polynomial coefficients of the denominator.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None indicates
| unspecified timebase (either continuous or discrete time).
|
| Attributes
| ----------
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : list of str
| Names for the input and output signals.
| name : string, optional
| System name.
| num_array, den_array : 2D array of lists of float
| Numerator and denominator polynomial coefficients as 2D array
| of 1D array objects (of varying length).
| num_list, den_list : 2D list of 1D array
| Numerator and denominator polynomial coefficients as 2D lists
| of 1D array objects (of varying length).
| display_format : None, 'poly' or 'zpk'
| Display format used in printing the TransferFunction object.
| Default behavior is polynomial display and can be changed by
| changing `config.defaults['xferfcn.display_format']`.
| s : `TransferFunction`
| Represents the continuous-time differential operator.
| z : `TransferFunction`
| Represents the discrete-time delay operator.
|
| See Also
| --------
| tf, InputOutputSystem, FrequencyResponseData
|
| Notes
| -----
| The numerator and denominator polynomials are stored as 2D arrays
| with each element containing a 1D array of coefficients. These data
| structures can be retrieved using `num_array` and `den_array`. For
| example,
|
| >>> sys.num_array[2, 5] # doctest: +SKIP
|
| gives the numerator of the transfer function from the 6th input to the
| 3rd output. (Note: a single 3D array structure cannot be used because
| the numerators and denominators can have different numbers of
| coefficients in each entry.)
|
| The attributes `num_list` and `den_list` are properties that return
| 2D nested lists containing MIMO numerator and denominator coefficients.
| For example,
|
| >>> sys.num_list[2][5] # doctest: +SKIP
|
| For legacy purposes, this list-based representation can also be
| obtained using `num` and `den`.
|
| A discrete-time transfer function is created by specifying a nonzero
| 'timebase' dt when the system is constructed:
|
| * `dt` = 0: continuous-time system (default)
| * `dt` > 0: discrete-time system with sampling period `dt`
| * `dt` = True: discrete time with unspecified sampling period
| * `dt` = None: no timebase specified
|
| Systems must have compatible timebases in order to be combined. A
| discrete-time system with unspecified sampling time (`dt` = True) can
| be combined with a system having a specified sampling time; the result
| will be a discrete-time system with the sample time of the other
| system. Similarly, a system with timebase None can be combined with a
| system having any timebase; the result will have the timebase of the
| other system. The default value of dt can be changed by changing the
| value of `config.defaults['control.default_dt']`.
|
| A transfer function is callable and returns the value of the transfer
| function evaluated at a point in the complex plane. See
| `TransferFunction.__call__` for a more detailed description.
|
| Subsystems corresponding to selected input/output pairs can be
| created by indexing the transfer function::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| The TransferFunction class defines two constants `s` and `z` that
| represent the differentiation and delay operators in continuous and
| discrete time. These can be used to create variables that allow
| algebraic creation of transfer functions. For example,
|
| >>> s = ct.TransferFunction.s # or ct.tf('s')
| >>> G = (s + 1)/(s**2 + 2*s + 1)
|
| Method resolution order:
| TransferFunction
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x, squeeze=None, warn_infinite=True)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems.
|
| See `LTI.__call__` for details.
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| TransferFunction(num, den[, dt])
|
| Construct a transfer function.
|
| The default constructor is TransferFunction(num, den), where num
| and den are 2D arrays of arrays containing polynomial coefficients.
| To create a discrete-time transfer function, use
| ``TransferFunction(num, den, dt)`` where `dt` is the sampling time
| (or True for unspecified sampling time). To call the copy
| constructor, call ``TransferFunction(sys)``, where `sys` is a
| TransferFunction object (continuous or discrete).
|
| See `TransferFunction` and `tf` for more information.
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self, var=None)
| String representation of the transfer function.
|
| Based on the display_format property, the output will be formatted as
| either polynomials or in zpk form.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to a transfer function if necessary,
| inputs and outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `TransferFunction`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| For a continuous-time transfer function G(s), the DC gain is G(0)
| For a discrete-time transfer function G(z), the DC gain is G(1)
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| Examples
| --------
| >>> G = ct.tf([1], [1, 4])
| >>> G.dcgain()
| np.float64(0.25)
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `TransferFunction.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| minreal(self, tol=None)
| Remove canceling pole/zero pairs from a transfer function.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether poles and zeros overlap.
|
| poles(self)
| Compute the poles of a transfer function.
|
| returnScipySignalLTI(self, strict=True)
| Return a 2D array of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = tfobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3, 5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the
| transfer function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `tfobject.dt` cannot be None; it must be
| continuous (0) or discrete (True or > 0).
| False:
| if `tfobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned
|
| Returns
| -------
| out : list of list of `scipy.signal.TransferFunction`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh', 'matched'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'matched': pole-zero match method
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with `method` = 'gbt', and is
| ignored otherwise. See `scipy.signal.cont2discrete`.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous- time system's magnitude and phase (the gain=1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is generated with
| a unique integer id. If `copy_names` is True, the new system
| name is determined by adding the prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with the
| default being to add the suffix '$sampled'.
|
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `TransferFunction` system
| Discrete-time system, with sample period Ts.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
|
| Notes
| -----
| Available only for SISO systems. Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> sys = ct.tf(1, [1, 1])
| >>> sysd = sys.sample(0.5, method='bilinear')
|
| zeros(self)
| Compute the zeros of a transfer function.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| den
| Denominator polynomial (as 2D nested lists of 1D arrays).
|
| den_list
| Denominator polynomial (as 2D nested lists of 1D arrays).
|
| num
| Numerator polynomial (as 2D nested list of 1D arrays).
|
| num_list
| Numerator polynomial (as 2D nested list of 1D arrays).
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| den_array = None
|
| ninputs = 1
|
| noutputs = 1
|
| num_array = None
|
| s = TransferFunction(
| array([1, 0]),
| array([1]),
| name='s', outputs=1, ...
| Differentiation operator (continuous time).
|
|
| z = TransferFunction(
| array([1, 0]),
| array([1]),
| dt=True,
| name='z', ou...
| Delay operator (discrete time).
|
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
control.acker
Python Library Documentation: function place_acker in module control.statefbk
place_acker(A, B, poles)
Pole placement using Ackermann method.
Call:
K = place_acker(A, B, poles)
Parameters
----------
A, B : 2D array_like
State and input matrix of the system.
poles : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gains such that A - B K has given eigenvalues.
See Also
--------
place, place_varga
control.append
Python Library Documentation: function append in module control.bdalg
append(*sys, **kwargs)
append(sys1, sys2[, ..., sysn])
Group LTI models by appending their inputs and outputs.
Forms an augmented system model, and appends the inputs and
outputs together.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `LTI`
I/O systems to combine.
Returns
-------
out : `LTI`
Combined system, with input/output vectors consisting of all
input/output vectors appended. Specific type returned is the type of
the first argument.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
See Also
--------
interconnect, feedback, negate, parallel, series
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.append(G1, G2)
>>> G.ninputs, G.noutputs, G.nstates
(2, 2, 7)
>>> G1 = ct.rss(3, inputs=2, outputs=4)
>>> G2 = ct.rss(4, inputs=1, outputs=4)
>>> G = ct.append(G1, G2)
>>> G.ninputs, G.noutputs, G.nstates
(3, 8, 7)
control.augw
Python Library Documentation: function augw in module control.robust
augw(g, w1=None, w2=None, w3=None)
Augment plant for mixed sensitivity problem.
If a weighting is None, no augmentation is done for it. At least
one weighting must not be None.
If a weighting w is scalar, it will be replaced by I*w, where I is
ny-by-ny for `w1` and `w3`, and nu-by-nu for `w2`.
Parameters
----------
g : LTI object, ny-by-nu
Plant.
w1 : None, scalar, or k1-by-ny LTI object
Weighting on S.
w2 : None, scalar, or k2-by-nu LTI object
Weighting on KS.
w3 : None, scalar, or k3-by-ny LTI object
Weighting on T.
Returns
-------
p : `StateSpace`
Plant augmented with weightings, suitable for submission to
`hinfsyn` or `h2syn`.
Raises
------
ValueError
If all weightings are None.
See Also
--------
h2syn, hinfsyn, mixsyn
control.balanced_reduction
Python Library Documentation: function balanced_reduction in module control.modelsimp
balanced_reduction(sys, orders, method='truncate', alpha=None)
Balanced reduced order model of system of a given order.
States are eliminated based on Hankel singular value. If `sys` has
unstable modes, they are removed, the balanced realization is done on
the stable part, then reinserted in accordance with [1]_.
References
----------
.. [1] C. S. Hsu and D. Hou, "Reducing unstable linear control
systems via real Schur transformation". Electronics Letters,
27, 984-986, 1991.
Parameters
----------
sys : `StateSpace`
Original system to reduce.
orders : integer or array of integer
Desired order of reduced order model (if a vector, returns a vector
of systems).
method : string
Method of removing states, either 'truncate' or 'matchdc'.
alpha : float
Redefines the stability boundary for eigenvalues of the system
matrix A. By default for continuous-time systems, alpha <= 0
defines the stability boundary for the real part of A's eigenvalues
and for discrete-time systems, 0 <= alpha <= 1 defines the stability
boundary for the modulus of A's eigenvalues. See SLICOT routines
AB09MD and AB09ND for more information.
Returns
-------
rsys : `StateSpace`
A reduced order model or a list of reduced order models if orders is
a list.
Raises
------
ValueError
If `method` is not 'truncate' or 'matchdc'.
ImportError
If slycot routine ab09ad, ab09md, or ab09nd is not found.
ValueError
If there are more unstable modes than any value in orders.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.balred(G, orders=2, method='matchdc')
>>> Gr.nstates
2
control.balred
Python Library Documentation: function balanced_reduction in module control.modelsimp
balanced_reduction(sys, orders, method='truncate', alpha=None)
Balanced reduced order model of system of a given order.
States are eliminated based on Hankel singular value. If `sys` has
unstable modes, they are removed, the balanced realization is done on
the stable part, then reinserted in accordance with [1]_.
References
----------
.. [1] C. S. Hsu and D. Hou, "Reducing unstable linear control
systems via real Schur transformation". Electronics Letters,
27, 984-986, 1991.
Parameters
----------
sys : `StateSpace`
Original system to reduce.
orders : integer or array of integer
Desired order of reduced order model (if a vector, returns a vector
of systems).
method : string
Method of removing states, either 'truncate' or 'matchdc'.
alpha : float
Redefines the stability boundary for eigenvalues of the system
matrix A. By default for continuous-time systems, alpha <= 0
defines the stability boundary for the real part of A's eigenvalues
and for discrete-time systems, 0 <= alpha <= 1 defines the stability
boundary for the modulus of A's eigenvalues. See SLICOT routines
AB09MD and AB09ND for more information.
Returns
-------
rsys : `StateSpace`
A reduced order model or a list of reduced order models if orders is
a list.
Raises
------
ValueError
If `method` is not 'truncate' or 'matchdc'.
ImportError
If slycot routine ab09ad, ab09md, or ab09nd is not found.
ValueError
If there are more unstable modes than any value in orders.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.balred(G, orders=2, method='matchdc')
>>> Gr.nstates
2
control.bandwidth
Python Library Documentation: function bandwidth in module control.lti
bandwidth(sys, dbdrop=-3)
Find first frequency where gain drops by 3 dB.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system for which the bandwidth should be computed.
dbdrop : float, optional
By how much the gain drop in dB (default = -3) that defines the
bandwidth. Should be a negative scalar.
Returns
-------
bandwidth : ndarray
The first frequency where the gain drops below `dbdrop` of the zero
frequency (DC) gain of the system, or nan if the system has infinite
zero frequency gain, inf if the gain does not drop for any frequency.
Raises
------
TypeError
If `sys` is not an SISO LTI instance.
ValueError
If `dbdrop` is not a negative scalar.
Examples
--------
>>> G = ct.tf([1], [1, 1])
>>> ct.bandwidth(G)
np.float64(0.9976283451102316)
>>> G1 = ct.tf(0.1, [1, 0.1])
>>> wn2 = 1
>>> zeta2 = 0.001
>>> G2 = ct.tf(wn2**2, [1, 2*zeta2*wn2, wn2**2])
>>> ct.bandwidth(G1*G2)
np.float64(0.10184838823897456)
control.bdalg
Python Library Documentation: module control.bdalg in control
NAME
control.bdalg - Block diagram algebra.
DESCRIPTION
This module contains some standard block diagram algebra, including
series, parallel, and feedback functions.
FUNCTIONS
append(*sys, **kwargs)
append(sys1, sys2[, ..., sysn])
Group LTI models by appending their inputs and outputs.
Forms an augmented system model, and appends the inputs and
outputs together.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `LTI`
I/O systems to combine.
Returns
-------
out : `LTI`
Combined system, with input/output vectors consisting of all
input/output vectors appended. Specific type returned is the type of
the first argument.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
See Also
--------
interconnect, feedback, negate, parallel, series
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.append(G1, G2)
>>> G.ninputs, G.noutputs, G.nstates
(2, 2, 7)
>>> G1 = ct.rss(3, inputs=2, outputs=4)
>>> G2 = ct.rss(4, inputs=1, outputs=4)
>>> G = ct.append(G1, G2)
>>> G.ninputs, G.noutputs, G.nstates
(3, 8, 7)
combine_tf(tf_array, **kwargs)
Combine array of transfer functions into MIMO transfer function.
Parameters
----------
tf_array : list of list of `TransferFunction` or array_like
Transfer matrix represented as a two-dimensional array or
list-of-lists containing `TransferFunction` objects. The
`TransferFunction` objects can have multiple outputs and inputs, as
long as the dimensions are compatible.
Returns
-------
`TransferFunction`
Transfer matrix represented as a single MIMO `TransferFunction` object.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If timebase of transfer functions do not match.
ValueError
If `tf_array` has incorrect dimensions.
ValueError
If the transfer functions in a row have mismatched output or input
dimensions.
Examples
--------
Combine two transfer functions:
>>> s = ct.tf('s')
>>> ct.combine_tf(
... [[1 / (s + 1)],
... [s / (s + 2)]],
... name='G'
... )
TransferFunction(
[[array([1])],
[array([1, 0])]],
[[array([1, 1])],
[array([1, 2])]],
name='G', outputs=2, inputs=1)
Combine NumPy arrays with transfer functions:
>>> ct.combine_tf(
... [[np.eye(2), np.zeros((2, 1))],
... [np.zeros((1, 2)), ct.tf([1], [1, 0])]],
... name='G'
... )
TransferFunction(
[[array([1.]), array([0.]), array([0.])],
[array([0.]), array([1.]), array([0.])],
[array([0.]), array([0.]), array([1])]],
[[array([1.]), array([1.]), array([1.])],
[array([1.]), array([1.]), array([1.])],
[array([1.]), array([1.]), array([1, 0])]],
name='G', outputs=3, inputs=3)
connect(sys, Q, inputv, outputv)
Index-based interconnection of an LTI system.
.. deprecated:: 0.10.0
`connect` will be removed in a future version of python-control.
Use `interconnect` instead, which works with named signals.
The system `sys` is a system typically constructed with `append`, with
multiple inputs and outputs. The inputs and outputs are connected
according to the interconnection matrix `Q`, and then the final inputs and
outputs are trimmed according to the inputs and outputs listed in `inputv`
and `outputv`.
NOTE: Inputs and outputs are indexed starting at 1 and negative values
correspond to a negative feedback interconnection.
Parameters
----------
sys : `InputOutputSystem`
System to be connected.
Q : 2D array
Interconnection matrix. First column gives the input to be connected.
The second column gives the index of an output that is to be fed into
that input. Each additional column gives the index of an additional
input that may be optionally added to that input. Negative
values mean the feedback is negative. A zero value is ignored. Inputs
and outputs are indexed starting at 1 to communicate sign information.
inputv : 1D array
List of final external inputs, indexed starting at 1.
outputv : 1D array
List of final external outputs, indexed starting at 1.
Returns
-------
out : `InputOutputSystem`
Connected and trimmed I/O system.
See Also
--------
append, feedback, interconnect, negate, parallel, series
Notes
-----
The `interconnect` function allows the use of named signals and
provides an alternative method for interconnecting multiple systems.
Examples
--------
>>> G = ct.rss(7, inputs=2, outputs=2)
>>> K = [[1, 2], [2, -1]] # negative feedback interconnection
>>> T = ct.connect(G, K, [2], [1, 2])
>>> T.ninputs, T.noutputs, T.nstates
(1, 2, 7)
feedback(sys1, sys2=1, sign=-1, **kwargs)
Feedback interconnection between two I/O systems.
Parameters
----------
sys1, sys2 : scalar, array, or `InputOutputSystem`
I/O systems to combine.
sign : scalar, optional
The sign of feedback. `sign=-1` indicates negative feedback
(default), and `sign=1` indicates positive feedback.
Returns
-------
out : `InputOutputSystem`
Feedback interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys1` does not have as many inputs as `sys2` has outputs, or if
`sys2` does not have as many inputs as `sys1` has outputs.
NotImplementedError
If an attempt is made to perform a feedback on a MIMO `TransferFunction`
object.
See Also
--------
append, interconnect, negate, parallel, series
Notes
-----
This function is a wrapper for the `feedback` function in the I/O
system classes. It calls sys1.feedback if `sys1` is an I/O system
object. If `sys1` is a scalar, then it is converted to `sys2`'s type,
and the corresponding feedback function is used.
Examples
--------
>>> G = ct.rss(3, inputs=2, outputs=5)
>>> C = ct.rss(4, inputs=5, outputs=2)
>>> T = ct.feedback(G, C, sign=1)
>>> T.ninputs, T.noutputs, T.nstates
(2, 5, 7)
negate(sys, **kwargs)
Return the negative of a system.
Parameters
----------
sys : scalar, array, or `InputOutputSystem`
I/O systems to negate.
Returns
-------
out : `InputOutputSystem`
Negated system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
See Also
--------
append, feedback, interconnect, parallel, series
Notes
-----
This function is a wrapper for the __neg__ function in the `StateSpace`
and `TransferFunction` classes. The output type is the same as the
input type.
Examples
--------
>>> G = ct.tf([2], [1, 1])
>>> G.dcgain()
np.float64(2.0)
>>> Gn = ct.negate(G) # Same as sys2 = -sys1.
>>> Gn.dcgain()
np.float64(-2.0)
parallel(*sys, **kwargs)
parallel(sys1, sys2[, ..., sysn])
Parallel connection of I/O systems.
Generates a parallel connection ``sys1 + sys2 [+ ... + sysn]``.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `InputOutputSystem`
I/O systems to combine.
Returns
-------
out : `InputOutputSystem`
Parallel interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i'` (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys1` and `sys2` do not have the same numbers of inputs and
outputs.
See Also
--------
append, feedback, interconnect, negate, series
Notes
-----
This function is a wrapper for the __add__ function in the
`StateSpace` and `TransferFunction` classes. The output type is usually
the type of `sys1`. If `sys1` is a scalar, then the output type is
the type of `sys2`.
If both systems have a defined timebase (`dt` = 0 for continuous time,
`dt` > 0 for discrete time), then the timebase for both systems must
match. If only one of the system has a timebase, the return
timebase will be set to match it.
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.parallel(G1, G2) # Same as sys3 = sys1 + sys2
>>> G.ninputs, G.noutputs, G.nstates
(1, 1, 7)
>>> G1 = ct.rss(3, inputs=3, outputs=4)
>>> G2 = ct.rss(4, inputs=3, outputs=4)
>>> G = ct.parallel(G1, G2) # Add another system
>>> G.ninputs, G.noutputs, G.nstates
(3, 4, 7)
series(*sys, **kwargs)
series(sys1, sys2[, ..., sysn])
Series connection of I/O systems.
Generates a new system ``[sysn * ... *] sys2 * sys1``.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `InputOutputSystem`
I/O systems to combine.
Returns
-------
out : `InputOutputSystem`
Series interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u,
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys2.ninputs` does not equal `sys1.noutputs` or if `sys1.dt` is
not compatible with `sys2.dt`.
See Also
--------
append, feedback, interconnect, negate, parallel
Notes
-----
This function is a wrapper for the __mul__ function in the appropriate
`NonlinearIOSystem`, `StateSpace`, `TransferFunction`, or other I/O
system class. The output type is the type of `sys1` unless a more
general type is required based on type type of `sys2`.
If both systems have a defined timebase (`dt` = 0 for continuous time,
`dt` > 0 for discrete time), then the timebase for both systems must
match. If only one of the system has a timebase, the return
timebase will be set to match it.
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.series(G1, G2) # Same as sys3 = sys2 * sys1
>>> G.ninputs, G.noutputs, G.nstates
(1, 1, 7)
>>> G1 = ct.rss(2, inputs=2, outputs=3)
>>> G2 = ct.rss(3, inputs=3, outputs=1)
>>> G = ct.series(G1, G2) # Same as sys3 = sys2 * sys1
>>> G.ninputs, G.noutputs, G.nstates
(2, 1, 5)
split_tf(transfer_function)
Split MIMO transfer function into SISO transfer functions.
System and signal names for the array of SISO transfer functions are
copied from the MIMO system.
Parameters
----------
transfer_function : `TransferFunction`
MIMO transfer function to split.
Returns
-------
ndarray
NumPy array of SISO transfer functions.
Examples
--------
Split a MIMO transfer function:
>>> G = ct.tf(
... [ [[87.8], [-86.4]],
... [[108.2], [-109.6]] ],
... [ [[1, 1], [1, 1]],
... [[1, 1], [1, 1]], ],
... name='G'
... )
>>> ct.split_tf(G)
array([[TransferFunction(
array([87.8]),
array([1, 1]),
name='G', outputs=1, inputs=1), TransferFunction(
array([-86.4]),
array([1, 1]),
name='G', outputs=1, inputs=1)],
[TransferFunction(
array([108.2]),
array([1, 1]),
name='G', outputs=1, inputs=1), TransferFunction(
array([-109.6]),
array([1, 1]),
name='G', outputs=1, inputs=1)]],
dtype=object)
DATA
__all__ = ['series', 'parallel', 'negate', 'feedback', 'append', 'conn...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\bdalg.py
control.bdschur
Python Library Documentation: function bdschur in module control.canonical
bdschur(a, condmax=None, sort=None)
Block-diagonal Schur decomposition.
Parameters
----------
a : (M, M) array_like
Real matrix to decompose.
condmax : None or float, optional
If None (default), use 1/sqrt(eps), which is approximately 1e8.
sort : {None, 'continuous', 'discrete'}
Block sorting; see below.
Returns
-------
amodal : (M, M) real ndarray
Block-diagonal Schur decomposition of `a`.
tmodal : (M, M) real ndarray
Similarity transform relating `a` and `amodal`.
blksizes : (N,) int ndarray
Array of Schur block sizes.
Notes
-----
If `sort` is None, the blocks are not sorted.
If `sort` is 'continuous', the blocks are sorted according to
associated eigenvalues. The ordering is first by real part of
eigenvalue, in descending order, then by absolute value of imaginary
part of eigenvalue, also in decreasing order.
If `sort` is 'discrete', the blocks are sorted as for 'continuous', but
applied to log of eigenvalues (i.e., continuous-equivalent eigenvalues).
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> amodal, tmodal, blksizes = ct.bdschur(Gs.A)
>>> amodal #doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
control.bode
Python Library Documentation: function bode_plot in module control.freqplot
bode_plot(data, omega=None, *fmt, ax=None, omega_limits=None, omega_num=None, plot=None, plot_magnitude=True, plot_phase=None, overlay_outputs=None, overlay_inputs=None, phase_label=None, magnitude_label=None, label=None, display_margins=None, margins_method='best', title=None, sharex=None, sharey=None, **kwargs)
Bode plot for a system.
Plot the magnitude and phase of the frequency response over a
(optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like, optional
Set of frequencies in rad/sec to plot over. If not specified, this
will be determined from the properties of the systems. Ignored if
`data` is not a list of systems.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
deg : bool
If True, plot phase in degrees (else radians). Default
value (True) set by `config.defaults['freqplot.deg']`.
display_margins : bool or str
If True, draw gain and phase margin lines on the magnitude and phase
graphs and display the margins at the top of the graph. If set to
'overlay', the values for the gain and phase margin are placed on
the graph. Setting `display_margins` turns off the axes grid, unless
`grid` is explicitly set to True.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
freq_label, magnitude_label, phase_label : str, optional
Labels to use for the frequency, magnitude, and phase axes.
Defaults are set by `config.defaults['freqplot.<keyword>']`.
grid : bool, optional
If True, plot grid lines on gain and phase plots. Default is set by
`config.defaults['freqplot.grid']`.
initial_phase : float, optional
Set the reference phase to use for the lowest frequency. If set, the
initial phase of the Bode plot will be set to the value closest to the
value specified. Units are in either degrees or radians, depending on
the `deg` parameter. Default is -180 if wrap_phase is False, 0 if
wrap_phase is True.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system. If MIMO, strings required for each system, output, and input.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
margins_method : str, optional
Method to use in computing margins (see `stability_margins`).
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
overlay_inputs, overlay_outputs : bool, optional
If set to True, combine input and/or output signals onto a single
plot and use line colors, labels, and a legend to distinguish them.
plot : bool, optional
(legacy) If given, `bode_plot` returns the legacy return values
of magnitude, phase, and frequency. If False, just return the
values with no plot.
plot_magnitude, plot_phase : bool, optional
If set to False, do not plot the magnitude or phase, respectively.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
share_frequency, share_magnitude, share_phase : str or bool, optional
Determine whether and how axis limits are shared between the
indicated variables. Can be set set to 'row' to share across all
subplots in a row, 'col' to set across all subplots in a column, or
False to allow independent limits. Note: if `sharex` is given,
it sets the value of `share_frequency`; if `sharey` is given, it
sets the value of both `share_magnitude` and `share_phase`.
Default values are 'row' for `share_magnitude` and `share_phase`,
'col', for `share_frequency`, and can be set using
`config.defaults['freqplot.share_<axis>']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will be
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution). The default
value can be set using `config.defaults['freqplot.title_frame']`.
wrap_phase : bool or float
If wrap_phase is False (default), then the phase will be unwrapped
so that it is continuously increasing or decreasing. If wrap_phase is
True the phase will be restricted to the range [-180, 180) (or
[:math:`-\pi`, :math:`\pi`) radians). If `wrap_phase` is specified
as a float, the phase will be offset by 360 degrees if it falls below
the specified value. Default value is False and can be set using
`config.defaults['freqplot.wrap_phase']`.
See Also
--------
frequency_response
Notes
-----
Starting with python-control version 0.10, `bode_plot` returns a
`ControlPlot` object instead of magnitude, phase, and
frequency. To recover the old behavior, call `bode_plot` with
`plot` = True, which will force the legacy values (mag, phase, omega) to
be returned (with a warning). To obtain just the frequency response of
a system (or list of systems) without plotting, use the
`frequency_response` command.
If a discrete-time model is given, the frequency response is plotted
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and `dt`
is the discrete timebase. If timebase not specified (`dt` = True),
`dt` is set to 1.
The default values for Bode plot configuration parameters can be reset
using the `config.defaults` dictionary, with module name 'bode'.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> out = ct.bode_plot(G)
control.bode_plot
Python Library Documentation: function bode_plot in module control.freqplot
bode_plot(data, omega=None, *fmt, ax=None, omega_limits=None, omega_num=None, plot=None, plot_magnitude=True, plot_phase=None, overlay_outputs=None, overlay_inputs=None, phase_label=None, magnitude_label=None, label=None, display_margins=None, margins_method='best', title=None, sharex=None, sharey=None, **kwargs)
Bode plot for a system.
Plot the magnitude and phase of the frequency response over a
(optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like, optional
Set of frequencies in rad/sec to plot over. If not specified, this
will be determined from the properties of the systems. Ignored if
`data` is not a list of systems.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
deg : bool
If True, plot phase in degrees (else radians). Default
value (True) set by `config.defaults['freqplot.deg']`.
display_margins : bool or str
If True, draw gain and phase margin lines on the magnitude and phase
graphs and display the margins at the top of the graph. If set to
'overlay', the values for the gain and phase margin are placed on
the graph. Setting `display_margins` turns off the axes grid, unless
`grid` is explicitly set to True.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
freq_label, magnitude_label, phase_label : str, optional
Labels to use for the frequency, magnitude, and phase axes.
Defaults are set by `config.defaults['freqplot.<keyword>']`.
grid : bool, optional
If True, plot grid lines on gain and phase plots. Default is set by
`config.defaults['freqplot.grid']`.
initial_phase : float, optional
Set the reference phase to use for the lowest frequency. If set, the
initial phase of the Bode plot will be set to the value closest to the
value specified. Units are in either degrees or radians, depending on
the `deg` parameter. Default is -180 if wrap_phase is False, 0 if
wrap_phase is True.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system. If MIMO, strings required for each system, output, and input.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
margins_method : str, optional
Method to use in computing margins (see `stability_margins`).
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
overlay_inputs, overlay_outputs : bool, optional
If set to True, combine input and/or output signals onto a single
plot and use line colors, labels, and a legend to distinguish them.
plot : bool, optional
(legacy) If given, `bode_plot` returns the legacy return values
of magnitude, phase, and frequency. If False, just return the
values with no plot.
plot_magnitude, plot_phase : bool, optional
If set to False, do not plot the magnitude or phase, respectively.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
share_frequency, share_magnitude, share_phase : str or bool, optional
Determine whether and how axis limits are shared between the
indicated variables. Can be set set to 'row' to share across all
subplots in a row, 'col' to set across all subplots in a column, or
False to allow independent limits. Note: if `sharex` is given,
it sets the value of `share_frequency`; if `sharey` is given, it
sets the value of both `share_magnitude` and `share_phase`.
Default values are 'row' for `share_magnitude` and `share_phase`,
'col', for `share_frequency`, and can be set using
`config.defaults['freqplot.share_<axis>']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will be
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution). The default
value can be set using `config.defaults['freqplot.title_frame']`.
wrap_phase : bool or float
If wrap_phase is False (default), then the phase will be unwrapped
so that it is continuously increasing or decreasing. If wrap_phase is
True the phase will be restricted to the range [-180, 180) (or
[:math:`-\pi`, :math:`\pi`) radians). If `wrap_phase` is specified
as a float, the phase will be offset by 360 degrees if it falls below
the specified value. Default value is False and can be set using
`config.defaults['freqplot.wrap_phase']`.
See Also
--------
frequency_response
Notes
-----
Starting with python-control version 0.10, `bode_plot` returns a
`ControlPlot` object instead of magnitude, phase, and
frequency. To recover the old behavior, call `bode_plot` with
`plot` = True, which will force the legacy values (mag, phase, omega) to
be returned (with a warning). To obtain just the frequency response of
a system (or list of systems) without plotting, use the
`frequency_response` command.
If a discrete-time model is given, the frequency response is plotted
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and `dt`
is the discrete timebase. If timebase not specified (`dt` = True),
`dt` is set to 1.
The default values for Bode plot configuration parameters can be reset
using the `config.defaults` dictionary, with module name 'bode'.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> out = ct.bode_plot(G)
control.box_grid
Python Library Documentation: function box_grid in module control.phaseplot
box_grid(xlimp, ylimp)
Generate list of points on edge of box.
.. deprecated:: 0.10.0
Use `phaseplot.boxgrid` instead.
list = box_grid([xmin xmax xnum], [ymin ymax ynum]) generates a
list of points that correspond to a uniform grid at the end of the
box defined by the corners [xmin ymin] and [xmax ymax].
control.c2d
Python Library Documentation: function sample_system in module control.dtime
sample_system(sysc, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
Convert a continuous-time system to discrete time by sampling.
Parameters
----------
sysc : `StateSpace` or `TransferFunction`
Continuous time system to be converted.
Ts : float > 0
Sampling period.
method : string
Method to use for conversion, e.g. 'bilinear', 'zoh' (default).
alpha : float within [0, 1]
The generalized bilinear transformation weighting parameter, which
should only be specified with method="gbt", and is ignored
otherwise. See `scipy.signal.cont2discrete`.
prewarp_frequency : float within [0, infinity)
The frequency [rad/s] at which to match with the input continuous-
time system's magnitude and phase (only valid for method='bilinear',
'tustin', or 'gbt' with alpha=0.5).
Returns
-------
sysd : LTI of the same class (`StateSpace` or `TransferFunction`)
Discrete time system, with sampling rate `Ts`.
Other Parameters
----------------
inputs : int, list of str or None, optional
Description of the system inputs. If not specified, the original
system inputs are used. See `InputOutputSystem` for more
information.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`. Only
available if the system is `StateSpace`.
name : string, optional
Set the name of the sampled system. If not specified and
if `copy_names` is False, a generic name 'sys[id]' is generated
with a unique integer id. If `copy_names` is True, the new system
name is determined by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'.
copy_names : bool, optional
If True, copy the names of the input signals, output
signals, and states to the sampled system.
Notes
-----
See `StateSpace.sample` or `TransferFunction.sample` for further
details on implementation for state space and transfer function
systems, including available methods.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> Gc.isdtime()
False
>>> Gd = ct.sample_system(Gc, 1, method='bilinear')
>>> Gd.isdtime()
True
control.canonical
Python Library Documentation: module control.canonical in control
NAME
control.canonical - Functions for converting systems to canonical forms.
FUNCTIONS
bdschur(a, condmax=None, sort=None)
Block-diagonal Schur decomposition.
Parameters
----------
a : (M, M) array_like
Real matrix to decompose.
condmax : None or float, optional
If None (default), use 1/sqrt(eps), which is approximately 1e8.
sort : {None, 'continuous', 'discrete'}
Block sorting; see below.
Returns
-------
amodal : (M, M) real ndarray
Block-diagonal Schur decomposition of `a`.
tmodal : (M, M) real ndarray
Similarity transform relating `a` and `amodal`.
blksizes : (N,) int ndarray
Array of Schur block sizes.
Notes
-----
If `sort` is None, the blocks are not sorted.
If `sort` is 'continuous', the blocks are sorted according to
associated eigenvalues. The ordering is first by real part of
eigenvalue, in descending order, then by absolute value of imaginary
part of eigenvalue, also in decreasing order.
If `sort` is 'discrete', the blocks are sorted as for 'continuous', but
applied to log of eigenvalues (i.e., continuous-equivalent eigenvalues).
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> amodal, tmodal, blksizes = ct.bdschur(Gs.A)
>>> amodal #doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
canonical_form(xsys, form='reachable')
Convert a system into canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state 'x'.
form : str
Canonical form for transformation. Chosen from:
* 'reachable' - reachable canonical form
* 'observable' - observable canonical form
* 'modal' - modal canonical form
Returns
-------
zsys : `StateSpace` object
System in desired canonical form, with state 'z'.
T : (M, M) real ndarray
Coordinate transformation matrix, z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.canonical_form(Gs) # default reachable
>>> Gc.B
array([[1.],
[0.]])
>>> Gc, T = ct.canonical_form(Gs, 'observable')
>>> Gc.C
array([[1., 0.]])
>>> Gc, T = ct.canonical_form(Gs, 'modal')
>>> Gc.A # doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
modal_form(xsys, condmax=None, sort=False)
Convert a system into modal canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state x.
condmax : None or float, optional
An upper bound on individual transformations. If None, use
`bdschur` default.
sort : bool, optional
If False (default), Schur blocks will not be sorted. See `bdschur`
for sort order.
Returns
-------
zsys : `StateSpace` object
System in modal canonical form, with state z.
T : (M, M) ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.modal_form(Gs) # default reachable
>>> Gc.A # doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
observable_form(xsys)
Convert a system into observable canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state `x`.
Returns
-------
zsys : `StateSpace` object
System in observable canonical form, with state `z`.
T : (M, M) real ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.observable_form(Gs)
>>> Gc.C
array([[1., 0.]])
reachable_form(xsys)
Convert a system into reachable canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state `x`.
Returns
-------
zsys : `StateSpace` object
System in reachable canonical form, with state `z`.
T : (M, M) real ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.reachable_form(Gs) # default reachable
>>> Gc.B
array([[1.],
[0.]])
similarity_transform(xsys, T, timescale=1, inverse=False)
Similarity transformation, with optional time rescaling.
Transform a linear state space system to a new state space representation
z = T x, or x = T z, where T is an invertible matrix.
Parameters
----------
xsys : `StateSpace` object
System to transform.
T : (M, M) array_like
The matrix `T` defines the new set of coordinates z = T x.
timescale : float, optional
If present, also rescale the time unit to tau = timescale * t.
inverse : bool, optional
If False (default), transform so z = T x. If True, transform
so x = T z.
Returns
-------
zsys : `StateSpace` object
System in transformed coordinates, with state 'z'.
See Also
--------
canonical_form
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gs.A
array([[-3., -2.],
[ 1., 0.]])
>>> T = np.array([[0, 1], [1, 0]])
>>> Gt = ct.similarity_transform(Gs, T)
>>> Gt.A
array([[ 0., 1.],
[-2., -3.]])
DATA
__all__ = ['canonical_form', 'reachable_form', 'observable_form', 'mod...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\canonical.py
control.canonical_form
Python Library Documentation: function canonical_form in module control.canonical
canonical_form(xsys, form='reachable')
Convert a system into canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state 'x'.
form : str
Canonical form for transformation. Chosen from:
* 'reachable' - reachable canonical form
* 'observable' - observable canonical form
* 'modal' - modal canonical form
Returns
-------
zsys : `StateSpace` object
System in desired canonical form, with state 'z'.
T : (M, M) real ndarray
Coordinate transformation matrix, z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.canonical_form(Gs) # default reachable
>>> Gc.B
array([[1.],
[0.]])
>>> Gc, T = ct.canonical_form(Gs, 'observable')
>>> Gc.C
array([[1., 0.]])
>>> Gc, T = ct.canonical_form(Gs, 'modal')
>>> Gc.A # doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
control.care
Python Library Documentation: function care in module control.mateqn
care(A, B, Q, R=None, S=None, E=None, stabilizing=True, method=None, _As='A', _Bs='B', _Qs='Q', _Rs='R', _Ss='S', _Es='E')
Solves the continuous-time algebraic Riccati equation.
X, L, G = care(A, B, Q, R=None) solves
:math:`A^T X + X A - X B R^{-1} B^T X + Q = 0`
where A and Q are square matrices of the same dimension. Further,
Q and R are a symmetric matrices. If R is None, it is set to the
identity matrix. The function returns the solution X, the gain
matrix G = B^T X and the closed loop eigenvalues L, i.e., the
eigenvalues of A - B G.
X, L, G = care(A, B, Q, R, S, E) solves the generalized
continuous-time algebraic Riccati equation
:math:`A^T X E + E^T X A - (E^T X B + S) R^{-1} (B^T X E + S^T) + Q = 0`
where A, Q and E are square matrices of the same dimension. Further, Q
and R are symmetric matrices. If R is None, it is set to the identity
matrix. The function returns the solution X, the gain matrix G = R^-1
(B^T X E + S^T) and the closed loop eigenvalues L, i.e., the eigenvalues
of A - B G , E.
Parameters
----------
A, B, Q : 2D array_like
Input matrices for the Riccati equation.
R, S, E : 2D array_like, optional
Input matrices for generalized Riccati equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
stabilizing : bool, optional
If `method` is 'slycot', unstabilized eigenvalues will be returned
in the initial elements of `L`. Not supported for 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Riccati equation.
L : 1D array
Closed loop eigenvalues.
G : 2D array (or matrix)
Gain matrix.
control.combine_tf
Python Library Documentation: function combine_tf in module control.bdalg
combine_tf(tf_array, **kwargs)
Combine array of transfer functions into MIMO transfer function.
Parameters
----------
tf_array : list of list of `TransferFunction` or array_like
Transfer matrix represented as a two-dimensional array or
list-of-lists containing `TransferFunction` objects. The
`TransferFunction` objects can have multiple outputs and inputs, as
long as the dimensions are compatible.
Returns
-------
`TransferFunction`
Transfer matrix represented as a single MIMO `TransferFunction` object.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If timebase of transfer functions do not match.
ValueError
If `tf_array` has incorrect dimensions.
ValueError
If the transfer functions in a row have mismatched output or input
dimensions.
Examples
--------
Combine two transfer functions:
>>> s = ct.tf('s')
>>> ct.combine_tf(
... [[1 / (s + 1)],
... [s / (s + 2)]],
... name='G'
... )
TransferFunction(
[[array([1])],
[array([1, 0])]],
[[array([1, 1])],
[array([1, 2])]],
name='G', outputs=2, inputs=1)
Combine NumPy arrays with transfer functions:
>>> ct.combine_tf(
... [[np.eye(2), np.zeros((2, 1))],
... [np.zeros((1, 2)), ct.tf([1], [1, 0])]],
... name='G'
... )
TransferFunction(
[[array([1.]), array([0.]), array([0.])],
[array([0.]), array([1.]), array([0.])],
[array([0.]), array([0.]), array([1])]],
[[array([1.]), array([1.]), array([1.])],
[array([1.]), array([1.]), array([1.])],
[array([1.]), array([1.]), array([1, 0])]],
name='G', outputs=3, inputs=3)
control.combine_time_responses
Python Library Documentation: function combine_time_responses in module control.timeplot
combine_time_responses(response_list, trace_labels=None, title=None)
Combine individual time responses into multi-trace response.
This function combines multiple instances of `TimeResponseData`
into a multi-trace `TimeResponseData` object.
Parameters
----------
response_list : list of `TimeResponseData` objects
Responses to be combined.
trace_labels : list of str, optional
List of labels for each trace. If not specified, trace names are
taken from the input data or set to None.
title : str, optional
Set the title to use when plotting. Defaults to plot type and
system name(s).
Returns
-------
data : `TimeResponseData`
Multi-trace input/output data.
control.common_timebase
Python Library Documentation: function common_timebase in module control.iosys
common_timebase(dt1, dt2)
Find the common timebase when interconnecting systems.
Parameters
----------
dt1, dt2 : `InputOutputSystem` or float
Number or system with a 'dt' attribute (e.g. `TransferFunction`
or `StateSpace` system).
Returns
-------
dt : number
The common timebase of dt1 and dt2, as specified in
:ref:`conventions-ref`.
Raises
------
ValueError
When no compatible time base can be found.
control.config
Python Library Documentation: module control.config in control
NAME
control.config - Functions to access default parameter values.
DESCRIPTION
This module contains default values and utility functions for setting
parameters that control the behavior of the control package.
FUNCTIONS
reset_defaults()
Reset configuration values to their default (initial) values.
Examples
--------
>>> ct.defaults['freqplot.number_of_samples']
1000
>>> ct.set_defaults('freqplot', number_of_samples=100)
>>> ct.defaults['freqplot.number_of_samples']
100
>>> # do some customized freqplotting
>>> ct.reset_defaults()
>>> ct.defaults['freqplot.number_of_samples']
1000
set_defaults(module, **keywords)
Set default values of parameters for a module.
The set_defaults() function can be used to modify multiple parameter
values for a module at the same time, using keyword arguments.
Parameters
----------
module : str
Name of the module for which the defaults are being given.
**keywords : keyword arguments
Parameter value assignments.
Examples
--------
>>> ct.defaults['freqplot.number_of_samples']
1000
>>> ct.set_defaults('freqplot', number_of_samples=100)
>>> ct.defaults['freqplot.number_of_samples']
100
>>> # do some customized freqplotting
use_fbs_defaults()
Use Feedback Systems (FBS) compatible settings.
The following conventions from `Feedback Systems <https://fbsbook.org>`_
are used:
* Bode plots plot gain in powers of ten, phase in degrees,
frequency in rad/sec, no grid
* Frequency plots use the label "Gain" for the system gain.
* Nyquist plots use dashed lines for mirror image of Nyquist curve
Examples
--------
>>> ct.use_fbs_defaults()
>>> # do some FBS style plotting
use_legacy_defaults(version)
Sets the defaults to whatever they were in a given release.
Parameters
----------
version : string
Version number of `python-control` to use for setting defaults.
Examples
--------
>>> ct.use_legacy_defaults("0.9.0")
(0, 9, 0)
>>> # do some legacy style plotting
use_matlab_defaults()
Use MATLAB compatible configuration settings.
The following conventions are used:
* Bode plots plot gain in dB, phase in degrees, frequency in
rad/sec, with grids
* Frequency plots use the label "Magnitude" for the system gain.
Examples
--------
>>> ct.use_matlab_defaults()
>>> # do some matlab style plotting
DATA
__all__ = ['defaults', 'set_defaults', 'reset_defaults', 'use_matlab_d...
defaults = {'control.default_dt': 0, 'control.squeeze_frequ...yle': No...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\config.py
control.connect
Python Library Documentation: function connect in module control.bdalg
connect(sys, Q, inputv, outputv)
Index-based interconnection of an LTI system.
.. deprecated:: 0.10.0
`connect` will be removed in a future version of python-control.
Use `interconnect` instead, which works with named signals.
The system `sys` is a system typically constructed with `append`, with
multiple inputs and outputs. The inputs and outputs are connected
according to the interconnection matrix `Q`, and then the final inputs and
outputs are trimmed according to the inputs and outputs listed in `inputv`
and `outputv`.
NOTE: Inputs and outputs are indexed starting at 1 and negative values
correspond to a negative feedback interconnection.
Parameters
----------
sys : `InputOutputSystem`
System to be connected.
Q : 2D array
Interconnection matrix. First column gives the input to be connected.
The second column gives the index of an output that is to be fed into
that input. Each additional column gives the index of an additional
input that may be optionally added to that input. Negative
values mean the feedback is negative. A zero value is ignored. Inputs
and outputs are indexed starting at 1 to communicate sign information.
inputv : 1D array
List of final external inputs, indexed starting at 1.
outputv : 1D array
List of final external outputs, indexed starting at 1.
Returns
-------
out : `InputOutputSystem`
Connected and trimmed I/O system.
See Also
--------
append, feedback, interconnect, negate, parallel, series
Notes
-----
The `interconnect` function allows the use of named signals and
provides an alternative method for interconnecting multiple systems.
Examples
--------
>>> G = ct.rss(7, inputs=2, outputs=2)
>>> K = [[1, 2], [2, -1]] # negative feedback interconnection
>>> T = ct.connect(G, K, [2], [1, 2])
>>> T.ninputs, T.noutputs, T.nstates
(1, 2, 7)
control.connection_table
Python Library Documentation: function connection_table in module control.nlsys
connection_table(sys, show_names=False, column_width=32)
Print table of connections inside interconnected system.
Intended primarily for `InterconnectedSystem`'s that have been
connected implicitly using signal names.
Parameters
----------
sys : `InterconnectedSystem`
Interconnected system object.
show_names : bool, optional
Instead of printing out the system number, print out the name of
each system. Default is False because system name is not usually
specified when performing implicit interconnection using
`interconnect`.
column_width : int, optional
Character width of printed columns.
Examples
--------
>>> P = ct.ss(1,1,1,0, inputs='u', outputs='y', name='P')
>>> C = ct.tf(10, [.1, 1], inputs='e', outputs='u', name='C')
>>> L = ct.interconnect([C, P], inputs='e', outputs='y')
>>> L.connection_table(show_names=True) # doctest: +SKIP
signal | source | destination
--------------------------------------------------------------
e | input | C
u | C | P
y | P | output
control.correlation
Python Library Documentation: function correlation in module control.stochsys
correlation(T, X, Y=None, squeeze=True)
Compute the correlation of time signals.
For a time series X(t) (and optionally Y(t)), the correlation()
function computes the correlation matrix E(X'(t+tau) X(t)) or the
cross-correlation matrix E(X'(t+tau) Y(t)]:
tau, Rtau = correlation(T, X[, Y])
The signal X (and Y, if present) represent a continuous or
discrete-time signal sampled at times T. The return value provides the
correlation Rtau between X(t+tau) and X(t) at a set of time offsets
tau.
Parameters
----------
T : 1D array_like
Sample times for the signal(s).
X : 1D or 2D array_like
Values of the signal at each time in T. The signal can either be
scalar or vector values.
Y : 1D or 2D array_like, optional
If present, the signal with which to compute the correlation.
Defaults to X.
squeeze : bool, optional
If True, squeeze Rtau to remove extra dimensions (useful if the
signals are scalars).
Returns
-------
tau : array
Array of time offsets.
Rtau : array
Correlation for each offset tau.
control.create_estimator_iosystem
Python Library Documentation: function create_estimator_iosystem in module control.stochsys
create_estimator_iosystem(sys, QN, RN, P0=None, G=None, C=None, control_indices=None, disturbance_indices=None, estimate_labels='xhat[{i}]', covariance_labels='P[{i},{j}]', measurement_labels=None, control_labels=None, inputs=None, outputs=None, states=None, **kwargs)
Create an I/O system implementing a linear quadratic estimator.
This function creates an input/output system that implements a
continuous-time state estimator of the form
.. math::
d \hat{x}/dt &= A \hat{x} + B u - L (C \hat{x} - y) \\
dP/dt &= A P + P A^T + G Q_N G^T - P C^T R_N^{-1} C P \\
L &= P C^T R_N^{-1}
or a discrete-time state estimator of the form
.. math::
\hat{x}[k+1] &= A \hat{x}[k] + B u[k] - L (C \hat{x}[k] - y[k]) \\
P[k+1] &= A P A^T + G Q_N G^T - A P C^T R_e^{-1} C P A \\
L &= A P C^T R_e^{-1}
where :math:`R_e = R_N + C P C^T`. It can be called in the form::
estim = ct.create_estimator_iosystem(sys, QN, RN)
where `sys` is the process dynamics and `QN` and `RN` are the covariance
of the disturbance noise and measurement noise. The function returns
the estimator `estim` as I/O system with a parameter `correct` that can
be used to turn off the correction term in the estimation (for forward
predictions).
Parameters
----------
sys : `StateSpace`
The linear I/O system that represents the process dynamics.
QN, RN : ndarray
Disturbance and measurement noise covariance matrices.
P0 : ndarray, optional
Initial covariance matrix. If not specified, defaults to the steady
state covariance.
G : ndarray, optional
Disturbance matrix describing how the disturbances enters the
dynamics. Defaults to `sys.B`.
C : ndarray, optional
If the system has full state output, define the measured values to
be used by the estimator. Otherwise, use the system output as the
measured values.
Returns
-------
estim : `InputOutputSystem`
Input/output system representing the estimator. This system takes
the system output y and input u and generates the estimated state
xhat.
Other Parameters
----------------
control_indices : int, slice, or list of int or string, optional
Specify the indices in the system input vector that correspond to
the control inputs. These inputs will be used as known control
inputs for the estimator. If value is an integer `m`, the first `m`
system inputs are used. Otherwise, the value should be a slice or
a list of indices. The list of indices can be specified as either
integer offsets or as system input signal names. If not specified,
defaults to the system inputs.
disturbance_indices : int, list of int, or slice, optional
Specify the indices in the system input vector that correspond to
the unknown disturbances. These inputs are assumed to be white
noise with noise intensity QN. If value is an integer `m`, the
last `m` system inputs are used. Otherwise, the value should be a
slice or a list of indices. The list of indices can be specified
as either integer offsets or as system input signal names. If not
specified, the disturbances are assumed to be added to the system
inputs.
estimate_labels : str or list of str, optional
Set the names of the state estimate variables (estimator outputs).
If a single string is specified, it should be a format string using
the variable `i` as an index. Otherwise, a list of strings matching
the number of system states should be used. Default is "xhat[{i}]".
covariance_labels : str or list of str, optional
Set the name of the the covariance state variables. If a single
string is specified, it should be a format string using the
variables `i` and `j` as indices. Otherwise, a list of strings
matching the size of the covariance matrix should be used. Default
is "P[{i},{j}]".
measurement_labels, control_labels : str or list of str, optional
Set the name of the measurement and control signal names (estimator
inputs). If a single string is specified, it should be a format
string using the variable `i` as an index. Otherwise, a list of
strings matching the size of the system inputs and outputs should be
used. Default is the signal names for the system measurements and
known control inputs. These settings can also be overridden using the
`inputs` keyword.
inputs, outputs, states : int or list of str, optional
Set the names of the inputs, outputs, and states, as described in
`InputOutputSystem`. Overrides signal labels.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Notes
-----
This function can be used with the `create_statefbk_iosystem` function
to create a closed loop, output-feedback, state space controller::
K, _, _ = ct.lqr(sys, Q, R)
est = ct.create_estimator_iosystem(sys, QN, RN, P0)
ctrl, clsys = ct.create_statefbk_iosystem(sys, K, estimator=est)
The estimator can also be run on its own to process a noisy signal::
resp = ct.input_output_response(est, T, [Y, U], [X0, P0])
If desired, the `correct` parameter can be set to False to allow
prediction with no additional measurement information::
resp = ct.input_output_response(
est, T, 0, [X0, P0], params={'correct': False)
References
----------
.. [1] R. M. Murray, `Optimization-Based Control
<https://fbswiki.org/OBC>`_, 2023.
control.create_statefbk_iosystem
Python Library Documentation: function create_statefbk_iosystem in module control.statefbk
create_statefbk_iosystem(sys, gain, feedfwd_gain=None, integral_action=None, estimator=None, controller_type=None, xd_labels=None, ud_labels=None, ref_labels=None, feedfwd_pattern='trajgen', gainsched_indices=None, gainsched_method='linear', control_indices=None, state_indices=None, name=None, inputs=None, outputs=None, states=None, params=None, **kwargs)
Create an I/O system using a (full) state feedback controller.
This function creates an input/output system that implements a
state feedback controller of the form
.. math:: u = u_d - K_p (x - x_d) - K_i \int(C x - C x_d)
by calling
ctrl, clsys = ct.create_statefbk_iosystem(sys, K)
where `sys` is the process dynamics and `K` is the state (+ integral)
feedback gain (e.g., from LQR). The function returns the controller
`ctrl` and the closed loop systems `clsys`, both as I/O systems.
A gain scheduled controller can also be created, by passing a list of
gains and a corresponding list of values of a set of scheduling
variables. In this case, the controller has the form
.. math:: u = u_d - K_p(\mu) (x - x_d) - K_i(\mu) \int(C x - C x_d)
where :math:`\mu` represents the scheduling variable.
Alternatively, a controller of the form
.. math:: u = k_f r - K_p x - K_i \int(C x - r)
can be created by calling
ctrl, clsys = ct.create_statefbk_iosystem(
sys, K, kf, feedfwd_pattern='refgain')
In either form, an estimator can also be used to compute the estimated
state from the input and output measurements.
Parameters
----------
sys : `NonlinearIOSystem`
The I/O system that represents the process dynamics. If no estimator
is given, the output of this system should represent the full state.
gain : ndarray, tuple, or I/O system
If an array is given, it represents the state feedback gain (`K`).
This matrix defines the gains to be applied to the system. If
`integral_action` is None, then the dimensions of this array
should be (sys.ninputs, sys.nstates). If `integral action` is
set to a matrix or a function, then additional columns
represent the gains of the integral states of the controller.
If a tuple is given, then it specifies a gain schedule. The tuple
should be of the form ``(gains, points)`` where gains is a list of
gains `K_j` and points is a list of values `mu_j` at which the
gains are computed. The `gainsched_indices` parameter should be
used to specify the scheduling variables.
If an I/O system is given, the error e = x - xd is passed to the
system and the output is used as the feedback compensation term.
feedfwd_gain : array_like, optional
Specify the feedforward gain, `k_f`. Used only for the reference
gain design pattern. If not given and if `sys` is a `StateSpace`
(linear) system, will be computed as -1/(C (A-BK)^{-1}) B.
feedfwd_pattern : str, optional
If set to 'refgain', the reference gain design pattern is used to
create the controller instead of the trajectory generation
('trajgen') pattern.
integral_action : ndarray, optional
If this keyword is specified, the controller can include integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current and desired state to generate the error
for the internal integrator states of the control law.
estimator : `NonlinearIOSystem`, optional
If an estimator is provided, use the states of the estimator as
the system inputs for the controller.
gainsched_indices : int, slice, or list of int or str, optional
If a gain scheduled controller is specified, specify the indices of
the controller input to use for scheduling the gain. The input to
the controller is the desired state `x_d`, the desired input `u_d`,
and the system state `x` (or state estimate `xhat`, if an
estimator is given). If value is an integer `q`, the first `q`
values of the ``[x_d, u_d, x]`` vector are used. Otherwise, the
value should be a slice or a list of indices. The list of indices
can be specified as either integer offsets or as signal names. The
default is to use the desired state `x_d`.
gainsched_method : str, optional
The method to use for gain scheduling. Possible values are 'linear'
(default), 'nearest', and 'cubic'. More information is available in
`scipy.interpolate.griddata`. For points outside of the convex
hull of the scheduling points, the gain at the nearest point is
used.
controller_type : 'linear' or 'nonlinear', optional
Set the type of controller to create. The default for a linear gain
is a linear controller implementing the LQR regulator. If the type
is 'nonlinear', a `NonlinearIOSystem` is created instead, with
the gain `K` as a parameter (allowing modifications of the gain at
runtime). If the gain parameter is a tuple, then a nonlinear,
gain-scheduled controller is created.
Returns
-------
ctrl : `NonlinearIOSystem`
Input/output system representing the controller. For the 'trajgen'
design pattern (default), this system takes as inputs the desired
state `x_d`, the desired input `u_d`, and either the system state
`x` or the estimated state `xhat`. It outputs the controller
action `u` according to the formula u = u_d - K(x - x_d). For
the 'refgain' design pattern, the system takes as inputs the
reference input `r` and the system or estimated state. If the
keyword `integral_action` is specified, then an additional set of
integrators is included in the control system (with the gain matrix
`K` having the integral gains appended after the state gains). If
a gain scheduled controller is specified, the gain (proportional
and integral) are evaluated using the scheduling variables
specified by `gainsched_indices`.
clsys : `NonlinearIOSystem`
Input/output system representing the closed loop system. This
system takes as inputs the desired trajectory (x_d, u_d) and
outputs the system state `x` and the applied input `u`
(vertically stacked).
Other Parameters
----------------
control_indices : int, slice, or list of int or str, optional
Specify the indices of the system inputs that should be determined
by the state feedback controller. If value is an integer `m`, the
first `m` system inputs are used. Otherwise, the value should be a
slice or a list of indices. The list of indices can be specified
as either integer offsets or as system input signal names. If not
specified, defaults to the system inputs.
state_indices : int, slice, or list of int or str, optional
Specify the indices of the system (or estimator) outputs that should
be used by the state feedback controller. If value is an integer
`n`, the first `n` system states are used. Otherwise, the value
should be a slice or a list of indices. The list of indices can be
specified as either integer offsets or as estimator/system output
signal names. If not specified, defaults to the system states.
xd_labels, ud_labels, ref_labels : str or list of str, optional
Set the name of the signals to use for the desired state and inputs
or the reference inputs (for the 'refgain' design pattern). If a
single string is specified, it should be a format string using the
variable `i` as an index. Otherwise, a list of strings matching
the size of x_d and u_d, respectively, should be used.
Default is "xd[{i}]" for xd_labels and "ud[{i}]" for ud_labels.
These settings can also be overridden using the `inputs` keyword.
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs, outputs, and states are the same
as the original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
params : dict, optional
System parameter values. By default, these will be copied from
`sys` and `ctrl`, but can be overridden with this keyword.
Examples
--------
>>> import control as ct
>>> import numpy as np
>>>
>>> A = [[0, 1], [-0.5, -0.1]]
>>> B = [[0], [1]]
>>> C = np.eye(2)
>>> D = np.zeros((2, 1))
>>> sys = ct.ss(A, B, C, D)
>>>
>>> Q = np.eye(2)
>>> R = np.eye(1)
>>>
>>> K, _, _ = ct.lqr(sys,Q,R)
>>> ctrl, clsys = ct.create_statefbk_iosystem(sys, K)
control.ctrb
Python Library Documentation: function ctrb in module control.statefbk
ctrb(A, B, t=None)
Controllability matrix.
Parameters
----------
A, B : array_like or string
Dynamics and input matrix of the system.
t : None or integer
Maximum time horizon of the controllability matrix, max = A.shape[0].
Returns
-------
C : 2D array
Controllability matrix.
Examples
--------
>>> G = ct.tf2ss([1], [1, 2, 3])
>>> C = ct.ctrb(G.A, G.B)
>>> np.linalg.matrix_rank(C)
np.int64(2)
control.ctrlplot
Python Library Documentation: module control.ctrlplot in control
NAME
control.ctrlplot - Utility functions for plotting.
DESCRIPTION
This module contains a collection of functions that are used by
various plotting functions.
CLASSES
builtins.object
ControlPlot
class ControlPlot(builtins.object)
| ControlPlot(lines, axes=None, figure=None, legend=None)
|
| Return class for control platting functions.
|
| This class is used as the return type for control plotting functions.
| It contains the information required to access portions of the plot
| that the user might want to adjust, as well as providing methods to
| modify some of the properties of the plot.
|
| A control figure consists of a `matplotlib.figure.Figure` with
| an array of `matplotlib.axes.Axes`. Each axes in the figure has
| a number of lines that represent the data for the plot. There may also
| be a legend present in one or more of the axes.
|
| Parameters
| ----------
| lines : array of list of `matplotlib.lines.Line2D`
| Array of Line2D objects for each line in the plot. Generally, the
| shape of the array matches the subplots shape and the value of the
| array is a list of Line2D objects in that subplot. Some plotting
| functions will return variants of this structure, as described in
| the individual documentation for the functions.
| axes : 2D array of `matplotlib.axes.Axes`
| Array of Axes objects for each subplot in the plot.
| figure : `matplotlib.figure.Figure`
| Figure on which the Axes are drawn.
| legend : `matplotlib.legend.Legend` (instance or ndarray)
| Legend object(s) for the plot. If more than one legend is
| included, this will be an array with each entry being either None
| (for no legend) or a legend object.
|
| Methods defined here:
|
| __getitem__(self, item)
|
| __init__(self, lines, axes=None, figure=None, legend=None)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__ lambda self
| # Implement methods and properties to allow legacy interface (np.array)
|
| __len__ lambda self
|
| __setitem__(self, item, val)
|
| reshape(self, *args)
| Reshape lines array (legacy).
|
| set_plot_title(self, title, frame='axes')
| Set the title for a control plot.
|
| This is a wrapper for the matplotlib `suptitle` function, but by
| setting `frame` to 'axes' (default) then the title is centered on
| the midpoint of the axes in the figure, rather than the center of
| the figure. This usually looks better (particularly with
| multi-panel plots), though it takes longer to render.
|
| Parameters
| ----------
| title : str
| Title text.
| fig : Figure, optional
| Matplotlib figure. Defaults to current figure.
| frame : str, optional
| Coordinate frame for centering: 'axes' (default) or 'figure'.
| **kwargs : `matplotlib.pyplot.suptitle` keywords, optional
| Additional keywords (passed to matplotlib).
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| shape
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
FUNCTIONS
get_plot_axes(line_array)
Get a list of axes from an array of lines.
.. deprecated:: 0.10.1
This function will be removed in a future version of python-control.
Use `cplt.axes` to obtain axes for an instance of `ControlPlot`.
This function can be used to return the set of axes corresponding
to the line array that is returned by `time_response_plot`. This
is useful for generating an axes array that can be passed to
subsequent plotting calls.
Parameters
----------
line_array : array of list of `matplotlib.lines.Line2D`
A 2D array with elements corresponding to a list of lines appearing
in an axes, matching the return type of a time response data plot.
Returns
-------
axes_array : array of list of `matplotlib.axes.Axes`
A 2D array with elements corresponding to the Axes associated with
the lines in `line_array`.
Notes
-----
Only the first element of each array entry is used to determine the axes.
pole_zero_subplots(nrows, ncols, grid=None, dt=None, fig=None, scaling=None, rcParams=None)
Create axes for pole/zero plot.
Parameters
----------
nrows, ncols : int
Number of rows and columns.
grid : True, False, or 'empty', optional
Grid style to use. Can also be a list, in which case each subplot
will have a different style (columns then rows).
dt : timebase, option
Timebase for each subplot (or a list of timebases).
scaling : 'auto', 'equal', or None
Scaling to apply to the subplots.
fig : `matplotlib.figure.Figure`
Figure to use for creating subplots.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
Returns
-------
ax_array : ndarray
2D array of axes.
reset_rcParams()
Reset rcParams to default values for control plots.
suptitle(title, fig=None, frame='axes', **kwargs)
Add a centered title to a figure.
.. deprecated:: 0.10.1
Use `ControlPlot.set_plot_title`.
DATA
__all__ = ['ControlPlot', 'suptitle', 'get_plot_axes', 'pole_zero_subp...
rcParams = {'axes.labelsize': 'small', 'axes.titlesize': 'small', 'fig...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\ctrlplot.py
control.ctrlutil
Python Library Documentation: module control.ctrlutil in control
NAME
control.ctrlutil - Control system utility functions.
FUNCTIONS
db2mag(db)
Convert a gain in decibels (dB) to a magnitude.
If A is magnitude,
db = 20 * log10(A)
Parameters
----------
db : float or ndarray
Input value or array of values, given in decibels.
Returns
-------
mag : float or ndarray
Corresponding magnitudes.
Examples
--------
>>> ct.db2mag(-40.0) # doctest: +SKIP
0.01
>>> ct.db2mag(np.array([0, -20])) # doctest: +SKIP
array([1. , 0.1])
issys(obj)
Deprecated function to check if an object is an LTI system.
.. deprecated:: 0.10.0
Use isinstance(obj, ct.LTI)
mag2db(mag)
Convert a magnitude to decibels (dB).
If A is magnitude,
db = 20 * log10(A)
Parameters
----------
mag : float or ndarray
Input magnitude or array of magnitudes.
Returns
-------
db : float or ndarray
Corresponding values in decibels.
Examples
--------
>>> ct.mag2db(10.0) # doctest: +SKIP
20.0
>>> ct.mag2db(np.array([1, 0.01])) # doctest: +SKIP
array([ 0., -40.])
unwrap(angle, period=6.283185307179586)
Unwrap a phase angle to give a continuous curve.
Parameters
----------
angle : array_like
Array of angles to be unwrapped.
period : float, optional
Period (defaults to 2 pi).
Returns
-------
angle_out : ndarray
Output array, with jumps of period/2 eliminated.
Examples
--------
>>> # Already continuous
>>> theta1 = np.array([1.0, 1.5, 2.0, 2.5, 3.0]) * np.pi
>>> theta2 = ct.unwrap(theta1)
>>> theta2/np.pi # doctest: +SKIP
array([1. , 1.5, 2. , 2.5, 3. ])
>>> # Wrapped, discontinuous
>>> theta1 = np.array([1.0, 1.5, 0.0, 0.5, 1.0]) * np.pi
>>> theta2 = ct.unwrap(theta1)
>>> theta2/np.pi # doctest: +SKIP
array([1. , 1.5, 2. , 2.5, 3. ])
DATA
__all__ = ['unwrap', 'issys', 'db2mag', 'mag2db']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\ctrlutil.py
control.cvxopt_check
Python Library Documentation: function cvxopt_check in module control.exception
cvxopt_check()
Return True if cvxopt is installed, otherwise False.
control.cvxopt_installed
Python Library Documentation: NoneType object class NoneType(object) | Methods defined here: | | __bool__(self, /) | True if self else False | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __le__(self, value, /) | Return self<=value. | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) | Create and return a new object. See help(type) for accurate signature.
control.damp
Python Library Documentation: function damp in module control.lti
damp(sys, doprint=True)
Compute system's natural frequencies, damping ratios, and poles.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system object.
doprint : bool (optional)
If True, print table with values.
Returns
-------
wn : array
Natural frequency for each system pole.
zeta : array
Damping ratio for each system pole.
poles : array
System pole locations.
See Also
--------
poles
Notes
-----
If the system is continuous
| ``wn = abs(poles)``
| ``zeta = -real(poles)/poles``
If the system is discrete, the discrete poles are mapped to their
equivalent location in the s-plane via
| ``s = log(poles)/dt``
and
| ``wn = abs(s)``
| ``zeta = -real(s)/wn``
Examples
--------
>>> G = ct.tf([1], [1, 4])
>>> wn, zeta, poles = ct.damp(G)
Eigenvalue (pole) Damping Frequency
-4 1 4
control.dare
Python Library Documentation: function dare in module control.mateqn
dare(A, B, Q, R, S=None, E=None, stabilizing=True, method=None, _As='A', _Bs='B', _Qs='Q', _Rs='R', _Ss='S', _Es='E')
Solves the discrete-time algebraic Riccati equation.
X, L, G = dare(A, B, Q, R) solves
:math:`A^T X A - X - A^T X B (B^T X B + R)^{-1} B^T X A + Q = 0`
where A and Q are square matrices of the same dimension. Further, Q
is a symmetric matrix. The function returns the solution X, the gain
matrix G = (B^T X B + R)^-1 B^T X A and the closed loop eigenvalues L,
i.e., the eigenvalues of A - B G.
X, L, G = dare(A, B, Q, R, S, E) solves the generalized discrete-time
algebraic Riccati equation
:math:`A^T X A - E^T X E - (A^T X B + S) (B^T X B + R)^{-1} (B^T X A + S^T) + Q = 0`
where A, Q and E are square matrices of the same dimension. Further, Q
and R are symmetric matrices. If R is None, it is set to the identity
matrix. The function returns the solution X, the gain matrix :math:`G =
(B^T X B + R)^{-1} (B^T X A + S^T)` and the closed loop eigenvalues L,
i.e., the (generalized) eigenvalues of A - B G (with respect to E, if
specified).
Parameters
----------
A, B, Q : 2D arrays
Input matrices for the Riccati equation.
R, S, E : 2D arrays, optional
Input matrices for generalized Riccati equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
stabilizing : bool, optional
If `method` is 'slycot', unstabilized eigenvalues will be returned
in the initial elements of `L`. Not supported for 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Riccati equation.
L : 1D array
Closed loop eigenvalues.
G : 2D array (or matrix)
Gain matrix.
control.db2mag
Python Library Documentation: function db2mag in module control.ctrlutil
db2mag(db)
Convert a gain in decibels (dB) to a magnitude.
If A is magnitude,
db = 20 * log10(A)
Parameters
----------
db : float or ndarray
Input value or array of values, given in decibels.
Returns
-------
mag : float or ndarray
Corresponding magnitudes.
Examples
--------
>>> ct.db2mag(-40.0) # doctest: +SKIP
0.01
>>> ct.db2mag(np.array([0, -20])) # doctest: +SKIP
array([1. , 0.1])
control.dcgain
Python Library Documentation: function dcgain in module control.lti
dcgain(sys)
Return the zero-frequency (or DC) gain of the given system.
Parameters
----------
sys : LTI
System for which the zero-frequency gain is computed.
Returns
-------
gain : ndarray
The zero-frequency gain, or (inf + nanj) if the system has a pole at
the origin, (nan + nanj) if there is a pole/zero cancellation at the
origin.
Examples
--------
>>> G = ct.tf([1], [1, 2])
>>> ct.dcgain(G) # doctest: +SKIP
np.float(0.5)
control.defaults
Python Library Documentation: DefaultDict in module control.config object class DefaultDict(collections.UserDict) | DefaultDict(*args, **kwargs) | | Default parameters dictionary, with legacy warnings. | | If a user wants to write to an old setting, issue a warning and write to | the renamed setting instead. Accessing the old setting returns the value | from the new name. | | Method resolution order: | DefaultDict | collections.UserDict | collections.abc.MutableMapping | collections.abc.Mapping | collections.abc.Collection | collections.abc.Sized | collections.abc.Iterable | collections.abc.Container | builtins.object | | Methods defined here: | | __call__(self, mapping) | Call self as a function. | | __enter__(self) | | __exit__(self, exc_type, exc_val, exc_tb) | | __init__(self, *args, **kwargs) | Initialize self. See help(type(self)) for accurate signature. | | __missing__(self, key) | | __setitem__(self, key, value) | | get(self, key, defval=None) | D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None. | | ---------------------------------------------------------------------- | Data and other attributes defined here: | | __abstractmethods__ = frozenset() | | ---------------------------------------------------------------------- | Methods inherited from collections.UserDict: | | __contains__(self, key) | # Modify __contains__ and get() to work like dict | # does when __missing__ is present. | | __copy__(self) | | __delitem__(self, key) | | __getitem__(self, key) | | __ior__(self, other) | | __iter__(self) | | __len__(self) | | __or__(self, other) | Return self|value. | | __repr__(self) | Return repr(self). | | __ror__(self, other) | Return value|self. | | copy(self) | | ---------------------------------------------------------------------- | Class methods inherited from collections.UserDict: | | fromkeys(iterable, value=None) | | ---------------------------------------------------------------------- | Data descriptors inherited from collections.UserDict: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object | | ---------------------------------------------------------------------- | Methods inherited from collections.abc.MutableMapping: | | clear(self) | D.clear() -> None. Remove all items from D. | | pop(self, key, default=<object object at 0x000001BED2D181F0>) | D.pop(k[,d]) -> v, remove specified key and return the corresponding value. | If key is not found, d is returned if given, otherwise KeyError is raised. | | popitem(self) | D.popitem() -> (k, v), remove and return some (key, value) pair | as a 2-tuple; but raise KeyError if D is empty. | | setdefault(self, key, default=None) | D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D | | update(self, other=(), /, **kwds) | D.update([E, ]**F) -> None. Update D from mapping/iterable E and F. | If E present and has a .keys() method, does: for k in E: D[k] = E[k] | If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v | In either case, this is followed by: for k, v in F.items(): D[k] = v | | ---------------------------------------------------------------------- | Methods inherited from collections.abc.Mapping: | | __eq__(self, other) | Return self==value. | | items(self) | D.items() -> a set-like object providing a view on D's items | | keys(self) | D.keys() -> a set-like object providing a view on D's keys | | values(self) | D.values() -> an object providing a view on D's values | | ---------------------------------------------------------------------- | Data and other attributes inherited from collections.abc.Mapping: | | __hash__ = None | | __reversed__ = None | | ---------------------------------------------------------------------- | Class methods inherited from collections.abc.Collection: | | __subclasshook__(C) | Abstract classes can override this to customize issubclass(). | | This is invoked early on by abc.ABCMeta.__subclasscheck__(). | It should return True, False or NotImplemented. If it returns | NotImplemented, the normal algorithm is used. Otherwise, it | overrides the normal algorithm (and the outcome is cached). | | ---------------------------------------------------------------------- | Class methods inherited from collections.abc.Iterable: | | __class_getitem__ = GenericAlias(...) | Represent a PEP 585 generic type | | E.g. for t = list[int], t.__origin__ is list and t.__args__ is (int,).
control.delay
Python Library Documentation: module control.delay in control
NAME
control.delay - Functions to implement time delays (pade).
FUNCTIONS
pade(T, n=1, numdeg=None)
Create a linear system that approximates a delay.
Return the numerator and denominator coefficients of the Pade
approximation of the given order.
Parameters
----------
T : number
Time. delay
n : positive integer
Degree of denominator of approximation.
numdeg : integer, or None (the default)
If numdeg is None, numerator degree equals denominator degree.
If numdeg >= 0, specifies degree of numerator.
If numdeg < 0, numerator degree is n+numdeg.
Returns
-------
num, den : ndarray
Polynomial coefficients of the delay model, in descending powers of s.
Notes
-----
Based on [1]_ and [2]_.
References
----------
.. [1] Algorithm 11.3.1 in Golub and van Loan, "Matrix Computation" 3rd.
Ed. pp. 572-574.
.. [2] M. Vajta, "Some remarks on Padé-approximations",
3rd TEMPUS-INTCOM Symposium.
Examples
--------
>>> delay = 1
>>> num, den = ct.pade(delay, 3)
>>> num, den
([-1.0, 12.0, -60.0, 120.0], [1.0, 12.0, 60.0, 120.0])
>>> num, den = ct.pade(delay, 3, -2)
>>> num, den
([-6.0, 24.0], [1.0, 6.0, 18.0, 24.0])
DATA
__all__ = ['pade']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\delay.py
control.descfcn
Python Library Documentation: module control.descfcn in control
NAME
control.descfcn
DESCRIPTION
This module contains functions for performing closed loop analysis of
systems with memoryless nonlinearities using describing function analysis.
CLASSES
builtins.object
DescribingFunctionNonlinearity
friction_backlash_nonlinearity
relay_hysteresis_nonlinearity
saturation_nonlinearity
DescribingFunctionResponse
class DescribingFunctionNonlinearity(builtins.object)
| Base class for nonlinear systems with a describing function.
|
| This class is intended to be used as a base class for nonlinear functions
| that have an analytically defined describing function. Subclasses should
| override the `__call__` and `describing_function` methods and (optionally)
| the `_isstatic` method (should be False if `__call__` updates the
| instance state).
|
| Methods defined here:
|
| __call__(self, A)
| Evaluate the nonlinearity at a (scalar) input value.
|
| __init__(self)
| Initialize a describing function nonlinearity (optional).
|
| describing_function(self, A)
| Return the describing function for a nonlinearity.
|
| This method is used to allow analytical representations of the
| describing function for a nonlinearity. It turns the (complex) value
| of the describing function for sinusoidal input of amplitude `A`.
|
| Parameters
| ----------
| A : float
| Amplitude of the sinusoidal input to the nonlinearity.
|
| Returns
| -------
| float
| Value of the describing function at the given amplitude.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class DescribingFunctionResponse(builtins.object)
| DescribingFunctionResponse(response, N_vals, positions, intersections)
|
| Results of describing function analysis.
|
| Describing functions allow analysis of a linear I/O systems with a
| nonlinear feedback function. The DescribingFunctionResponse class
| is used by the `describing_function_response` function to return
| the results of a describing function analysis. The response
| object can be used to obtain information about the describing
| function analysis or generate a Nyquist plot showing the frequency
| response of the linear systems and the describing function for the
| nonlinear element.
|
| Parameters
| ----------
| response : `FrequencyResponseData`
| Frequency response of the linear system component of the system.
| intersections : 1D array of 2-tuples or None
| A list of all amplitudes and frequencies in which
| :math:`H(j\omega) N(A) = -1`, where :math:`N(A)` is the describing
| function associated with `F`, or None if there are no such
| points. Each pair represents a potential limit cycle for the
| closed loop system with amplitude given by the first value of the
| tuple and frequency given by the second value.
| N_vals : complex array
| Complex value of the describing function, indexed by amplitude.
| positions : list of complex
| Location of the intersections in the complex plane.
|
| Methods defined here:
|
| __getitem__(self, index)
|
| __init__(self, response, N_vals, positions, intersections)
| Create a describing function response data object.
|
| __iter__(self)
| # Implement iter, getitem, len to allow recovering the intersections
|
| __len__(self)
|
| plot(self, **kwargs)
| Plot the results of a describing function analysis.
|
| See `describing_function_plot` for details.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class friction_backlash_nonlinearity(DescribingFunctionNonlinearity)
| friction_backlash_nonlinearity(b)
|
| Backlash nonlinearity for describing function analysis.
|
| This class creates a nonlinear function representing a friction-dominated
| backlash nonlinearity ,including the describing function for the
| nonlinearity. The following call creates a nonlinear function suitable
| for describing function analysis::
|
| F = friction_backlash_nonlinearity(b)
|
| This function maintains an internal state representing the 'center' of
| a mechanism with backlash. If the new input is within b/2 of the
| current center, the output is unchanged. Otherwise, the output is
| given by the input shifted by b/2.
|
| Parameters
| ----------
| b : float
| Backlash amount.
|
| Examples
| --------
| >>> nl = ct.friction_backlash_nonlinearity(2) # backlash of +/- 1
| >>> nl(0)
| 0
| >>> nl(1) # not enough to overcome backlash
| 0
| >>> nl(2)
| 1.0
| >>> nl(1)
| 1.0
| >>> nl(0) # not enough to overcome backlash
| 1.0
| >>> nl(-1)
| 0.0
|
| Method resolution order:
| friction_backlash_nonlinearity
| DescribingFunctionNonlinearity
| builtins.object
|
| Methods defined here:
|
| __call__(self, x)
| Evaluate the nonlinearity at a (scalar) input value.
|
| __init__(self, b)
| Initialize a describing function nonlinearity (optional).
|
| describing_function(self, A)
| Return the describing function for a backlash nonlinearity.
|
| Parameters
| ----------
| A : float
| Amplitude of the sinusoidal input to the nonlinearity.
|
| Returns
| -------
| float
| Value of the describing function at the given amplitude.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from DescribingFunctionNonlinearity:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class relay_hysteresis_nonlinearity(DescribingFunctionNonlinearity)
| relay_hysteresis_nonlinearity(b, c)
|
| Relay w/ hysteresis for describing function analysis.
|
| This class creates a nonlinear function representing a a relay with
| symmetric upper and lower bounds of magnitude `b` and a hysteretic region
| of width `c` (using the notation from [FBS2e](https://fbsbook.org),
| Example 10.12, including the describing function for the nonlinearity.
| The following call creates a nonlinear function suitable for describing
| function analysis::
|
| F = relay_hysteresis_nonlinearity(b, c)
|
| The output of this function is b if x > c and -b if x < -c. For -c <=
| x <= c, the value depends on the branch of the hysteresis loop (as
| illustrated in Figure 10.20 of FBS2e).
|
| Parameters
| ----------
| b : float
| Hysteresis bound.
| c : float
| Width of hysteresis region.
|
| Examples
| --------
| >>> nl = ct.relay_hysteresis_nonlinearity(1, 2)
| >>> nl(0)
| -1
| >>> nl(1) # not enough for switching on
| -1
| >>> nl(5)
| 1
| >>> nl(-1) # not enough for switching off
| 1
| >>> nl(-5)
| -1
|
| Method resolution order:
| relay_hysteresis_nonlinearity
| DescribingFunctionNonlinearity
| builtins.object
|
| Methods defined here:
|
| __call__(self, x)
| Evaluate the nonlinearity at a (scalar) input value.
|
| __init__(self, b, c)
| Initialize a describing function nonlinearity (optional).
|
| describing_function(self, A)
| Return the describing function for a hysteresis nonlinearity.
|
| Parameters
| ----------
| A : float
| Amplitude of the sinusoidal input to the nonlinearity.
|
| Returns
| -------
| float
| Value of the describing function at the given amplitude.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from DescribingFunctionNonlinearity:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class saturation_nonlinearity(DescribingFunctionNonlinearity)
| saturation_nonlinearity(ub=1, lb=None)
|
| Saturation nonlinearity for describing function analysis.
|
| This class creates a nonlinear function representing a saturation with
| given upper and lower bounds, including the describing function for the
| nonlinearity. The following call creates a nonlinear function suitable
| for describing function analysis:
|
| F = saturation_nonlinearity(ub[, lb])
|
| By default, the lower bound is set to the negative of the upper bound.
| Asymmetric saturation functions can be created, but note that these
| functions will not have zero bias and hence care must be taken in using
| the nonlinearity for analysis.
|
| Parameters
| ----------
| lb, ub : float
| Upper and lower saturation bounds.
|
| Examples
| --------
| >>> nl = ct.saturation_nonlinearity(5)
| >>> nl(1)
| np.int64(1)
| >>> nl(10)
| np.int64(5)
| >>> nl(-10)
| np.int64(-5)
|
| Method resolution order:
| saturation_nonlinearity
| DescribingFunctionNonlinearity
| builtins.object
|
| Methods defined here:
|
| __call__(self, x)
| Evaluate the nonlinearity at a (scalar) input value.
|
| __init__(self, ub=1, lb=None)
| Initialize a describing function nonlinearity (optional).
|
| describing_function(self, A)
| Return the describing function for a saturation nonlinearity.
|
| Parameters
| ----------
| A : float
| Amplitude of the sinusoidal input to the nonlinearity.
|
| Returns
| -------
| float
| Value of the describing function at the given amplitude.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from DescribingFunctionNonlinearity:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
FUNCTIONS
describing_function(F, A, num_points=100, zero_check=True, try_method=True)
Numerically compute describing function of a nonlinear function.
The describing function of a nonlinearity is given by magnitude and phase
of the first harmonic of the function when evaluated along a sinusoidal
input :math:`A \sin \omega t`. This function returns the magnitude and
phase of the describing function at amplitude :math:`A`.
Parameters
----------
F : callable
The function F() should accept a scalar number as an argument and
return a scalar number. For compatibility with (static) nonlinear
input/output systems, the output can also return a 1D array with a
single element.
If the function is an object with a method `describing_function`
then this method will be used to computing the describing function
instead of a nonlinear computation. Some common nonlinearities
use the `DescribingFunctionNonlinearity` class,
which provides this functionality.
A : array_like
The amplitude(s) at which the describing function should be calculated.
num_points : int, optional
Number of points to use in computing describing function (default =
100).
zero_check : bool, optional
If True (default) then `A` is zero, the function will be evaluated
and checked to make sure it is zero. If not, a `TypeError` exception
is raised. If zero_check is False, no check is made on the value of
the function at zero.
try_method : bool, optional
If True (default), check the `F` argument to see if it is an object
with a `describing_function` method and use this to compute the
describing function. More information in the `describing_function`
method for the `DescribingFunctionNonlinearity` class.
Returns
-------
df : ndarray of complex
The (complex) value of the describing function at the given amplitudes.
Raises
------
TypeError
If A[i] < 0 or if A[i] = 0 and the function F(0) is non-zero.
Examples
--------
>>> F = lambda x: np.exp(-x) # Basic diode description
>>> A = np.logspace(-1, 1, 20) # Amplitudes from 0.1 to 10.0
>>> df_values = ct.describing_function(F, A)
>>> len(df_values)
20
describing_function_plot(*sysdata, point_label='%5.2g @ %-5.2g', label=None, **kwargs)
describing_function_plot(data, *args, **kwargs)
Nyquist plot with describing function for a nonlinear system.
This function generates a Nyquist plot for a closed loop system
consisting of a linear system with a nonlinearity in the feedback path.
The function may be called in one of two forms:
describing_function_plot(response[, options])
describing_function_plot(H, F, A[, omega[, options]])
In the first form, the response should be generated using the
`describing_function_response` function. In the second
form, that function is called internally, with the listed arguments.
Parameters
----------
data : `DescribingFunctionResponse`
A describing function response data object created by
`describing_function_response`.
H : LTI system
Linear time-invariant (LTI) system (state space, transfer function,
or FRD).
F : nonlinear function
Nonlinearity in the feedback path, either a scalar function or a
single-input, single-output, static input/output system.
A : list
List of amplitudes to be used for the describing function plot.
omega : list, optional
List of frequencies to be used for the linear system Nyquist
curve. If not specified (or None), frequencies are computed
automatically based on the properties of the linear system.
refine : bool, optional
If True (default), refine the location of the intersection of the
Nyquist curve for the linear system and the describing function to
determine the intersection point.
label : str or array_like of str, optional
If present, replace automatically generated label with the given label.
point_label : str, optional
Formatting string used to label intersection points on the Nyquist
plot. Defaults to "%5.2g @ %-5.2g". Set to None to omit labels.
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
warn_nyquist : bool, optional
Set to True to turn on warnings generated by `nyquist_plot` or
False to turn off warnings. If not set (or set to None),
warnings are turned off if omega is specified, otherwise they are
turned on.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties
for Nyquist curve.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The first
element of the array is a list of lines (typically only one) for
the Nyquist plot of the linear I/O system. The second element of
the array is a list of lines (typically only one) for the
describing function curve.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
See Also
--------
DescribingFunctionResponse, describing_function_response
Examples
--------
>>> H_simple = ct.tf([8], [1, 2, 2, 1])
>>> F_saturation = ct.saturation_nonlinearity(1)
>>> amp = np.linspace(1, 4, 10)
>>> cplt = ct.describing_function_plot(H_simple, F_saturation, amp)
describing_function_response(H, F, A, omega=None, refine=True, warn_nyquist=None, _check_kwargs=True, **kwargs)
Compute the describing function response of a system.
This function uses describing function analysis to analyze a closed
loop system consisting of a linear system with a nonlinear function in
the feedback path.
Parameters
----------
H : LTI system
Linear time-invariant (LTI) system (state space, transfer function,
or FRD).
F : nonlinear function
Feedback nonlinearity, either a scalar function or a single-input,
single-output, static input/output system.
A : list
List of amplitudes to be used for the describing function plot.
omega : list, optional
List of frequencies to be used for the linear system Nyquist curve.
warn_nyquist : bool, optional
Set to True to turn on warnings generated by `nyquist_plot` or
False to turn off warnings. If not set (or set to None),
warnings are turned off if omega is specified, otherwise they are
turned on.
refine : bool, optional
If True, `scipy.optimize.minimize` to refine the estimate
of the intersection of the frequency response and the describing
function.
Returns
-------
response : `DescribingFunctionResponse` object
Response object that contains the result of the describing function
analysis. The results can plotted using the
`~DescribingFunctionResponse.plot` method.
response.intersections : 1D ndarray of 2-tuples or None
A list of all amplitudes and frequencies in which
:math:`H(j\omega) N(a) = -1`, where :math:`N(a)` is the describing
function associated with `F`, or None if there are no such
points. Each pair represents a potential limit cycle for the
closed loop system with amplitude given by the first value of the
tuple and frequency given by the second value.
response.Nvals : complex ndarray
Complex value of the describing function, indexed by amplitude.
See Also
--------
DescribingFunctionResponse, describing_function_plot
Examples
--------
>>> H_simple = ct.tf([8], [1, 2, 2, 1])
>>> F_saturation = ct.saturation_nonlinearity(1)
>>> amp = np.linspace(1, 4, 10)
>>> response = ct.describing_function_response(H_simple, F_saturation, amp)
>>> response.intersections # doctest: +SKIP
[(3.343844998258643, 1.4142293090899216)]
>>> cplt = response.plot()
DATA
__all__ = ['describing_function', 'describing_function_plot', 'describ...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\descfcn.py
control.describing_function
Python Library Documentation: function describing_function in module control.descfcn
describing_function(F, A, num_points=100, zero_check=True, try_method=True)
Numerically compute describing function of a nonlinear function.
The describing function of a nonlinearity is given by magnitude and phase
of the first harmonic of the function when evaluated along a sinusoidal
input :math:`A \sin \omega t`. This function returns the magnitude and
phase of the describing function at amplitude :math:`A`.
Parameters
----------
F : callable
The function F() should accept a scalar number as an argument and
return a scalar number. For compatibility with (static) nonlinear
input/output systems, the output can also return a 1D array with a
single element.
If the function is an object with a method `describing_function`
then this method will be used to computing the describing function
instead of a nonlinear computation. Some common nonlinearities
use the `DescribingFunctionNonlinearity` class,
which provides this functionality.
A : array_like
The amplitude(s) at which the describing function should be calculated.
num_points : int, optional
Number of points to use in computing describing function (default =
100).
zero_check : bool, optional
If True (default) then `A` is zero, the function will be evaluated
and checked to make sure it is zero. If not, a `TypeError` exception
is raised. If zero_check is False, no check is made on the value of
the function at zero.
try_method : bool, optional
If True (default), check the `F` argument to see if it is an object
with a `describing_function` method and use this to compute the
describing function. More information in the `describing_function`
method for the `DescribingFunctionNonlinearity` class.
Returns
-------
df : ndarray of complex
The (complex) value of the describing function at the given amplitudes.
Raises
------
TypeError
If A[i] < 0 or if A[i] = 0 and the function F(0) is non-zero.
Examples
--------
>>> F = lambda x: np.exp(-x) # Basic diode description
>>> A = np.logspace(-1, 1, 20) # Amplitudes from 0.1 to 10.0
>>> df_values = ct.describing_function(F, A)
>>> len(df_values)
20
control.describing_function_plot
Python Library Documentation: function describing_function_plot in module control.descfcn
describing_function_plot(*sysdata, point_label='%5.2g @ %-5.2g', label=None, **kwargs)
describing_function_plot(data, *args, **kwargs)
Nyquist plot with describing function for a nonlinear system.
This function generates a Nyquist plot for a closed loop system
consisting of a linear system with a nonlinearity in the feedback path.
The function may be called in one of two forms:
describing_function_plot(response[, options])
describing_function_plot(H, F, A[, omega[, options]])
In the first form, the response should be generated using the
`describing_function_response` function. In the second
form, that function is called internally, with the listed arguments.
Parameters
----------
data : `DescribingFunctionResponse`
A describing function response data object created by
`describing_function_response`.
H : LTI system
Linear time-invariant (LTI) system (state space, transfer function,
or FRD).
F : nonlinear function
Nonlinearity in the feedback path, either a scalar function or a
single-input, single-output, static input/output system.
A : list
List of amplitudes to be used for the describing function plot.
omega : list, optional
List of frequencies to be used for the linear system Nyquist
curve. If not specified (or None), frequencies are computed
automatically based on the properties of the linear system.
refine : bool, optional
If True (default), refine the location of the intersection of the
Nyquist curve for the linear system and the describing function to
determine the intersection point.
label : str or array_like of str, optional
If present, replace automatically generated label with the given label.
point_label : str, optional
Formatting string used to label intersection points on the Nyquist
plot. Defaults to "%5.2g @ %-5.2g". Set to None to omit labels.
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
warn_nyquist : bool, optional
Set to True to turn on warnings generated by `nyquist_plot` or
False to turn off warnings. If not set (or set to None),
warnings are turned off if omega is specified, otherwise they are
turned on.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties
for Nyquist curve.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The first
element of the array is a list of lines (typically only one) for
the Nyquist plot of the linear I/O system. The second element of
the array is a list of lines (typically only one) for the
describing function curve.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
See Also
--------
DescribingFunctionResponse, describing_function_response
Examples
--------
>>> H_simple = ct.tf([8], [1, 2, 2, 1])
>>> F_saturation = ct.saturation_nonlinearity(1)
>>> amp = np.linspace(1, 4, 10)
>>> cplt = ct.describing_function_plot(H_simple, F_saturation, amp)
control.describing_function_response
Python Library Documentation: function describing_function_response in module control.descfcn
describing_function_response(H, F, A, omega=None, refine=True, warn_nyquist=None, _check_kwargs=True, **kwargs)
Compute the describing function response of a system.
This function uses describing function analysis to analyze a closed
loop system consisting of a linear system with a nonlinear function in
the feedback path.
Parameters
----------
H : LTI system
Linear time-invariant (LTI) system (state space, transfer function,
or FRD).
F : nonlinear function
Feedback nonlinearity, either a scalar function or a single-input,
single-output, static input/output system.
A : list
List of amplitudes to be used for the describing function plot.
omega : list, optional
List of frequencies to be used for the linear system Nyquist curve.
warn_nyquist : bool, optional
Set to True to turn on warnings generated by `nyquist_plot` or
False to turn off warnings. If not set (or set to None),
warnings are turned off if omega is specified, otherwise they are
turned on.
refine : bool, optional
If True, `scipy.optimize.minimize` to refine the estimate
of the intersection of the frequency response and the describing
function.
Returns
-------
response : `DescribingFunctionResponse` object
Response object that contains the result of the describing function
analysis. The results can plotted using the
`~DescribingFunctionResponse.plot` method.
response.intersections : 1D ndarray of 2-tuples or None
A list of all amplitudes and frequencies in which
:math:`H(j\omega) N(a) = -1`, where :math:`N(a)` is the describing
function associated with `F`, or None if there are no such
points. Each pair represents a potential limit cycle for the
closed loop system with amplitude given by the first value of the
tuple and frequency given by the second value.
response.Nvals : complex ndarray
Complex value of the describing function, indexed by amplitude.
See Also
--------
DescribingFunctionResponse, describing_function_plot
Examples
--------
>>> H_simple = ct.tf([8], [1, 2, 2, 1])
>>> F_saturation = ct.saturation_nonlinearity(1)
>>> amp = np.linspace(1, 4, 10)
>>> response = ct.describing_function_response(H_simple, F_saturation, amp)
>>> response.intersections # doctest: +SKIP
[(3.343844998258643, 1.4142293090899216)]
>>> cplt = response.plot()
control.disk_margins
Python Library Documentation: function disk_margins in module control.margins
disk_margins(L, omega, skew=0.0, returnall=False)
Disk-based stability margins of loop transfer function.
Parameters
----------
L : `StateSpace` or `TransferFunction`
Linear SISO or MIMO loop transfer function.
omega : sequence of array_like
1D array of (non-negative) frequencies (rad/s) at which
to evaluate the disk-based stability margins.
skew : float or array_like, optional
Skew parameter(s) for disk margin (default = 0.0):
* skew = 0.0 "balanced" sensitivity function 0.5*(S - T)
* skew = 1.0 sensitivity function S
* skew = -1.0 complementary sensitivity function T
returnall : bool, optional
If True, return frequency-dependent margins.
If False (default), return worst-case (minimum) margins.
Returns
-------
DM : float or array_like
Disk margin.
DGM : float or array_like
Disk-based gain margin.
DPM : float or array_like
Disk-based phase margin.
Examples
--------
>> omega = np.logspace(-1, 3, 1001)
>> P = control.ss([[0, 10], [-10, 0]], np.eye(2), [[1, 10],
[-10, 1]], 0)
>> K = control.ss([], [], [], [[1, -2], [0, 1]])
>> L = P * K
>> DM, DGM, DPM = control.disk_margins(L, omega, skew=0.0)
control.dlqe
Python Library Documentation: function dlqe in module control.stochsys
dlqe(*args, **kwargs)
dlqe(A, G, C, QN, RN, [, N])
Discrete-time linear quadratic estimator (Kalman filter).
Given the system
.. math::
x[n+1] &= Ax[n] + Bu[n] + Gw[n] \\
y[n] &= Cx[n] + Du[n] + v[n]
with unbiased process noise w and measurement noise v with covariances
.. math:: E\{w w^T\} = QN, E\{v v^T\} = RN, E\{w v^T\} = NN
The dlqe() function computes the observer gain matrix L such that the
stationary (non-time-varying) Kalman filter
.. math:: x_e[n+1] = A x_e[n] + B u[n] + L(y[n] - C x_e[n] - D u[n])
produces a state estimate x_e[n] that minimizes the expected squared
error using the sensor measurements y. The noise cross-correlation `NN`
is set to zero when omitted.
Parameters
----------
A, G, C : 2D array_like
Dynamics, process noise (disturbance), and output matrices.
QN, RN : 2D array_like
Process and sensor noise covariance matrices.
NN : 2D array, optional
Cross covariance matrix (not yet supported).
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
L : 2D array
Kalman estimator gain.
P : 2D array
Solution to Riccati equation.
.. math::
A P + P A^T - (P C^T + G N) R^{-1} (C P + N^T G^T) + G Q G^T = 0
E : 1D array
Eigenvalues of estimator poles eig(A - L C).
Examples
--------
>>> L, P, E = dlqe(A, G, C, QN, RN) # doctest: +SKIP
>>> L, P, E = dlqe(A, G, C, QN, RN, NN) # doctest: +SKIP
See Also
--------
dlqr, lqe, lqr
control.dlqr
Python Library Documentation: function dlqr in module control.statefbk
dlqr(*args, **kwargs)
dlqr(A, B, Q, R[, N])
Discrete-time linear quadratic regulator design.
The dlqr() function computes the optimal state feedback controller
u[n] = - K x[n] that minimizes the quadratic cost
.. math:: J = \sum_0^\infty (x[n]' Q x[n] + u[n]' R u[n] + 2 x[n]' N u[n])
The function can be called with either 3, 4, or 5 arguments:
* ``dlqr(dsys, Q, R)``
* ``dlqr(dsys, Q, R, N)``
* ``dlqr(A, B, Q, R)``
* ``dlqr(A, B, Q, R, N)``
where `dsys` is a discrete-time `StateSpace` system, and `A`, `B`,
`Q`, `R`, and `N` are 2d arrays of appropriate dimension (`dsys.dt` must
not be 0.)
Parameters
----------
A, B : 2D array
Dynamics and input matrices.
dsys : LTI `StateSpace`
Discrete-time linear system.
Q, R : 2D array
State and input weight matrices.
N : 2D array, optional
Cross weight matrix.
integral_action : ndarray, optional
If this keyword is specified, the controller includes integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current state to generate the error for the
internal integrator states of the control law. The number of
outputs that are to be integrated must match the number of
additional rows and columns in the `Q` matrix.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
K : 2D array
State feedback gains.
S : 2D array
Solution to Riccati equation.
E : 1D array
Eigenvalues of the closed loop system.
See Also
--------
lqr, lqe, dlqe
Examples
--------
>>> K, S, E = dlqr(dsys, Q, R, [N]) # doctest: +SKIP
>>> K, S, E = dlqr(A, B, Q, R, [N]) # doctest: +SKIP
control.dlyap
Python Library Documentation: function dlyap in module control.mateqn
dlyap(A, Q, C=None, E=None, method=None)
Solves the discrete-time Lyapunov equation.
X = dlyap(A, Q) solves
:math:`A X A^T - X + Q = 0`
where A and Q are square matrices of the same dimension. Further
Q must be symmetric.
dlyap(A, Q, C) solves the Sylvester equation
:math:`A X Q^T - X + C = 0`
where A and Q are square matrices.
dlyap(A, Q, None, E) solves the generalized discrete-time Lyapunov
equation
:math:`A X A^T - E X E^T + Q = 0`
where Q is a symmetric matrix and A, Q and E are square matrices of the
same dimension.
Parameters
----------
A, Q : 2D array_like
Input matrices for the Lyapunov or Sylvestor equation.
C : 2D array_like, optional
If present, solve the Sylvester equation.
E : 2D array_like, optional
If present, solve the generalized Lyapunov equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Lyapunov or Sylvester equation.
control.drss
Python Library Documentation: function drss in module control.statesp
drss(*args, **kwargs)
drss([states, outputs, inputs, strictly_proper])
Create a stable, discrete-time, random state space system.
Create a stable *discrete-time* random state space object. This
function calls `rss` using either the `dt` keyword provided by
the user or `dt` = True if not specified.
Examples
--------
>>> G = ct.drss(states=4, outputs=2, inputs=1)
>>> G.ninputs, G.noutputs, G.nstates
(1, 2, 4)
>>> G.isdtime()
True
control.dtime
Python Library Documentation: module control.dtime in control
NAME
control.dtime - Functions for manipulating discrete-time systems.
FUNCTIONS
c2d = sample_system(sysc, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
Convert a continuous-time system to discrete time by sampling.
Parameters
----------
sysc : `StateSpace` or `TransferFunction`
Continuous time system to be converted.
Ts : float > 0
Sampling period.
method : string
Method to use for conversion, e.g. 'bilinear', 'zoh' (default).
alpha : float within [0, 1]
The generalized bilinear transformation weighting parameter, which
should only be specified with method="gbt", and is ignored
otherwise. See `scipy.signal.cont2discrete`.
prewarp_frequency : float within [0, infinity)
The frequency [rad/s] at which to match with the input continuous-
time system's magnitude and phase (only valid for method='bilinear',
'tustin', or 'gbt' with alpha=0.5).
Returns
-------
sysd : LTI of the same class (`StateSpace` or `TransferFunction`)
Discrete time system, with sampling rate `Ts`.
Other Parameters
----------------
inputs : int, list of str or None, optional
Description of the system inputs. If not specified, the original
system inputs are used. See `InputOutputSystem` for more
information.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`. Only
available if the system is `StateSpace`.
name : string, optional
Set the name of the sampled system. If not specified and
if `copy_names` is False, a generic name 'sys[id]' is generated
with a unique integer id. If `copy_names` is True, the new system
name is determined by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'.
copy_names : bool, optional
If True, copy the names of the input signals, output
signals, and states to the sampled system.
Notes
-----
See `StateSpace.sample` or `TransferFunction.sample` for further
details on implementation for state space and transfer function
systems, including available methods.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> Gc.isdtime()
False
>>> Gd = ct.sample_system(Gc, 1, method='bilinear')
>>> Gd.isdtime()
True
sample_system(sysc, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
Convert a continuous-time system to discrete time by sampling.
Parameters
----------
sysc : `StateSpace` or `TransferFunction`
Continuous time system to be converted.
Ts : float > 0
Sampling period.
method : string
Method to use for conversion, e.g. 'bilinear', 'zoh' (default).
alpha : float within [0, 1]
The generalized bilinear transformation weighting parameter, which
should only be specified with method="gbt", and is ignored
otherwise. See `scipy.signal.cont2discrete`.
prewarp_frequency : float within [0, infinity)
The frequency [rad/s] at which to match with the input continuous-
time system's magnitude and phase (only valid for method='bilinear',
'tustin', or 'gbt' with alpha=0.5).
Returns
-------
sysd : LTI of the same class (`StateSpace` or `TransferFunction`)
Discrete time system, with sampling rate `Ts`.
Other Parameters
----------------
inputs : int, list of str or None, optional
Description of the system inputs. If not specified, the original
system inputs are used. See `InputOutputSystem` for more
information.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`. Only
available if the system is `StateSpace`.
name : string, optional
Set the name of the sampled system. If not specified and
if `copy_names` is False, a generic name 'sys[id]' is generated
with a unique integer id. If `copy_names` is True, the new system
name is determined by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'.
copy_names : bool, optional
If True, copy the names of the input signals, output
signals, and states to the sampled system.
Notes
-----
See `StateSpace.sample` or `TransferFunction.sample` for further
details on implementation for state space and transfer function
systems, including available methods.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> Gc.isdtime()
False
>>> Gd = ct.sample_system(Gc, 1, method='bilinear')
>>> Gd.isdtime()
True
DATA
__all__ = ['sample_system', 'c2d']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\dtime.py
control.eigensys_realization
Python Library Documentation: function eigensys_realization in module control.modelsimp
eigensys_realization(arg, r, m=None, n=None, dt=True, transpose=False)
eigensys_realization(YY, r)
Calculate ERA model based on impulse-response data.
This function computes a discrete-time system
.. math::
x[k+1] &= A x[k] + B u[k] \\\\
y[k] &= C x[k] + D u[k]
of order :math:`r` for a given impulse-response data (see [1]_).
The function can be called with 2 arguments:
* ``sysd, S = eigensys_realization(data, r)``
* ``sysd, S = eigensys_realization(YY, r)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
YY : array_like
Impulse response from which the `StateSpace` model is estimated, 1D
or 3D array.
data : `TimeResponseData`
Impulse response from which the `StateSpace` model is estimated.
r : integer
Order of model.
m : integer, optional
Number of rows in Hankel matrix. Default is 2*r.
n : integer, optional
Number of columns in Hankel matrix. Default is 2*r.
dt : True or float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the `StateSpace` model in order to match the
unit-area impulse response of python-control. Default is True.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
sys : `StateSpace`
State space model of the specified order.
S : array
Singular values of Hankel matrix. Can be used to choose a good `r`
value.
References
----------
.. [1] Samet Oymak and Necmiye Ozay, Non-asymptotic Identification of
LTI Systems from a Single Trajectory. https://arxiv.org/abs/1806.05722
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> _, YY = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(YY, r=1)
>>> T = np.linspace(0, 10, 100)
>>> response = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(response, r=1)
control.era
Python Library Documentation: function eigensys_realization in module control.modelsimp
eigensys_realization(arg, r, m=None, n=None, dt=True, transpose=False)
eigensys_realization(YY, r)
Calculate ERA model based on impulse-response data.
This function computes a discrete-time system
.. math::
x[k+1] &= A x[k] + B u[k] \\\\
y[k] &= C x[k] + D u[k]
of order :math:`r` for a given impulse-response data (see [1]_).
The function can be called with 2 arguments:
* ``sysd, S = eigensys_realization(data, r)``
* ``sysd, S = eigensys_realization(YY, r)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
YY : array_like
Impulse response from which the `StateSpace` model is estimated, 1D
or 3D array.
data : `TimeResponseData`
Impulse response from which the `StateSpace` model is estimated.
r : integer
Order of model.
m : integer, optional
Number of rows in Hankel matrix. Default is 2*r.
n : integer, optional
Number of columns in Hankel matrix. Default is 2*r.
dt : True or float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the `StateSpace` model in order to match the
unit-area impulse response of python-control. Default is True.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
sys : `StateSpace`
State space model of the specified order.
S : array
Singular values of Hankel matrix. Can be used to choose a good `r`
value.
References
----------
.. [1] Samet Oymak and Necmiye Ozay, Non-asymptotic Identification of
LTI Systems from a Single Trajectory. https://arxiv.org/abs/1806.05722
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> _, YY = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(YY, r=1)
>>> T = np.linspace(0, 10, 100)
>>> response = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(response, r=1)
control.evalfr
Python Library Documentation: function evalfr in module control.lti
evalfr(sys, x, squeeze=None)
Evaluate transfer function of LTI system at complex frequency.
Returns the complex frequency response ``sys(x)`` where `x` is `s` for
continuous-time systems and `z` for discrete-time systems, with
``m = sys.ninputs`` number of inputs and ``p = sys.noutputs`` number of
outputs.
To evaluate at a frequency omega in radians per second, enter
``x = omega * 1j`` for continuous-time systems, or
``x = exp(1j * omega * dt)`` for discrete-time systems, or use
``freqresp(sys, omega)``.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
x : complex scalar or 1D array_like
Complex frequency(s).
squeeze : bool, optional (default=True)
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep all indices (output, input and, if omega is
array_like, frequency) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_frequency_response']`.
Returns
-------
fresp : complex ndarray
The frequency response of the system. If the system is SISO and
squeeze is not True, the shape of the array matches the shape of
omega. If the system is not SISO or squeeze is False, the first two
dimensions of the array are indices for the output and input and the
remaining dimensions match omega. If `squeeze` is True then
single-dimensional axes are removed.
See Also
--------
LTI.__call__, frequency_response, bode_plot
Notes
-----
This function is a wrapper for `StateSpace.__call__` and
`TransferFunction.__call__`.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> fresp = ct.evalfr(G, 1j) # evaluate at s = 1j
control.exception
Python Library Documentation: module control.exception in control
NAME
control.exception - Exception definitions for the control package.
CLASSES
builtins.ImportError(builtins.Exception)
ControlSlycot
builtins.IndexError(builtins.LookupError)
ControlIndexError
builtins.NotImplementedError(builtins.RuntimeError)
ControlMIMONotImplemented
ControlNotImplemented
builtins.TypeError(builtins.Exception)
ControlArgument
builtins.ValueError(builtins.Exception)
ControlDimension
class ControlArgument(builtins.TypeError)
| Raised when arguments to a function are not correct.
|
| Method resolution order:
| ControlArgument
| builtins.TypeError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.TypeError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.TypeError:
|
| __new__(*args, **kwargs) class method of builtins.TypeError
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
class ControlDimension(builtins.ValueError)
| Raised when dimensions of system objects are not correct.
|
| Method resolution order:
| ControlDimension
| builtins.ValueError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.ValueError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.ValueError:
|
| __new__(*args, **kwargs) class method of builtins.ValueError
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
class ControlIndexError(builtins.IndexError)
| Raised when arguments to an indexed object are not correct.
|
| Method resolution order:
| ControlIndexError
| builtins.IndexError
| builtins.LookupError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.IndexError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.IndexError:
|
| __new__(*args, **kwargs) class method of builtins.IndexError
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
class ControlMIMONotImplemented(builtins.NotImplementedError)
| Function is not currently implemented for MIMO systems.
|
| Method resolution order:
| ControlMIMONotImplemented
| builtins.NotImplementedError
| builtins.RuntimeError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.NotImplementedError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.NotImplementedError:
|
| __new__(*args, **kwargs) class method of builtins.NotImplementedError
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
class ControlNotImplemented(builtins.NotImplementedError)
| Functionality is not yet implemented.
|
| Method resolution order:
| ControlNotImplemented
| builtins.NotImplementedError
| builtins.RuntimeError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.NotImplementedError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.NotImplementedError:
|
| __new__(*args, **kwargs) class method of builtins.NotImplementedError
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
class ControlSlycot(builtins.ImportError)
| Slycot import failed.
|
| Method resolution order:
| ControlSlycot
| builtins.ImportError
| builtins.Exception
| builtins.BaseException
| builtins.object
|
| Data descriptors defined here:
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.ImportError:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __reduce__(...)
| Helper for pickle.
|
| __str__(self, /)
| Return str(self).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.ImportError:
|
| msg
| exception message
|
| name
| module name
|
| name_from
| name imported from module
|
| path
| module path
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.Exception:
|
| __new__(*args, **kwargs) class method of builtins.Exception
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.BaseException:
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __repr__(self, /)
| Return repr(self).
|
| __setstate__(...)
|
| add_note(...)
| Exception.add_note(note) --
| add a note to the exception
|
| with_traceback(...)
| Exception.with_traceback(tb) --
| set self.__traceback__ to tb and return self.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from builtins.BaseException:
|
| __cause__
| exception cause
|
| __context__
| exception context
|
| __dict__
|
| __suppress_context__
|
| __traceback__
|
| args
FUNCTIONS
cvxopt_check()
Return True if cvxopt is installed, otherwise False.
pandas_check()
Return True if pandas is installed, otherwise False.
slycot_check()
Return True if Slycot is installed, otherwise False.
DATA
cvxopt_installed = None
pandas_installed = None
slycot_installed = None
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\exception.py
control.feedback
Python Library Documentation: function feedback in module control.bdalg
feedback(sys1, sys2=1, sign=-1, **kwargs)
Feedback interconnection between two I/O systems.
Parameters
----------
sys1, sys2 : scalar, array, or `InputOutputSystem`
I/O systems to combine.
sign : scalar, optional
The sign of feedback. `sign=-1` indicates negative feedback
(default), and `sign=1` indicates positive feedback.
Returns
-------
out : `InputOutputSystem`
Feedback interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys1` does not have as many inputs as `sys2` has outputs, or if
`sys2` does not have as many inputs as `sys1` has outputs.
NotImplementedError
If an attempt is made to perform a feedback on a MIMO `TransferFunction`
object.
See Also
--------
append, interconnect, negate, parallel, series
Notes
-----
This function is a wrapper for the `feedback` function in the I/O
system classes. It calls sys1.feedback if `sys1` is an I/O system
object. If `sys1` is a scalar, then it is converted to `sys2`'s type,
and the corresponding feedback function is used.
Examples
--------
>>> G = ct.rss(3, inputs=2, outputs=5)
>>> C = ct.rss(4, inputs=5, outputs=2)
>>> T = ct.feedback(G, C, sign=1)
>>> T.ninputs, T.noutputs, T.nstates
(2, 5, 7)
control.find_eqpt
Python Library Documentation: function find_operating_point in module control.nlsys
find_operating_point(sys, initial_state=0.0, inputs=None, outputs=None, t=0, params=None, input_indices=None, output_indices=None, state_indices=None, deriv_indices=None, derivs=None, root_method=None, root_kwargs=None, return_outputs=None, return_result=None, **kwargs)
Find an operating point for an input/output system.
An operating point for a nonlinear system is a state and input around
which a nonlinear system operates. This point is most commonly an
equilibrium point for the system, but in some cases a non-equilibrium
operating point can be used.
This function attempts to find an operating point given a specification
for the desired inputs, outputs, states, or state updates of the system.
In its simplest form, `find_operating_point` finds an equilibrium point
given either the desired input or desired output::
xeq, ueq = find_operating_point(sys, x0, u0)
xeq, ueq = find_operating_point(sys, x0, u0, y0)
The first form finds an equilibrium point for a given input u0 based on
an initial guess x0. The second form fixes the desired output values
and uses x0 and u0 as an initial guess to find the equilibrium point.
If no equilibrium point can be found, the function returns the
operating point that minimizes the state update (state derivative for
continuous-time systems, state difference for discrete-time systems).
More complex operating points can be found by specifying which states,
inputs, or outputs should be used in computing the operating point, as
well as desired values of the states, inputs, outputs, or state
updates.
Parameters
----------
sys : `NonlinearIOSystem`
I/O system for which the operating point is sought.
initial_state (or x0) : list of initial state values
Initial guess for the value of the state near the operating point.
inputs (or u0) : list of input values, optional
If `y0` is not specified, sets the value of the input. If `y0` is
given, provides an initial guess for the value of the input. Can
be omitted if the system does not have any inputs.
outputs (or y0) : list of output values, optional
If specified, sets the desired values of the outputs at the
operating point.
t : float, optional
Evaluation time, for time-varying systems.
params : dict, optional
Parameter values for the system. Passed to the evaluation functions
for the system as default values, overriding internal defaults.
input_indices (or iu) : list of input indices, optional
If specified, only the inputs with the given indices will be fixed at
the specified values in solving for an operating point. All other
inputs will be varied. Input indices can be listed in any order.
output_indices (or iy) : list of output indices, optional
If specified, only the outputs with the given indices will be fixed
at the specified values in solving for an operating point. All other
outputs will be varied. Output indices can be listed in any order.
state_indices (or ix) : list of state indices, optional
If specified, states with the given indices will be fixed at the
specified values in solving for an operating point. All other
states will be varied. State indices can be listed in any order.
derivs (or dx0) : list of update values, optional
If specified, the value of update map must match the listed value
instead of the default value for an equilibrium point.
deriv_indices (or idx) : list of state indices, optional
If specified, state updates with the given indices will have their
update maps fixed at the values given in `dx0`. All other update
values will be ignored in solving for an operating point. State
indices can be listed in any order. By default, all updates will be
fixed at `dx0` in searching for an operating point.
root_method : str, optional
Method to find the operating point. If specified, this parameter
is passed to the `scipy.optimize.root` function.
root_kwargs : dict, optional
Additional keyword arguments to pass `scipy.optimize.root`.
return_outputs : bool, optional
If True, return the value of outputs at the operating point.
return_result : bool, optional
If True, return the `result` option from the
`scipy.optimize.root` function used to compute the
operating point.
Returns
-------
op_point : `OperatingPoint`
The solution represented as an `OperatingPoint` object. The main
attributes are `states` and `inputs`, which represent the state and
input arrays at the operating point. If accessed as a tuple, returns
`states`, `inputs`, and optionally `outputs` and `result` based on the
`return_outputs` and `return_result` parameters. See `OperatingPoint`
for a description of other attributes.
op_point.states : array
State vector at the operating point.
op_point.inputs : array
Input vector at the operating point.
op_point.outputs : array, optional
Output vector at the operating point.
Notes
-----
For continuous-time systems, equilibrium points are defined as points
for which the right hand side of the differential equation is zero:
:math:`f(t, x_e, u_e) = 0`. For discrete-time systems, equilibrium
points are defined as points for which the right hand side of the
difference equation returns the current state: :math:`f(t, x_e, u_e) =
x_e`.
Operating points are found using the `scipy.optimize.root`
function, which will attempt to find states and inputs that satisfy the
specified constraints. If no solution is found and `return_result` is
False, the returned state and input for the operating point will be
None. If `return_result` is True, then the return values from
`scipy.optimize.root` will be returned (but may not be valid).
If `root_method` is set to 'lm', then the least squares solution (in
the free variables) will be returned.
control.find_operating_point
Python Library Documentation: function find_operating_point in module control.nlsys
find_operating_point(sys, initial_state=0.0, inputs=None, outputs=None, t=0, params=None, input_indices=None, output_indices=None, state_indices=None, deriv_indices=None, derivs=None, root_method=None, root_kwargs=None, return_outputs=None, return_result=None, **kwargs)
Find an operating point for an input/output system.
An operating point for a nonlinear system is a state and input around
which a nonlinear system operates. This point is most commonly an
equilibrium point for the system, but in some cases a non-equilibrium
operating point can be used.
This function attempts to find an operating point given a specification
for the desired inputs, outputs, states, or state updates of the system.
In its simplest form, `find_operating_point` finds an equilibrium point
given either the desired input or desired output::
xeq, ueq = find_operating_point(sys, x0, u0)
xeq, ueq = find_operating_point(sys, x0, u0, y0)
The first form finds an equilibrium point for a given input u0 based on
an initial guess x0. The second form fixes the desired output values
and uses x0 and u0 as an initial guess to find the equilibrium point.
If no equilibrium point can be found, the function returns the
operating point that minimizes the state update (state derivative for
continuous-time systems, state difference for discrete-time systems).
More complex operating points can be found by specifying which states,
inputs, or outputs should be used in computing the operating point, as
well as desired values of the states, inputs, outputs, or state
updates.
Parameters
----------
sys : `NonlinearIOSystem`
I/O system for which the operating point is sought.
initial_state (or x0) : list of initial state values
Initial guess for the value of the state near the operating point.
inputs (or u0) : list of input values, optional
If `y0` is not specified, sets the value of the input. If `y0` is
given, provides an initial guess for the value of the input. Can
be omitted if the system does not have any inputs.
outputs (or y0) : list of output values, optional
If specified, sets the desired values of the outputs at the
operating point.
t : float, optional
Evaluation time, for time-varying systems.
params : dict, optional
Parameter values for the system. Passed to the evaluation functions
for the system as default values, overriding internal defaults.
input_indices (or iu) : list of input indices, optional
If specified, only the inputs with the given indices will be fixed at
the specified values in solving for an operating point. All other
inputs will be varied. Input indices can be listed in any order.
output_indices (or iy) : list of output indices, optional
If specified, only the outputs with the given indices will be fixed
at the specified values in solving for an operating point. All other
outputs will be varied. Output indices can be listed in any order.
state_indices (or ix) : list of state indices, optional
If specified, states with the given indices will be fixed at the
specified values in solving for an operating point. All other
states will be varied. State indices can be listed in any order.
derivs (or dx0) : list of update values, optional
If specified, the value of update map must match the listed value
instead of the default value for an equilibrium point.
deriv_indices (or idx) : list of state indices, optional
If specified, state updates with the given indices will have their
update maps fixed at the values given in `dx0`. All other update
values will be ignored in solving for an operating point. State
indices can be listed in any order. By default, all updates will be
fixed at `dx0` in searching for an operating point.
root_method : str, optional
Method to find the operating point. If specified, this parameter
is passed to the `scipy.optimize.root` function.
root_kwargs : dict, optional
Additional keyword arguments to pass `scipy.optimize.root`.
return_outputs : bool, optional
If True, return the value of outputs at the operating point.
return_result : bool, optional
If True, return the `result` option from the
`scipy.optimize.root` function used to compute the
operating point.
Returns
-------
op_point : `OperatingPoint`
The solution represented as an `OperatingPoint` object. The main
attributes are `states` and `inputs`, which represent the state and
input arrays at the operating point. If accessed as a tuple, returns
`states`, `inputs`, and optionally `outputs` and `result` based on the
`return_outputs` and `return_result` parameters. See `OperatingPoint`
for a description of other attributes.
op_point.states : array
State vector at the operating point.
op_point.inputs : array
Input vector at the operating point.
op_point.outputs : array, optional
Output vector at the operating point.
Notes
-----
For continuous-time systems, equilibrium points are defined as points
for which the right hand side of the differential equation is zero:
:math:`f(t, x_e, u_e) = 0`. For discrete-time systems, equilibrium
points are defined as points for which the right hand side of the
difference equation returns the current state: :math:`f(t, x_e, u_e) =
x_e`.
Operating points are found using the `scipy.optimize.root`
function, which will attempt to find states and inputs that satisfy the
specified constraints. If no solution is found and `return_result` is
False, the returned state and input for the operating point will be
None. If `return_result` is True, then the return values from
`scipy.optimize.root` will be returned (but may not be valid).
If `root_method` is set to 'lm', then the least squares solution (in
the free variables) will be returned.
control.forced_response
Python Library Documentation: function forced_response in module control.timeresp
forced_response(sysdata, timepts=None, inputs=0.0, initial_state=0.0, transpose=False, params=None, interpolate=False, return_states=None, squeeze=None, **kwargs)
Compute the output of a linear system given the input.
As a convenience for parameters `U`, `X0`: Numbers (scalars) are
converted to constant arrays with the correct shape. The correct shape
is inferred from arguments `sys` and `T`.
For information on the **shape** of parameters `U`, `T`, `X0` and
return values `T`, `yout`, `xout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which forced response is computed.
timepts (or T) : array_like, optional for discrete LTI `sys`
Time steps at which the input is defined; values must be evenly
spaced. If None, `inputs` must be given and ``len(inputs)`` time
steps of `sys.dt` are simulated. If `sys.dt` is None or True
(undetermined time step), a time step of 1.0 is assumed.
inputs (or U) : array_like or float, optional
Input array giving input at each time in `timepts`. If `inputs` is
None or 0, `timepts` must be given, even for discrete-time
systems. In this case, for continuous-time systems, a direct
calculation of the matrix exponential is used, which is faster than
the general interpolating algorithm used otherwise.
initial_state (or X0) : array_like or float, default=0.
Initial condition.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
transpose : bool, default=False
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`).
interpolate : bool, default=False
If True and system is a discrete-time system, the input will
be interpolated between the given time steps and the output
will be given at system sampling rate. Otherwise, only return
the output at the times given in `T`. No effect on continuous
time simulations.
return_states (or return_x) : bool, default=None
Used if the time response data is assigned to a tuple. If False,
return only the time and output vectors. If True, also return the
the state vector. If None, determine the returned variables by
`config.defaults['forced_response.return_x']`, which was True
before version 0.9 and is False since then.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` is True, remove single-dimensional entries from
the shape of the output even if the system is not SISO. If
`squeeze` is False, keep the output as a 2D array (indexed by
the output number and time) even if the system is SISO. The default
behavior can be overridden by
`config.defaults['control.squeeze_time_response']`.
Returns
-------
resp : `TimeResponseData` or `TimeResponseList`
Input/output response data object. When accessed as a tuple,
returns ``(time, outputs)`` (default) or ``(time, outputs, states)``
if `return_x` is True. The `~TimeResponseData.plot` method can
be used to create a plot of the time response(s) (see
`time_response_plot` for more information). If `sysdata` is a list
of systems, a `TimeResponseList` object is returned, which acts as
a list of `TimeResponseData` objects with a `~TimeResponseList.plot`
method that will plot responses as multiple traces. See
`time_response_plot` for additional information.
resp.time : array
Time values of the output.
resp.outputs : array
Response of the system. If the system is SISO and `squeeze` is not
True, the array is 1D (indexed by time). If the system is not SISO or
`squeeze` is False, the array is 2D (indexed by output and time).
resp.states : array
Time evolution of the state vector, represented as a 2D array
indexed by state and time.
resp.inputs : array
Input(s) to the system, indexed by input and time.
See Also
--------
impulse_response, initial_response, input_output_response, step_response, time_response_plot
Notes
-----
For discrete-time systems, the input/output response is computed
using the `scipy.signal.dlsim` function.
For continuous-time systems, the output is computed using the
matrix exponential exp(A t) and assuming linear interpolation
of the inputs between time points.
If a nonlinear I/O system is passed to `forced_response`, the
`input_output_response` function is called instead. The main
difference between `input_output_response` and `forced_response`
is that `forced_response` is specialized (and optimized) for
linear systems.
(legacy) The return value of the system can also be accessed by
assigning the function to a tuple of length 2 (time, output) or of
length 3 (time, output, state) if `return_x` is True.
Examples
--------
>>> G = ct.rss(4)
>>> timepts = np.linspace(0, 10)
>>> inputs = np.sin(timepts)
>>> tout, yout = ct.forced_response(G, timepts, inputs)
See :ref:`time-series-convention` and
:ref:`package-configuration-parameters`.
control.frd
Python Library Documentation: function frd in module control.frdata
frd(*args, **kwargs)
frd(frdata, omega[, dt])
Construct a frequency response data (FRD) model.
A frequency response data model stores the (measured) frequency response
of a system. This factory function can be called in different ways:
``frd(frdata, omega)``
Create an frd model with the given response data, in the form of
complex response vector, at matching frequencies `omega` [in rad/s].
``frd(sys, omega)``
Convert an LTI system into an frd model with data at frequencies
`omega`.
Parameters
----------
frdata : array_like or LTI system
Complex vector with the system response or an LTI system that can
be used to compute the frequency response at a list of frequencies.
sys : `StateSpace` or `TransferFunction`
A linear system that will be evaluated for frequency response data.
omega : array_like
Vector of frequencies at which the response is evaluated.
dt : float, True, or None
System timebase.
smooth : bool, optional
If True, create an interpolation function that allows the
frequency response to be computed at any frequency within the range
of frequencies give in `omega`. If False (default),
frequency response can only be obtained at the frequencies
specified in `omega`.
Returns
-------
sys : `FrequencyResponseData`
New frequency response data system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
input_prefix, output_prefix : string, optional
Set the prefix for input and output signals. Defaults = 'u', 'y'.
name : string, optional
Set the name of the system. If unspecified and the system is
sampled from an existing system, the new system name is determined
by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'. Otherwise, a generic
name 'sys[id]' is generated with a unique integer id
See Also
--------
FrequencyResponseData, frequency_response, ss, tf
Examples
--------
>>> # Create from measurements
>>> response = [1.0, 1.0, 0.5]
>>> omega = [1, 10, 100]
>>> F = ct.frd(response, omega)
>>> G = ct.tf([1], [1, 1])
>>> omega = [1, 10, 100]
>>> F = ct.frd(G, omega)
control.frdata
Python Library Documentation: module control.frdata in control
NAME
control.frdata - Frequency response data representation and functions.
DESCRIPTION
This module contains the `FrequencyResponseData` (FRD) class and also
functions that operate on FRD data.
CLASSES
control.lti.LTI(control.iosys.InputOutputSystem)
FrequencyResponseData
FRD = class FrequencyResponseData(control.lti.LTI)
| FRD(*args, **kwargs)
|
| FrequencyResponseData(frdata, omega[, smooth])
|
| Input/output model defined by frequency response data (FRD).
|
| The FrequencyResponseData (FRD) class is used to represent systems in
| frequency response data form. It can be created manually using the
| class constructor, using the `frd` factory function, or
| via the `frequency_response` function.
|
| Parameters
| ----------
| frdata : 1D or 3D complex array_like
| The frequency response at each frequency point. If 1D, the system is
| assumed to be SISO. If 3D, the system is MIMO, with the first
| dimension corresponding to the output index of the FRD, the second
| dimension corresponding to the input index, and the 3rd dimension
| corresponding to the frequency points in `omega`. When accessed as an
| attribute, `frdata` is always stored as a 3D array.
| omega : iterable of real frequencies
| List of monotonically increasing frequency points for the response.
| smooth : bool, optional
| If True, create an interpolation function that allows the frequency
| response to be computed at any frequency within the range of
| frequencies give in `omega`. If False (default), frequency response
| can only be obtained at the frequencies specified in `omega`.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
| squeeze : bool
| By default, if a system is single-input, single-output (SISO) then
| the outputs (and inputs) are returned as a 1D array (indexed by
| frequency) and if a system is multi-input or multi-output, then the
| outputs are returned as a 2D array (indexed by output and
| frequency) or a 3D array (indexed by output, trace, and frequency).
| If `squeeze` = True, access to the output response will remove
| single-dimensional entries from the shape of the inputs and outputs
| even if the system is not SISO. If `squeeze` = False, the output is
| returned as a 3D array (indexed by the output, input, and
| frequency) even if the system is SISO. The default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| sysname : str or None
| Name of the system that generated the data.
|
| Attributes
| ----------
| complex : array
| Complex frequency response, indexed by output index, input index, and
| frequency point, with squeeze processing.
| magnitude : array
| Magnitude of the frequency response, indexed by output index, input
| index, and frequency point, with squeeze processing.
| phase : array
| Phase of the frequency response, indexed by output index, input index,
| and frequency point, with squeeze processing.
| frequency : 1D array
| Array of frequency points for which data are available.
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : array of str
| Names for the input and output signals.
| name : str
| System name. For data generated using
| `frequency_response`, stores the name of the
| system that created the data.
|
| Other Parameters
| ----------------
| plot_type : str, optional
| Set the type of plot to generate with `~FrequencyResponseData.plot`
| ('bode', 'nichols').
| title : str, optional
| Set the title to use when plotting.
| plot_magnitude, plot_phase : bool, optional
| If set to False, don't plot the magnitude or phase, respectively.
| return_magphase : bool, optional
| If True, then a frequency response data object will enumerate
| as a tuple of the form ``(mag, phase, omega)`` where where `mag`
| is the magnitude (absolute value, not dB or log10) of the system
| frequency response, `phase` is the wrapped phase in radians of the
| system frequency response, and `omega` is the (sorted) frequencies
| at which the response was evaluated.
|
| See Also
| --------
| frd, frequency_response, InputOutputSystem, TransferFunction
|
| Notes
| -----
| The main data members are `omega` and `frdata`, where `omega` is a 1D
| array of frequency points and and `frdata` is a 3D array of frequency
| responses, with the first dimension corresponding to the output index of
| the FRD, the second dimension corresponding to the input index, and the
| 3rd dimension corresponding to the frequency points in omega. For example,
|
| >>> frdata[2,5,:] = numpy.array([1., 0.8-0.2j, 0.2-0.8j]) # doctest: +SKIP
|
| means that the frequency response from the 6th input to the 3rd output at
| the frequencies defined in omega is set to the array above, i.e. the rows
| represent the outputs and the columns represent the inputs.
|
| A frequency response data object is callable and returns the value of the
| transfer function evaluated at a point in the complex plane (must be on
| the imaginary axis). See `FrequencyResponseData.__call__`
| for a more detailed description.
|
| Subsystem response corresponding to selected input/output pairs can be
| created by indexing the frequency response data object::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| Method resolution order:
| FrequencyResponseData
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x=None, squeeze=None, return_magphase=None)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems. For a frequency response data
| object, the argument should be an imaginary number (since only the
| frequency response is defined) and only the imaginary component of
| `x` will be used.
|
| By default, a (complex) scalar will be returned for SISO systems
| and a p x m array will be return for MIMO systems with m inputs and
| p outputs. This can be changed using the `squeeze` keyword.
|
| To evaluate at a frequency `omega` in radians per second, enter ``x
| = omega * 1j`` for continuous-time systems, ``x = exp(1j * omega *
| dt)`` for discrete-time systems, or use the
| `~LTI.frequency_response` method.
|
| If `x` is not given, this function creates a copy of a frequency
| response data object with a different set of output settings.
|
| Parameters
| ----------
| x : complex scalar or 1D array_like
| Imaginary value(s) at which frequency response will be evaluated.
| The real component of `x` is ignored. If not specified, return
| a copy of the frequency response data object with updated
| settings for output processing (`squeeze`, `return_magphase`).
| squeeze : bool, optional
| Squeeze output, as described below. Default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| return_magphase : bool, optional
| (`x` = None only) If True, then a frequency response data object
| will enumerate as a tuple of the form ``(mag, phase, omega)``
| where where `mag` is the magnitude (absolute value, not dB or
| log10) of the system frequency response, `phase` is the wrapped
| phase in radians of the system frequency response, and `omega` is
| the (sorted) frequencies at which the response was evaluated.
|
| Returns
| -------
| frdata : complex ndarray
| The value of the system transfer function at `x`. If the system
| is SISO and `squeeze` is not True, the shape of the array matches
| the shape of `x`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for the
| output and input and the remaining dimensions match `x`. If
| `squeeze` is True then single-dimensional axes are removed.
|
| Raises
| ------
| ValueError
| If `s` is not purely imaginary, because `FrequencyResponseData`
| systems are only defined at imaginary values (corresponding to
| real frequencies).
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| FrequencyResponseData(response, omega[, dt])
|
| Construct a frequency response data (FRD) object.
|
| The default constructor is `FrequencyResponseData(response, omega)`,
| where `omega` is an iterable of frequency points and `response` is
| the matching frequency data. If `response` is a single list, 1D
| array, or tuple, a SISO system description is assumed. `response`
| can also be a 2D array, in which case a MIMO response is created.
| To call the copy constructor, call `FrequencyResponseData(sys)`,
| where `sys` is a FRD object. The timebase for the frequency
| response can be provided using an optional third argument or the
| `dt` keyword.
|
| To construct frequency response data for an existing LTI object,
| other than an FRD, call `FrequencyResponseData(sys, omega)`. This
| functionality can also be obtained using `frequency_response`
| (which has additional options available).
|
| See `FrequencyResponseData` and `frd` for more
| information.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right Multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self)
| String representation of the transfer function.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to FRD if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `LTI`
| System to be appended.
|
| Returns
| -------
| sys : `FrequencyResponseData`
| System model with `other` appended to `self`.
|
| eval(self, omega, squeeze=None)
| Evaluate a transfer function at a frequency point.
|
| Note that a "normal" FRD only returns values for which there is an
| entry in the `omega` vector. An interpolating FRD can return
| intermediate values.
|
| Parameters
| ----------
| omega : float or 1D array_like
| Frequency(s) for evaluation, in radians per second.
| squeeze : bool, optional
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep all indices (output, input and, if
| `omega` is array_like, frequency) even if the system is
| SISO. The default value can be set using
| `config.defaults['control.squeeze_frequency_response']`.
|
| Returns
| -------
| frdata : complex ndarray
| The frequency response of the system. If the system is SISO
| and `squeeze` is not True, the shape of the array matches the
| shape of `omega`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for
| the output and input and the remaining dimensions match `omega`.
| If `squeeze` is True then single-dimensional axes are removed.
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two FRD objects.
|
| Parameters
| ----------
| other : `LTI`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `FrequencyResponseData.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| plot(self, plot_type=None, *args, **kwargs)
| Plot the frequency response using Bode or singular values plot.
|
| Plot the frequency response using either a standard Bode plot
| (plot_type='bode', default) or a singular values plot
| (plot_type='svplot'). See `bode_plot` and `singular_values_plot`
| for more detailed descriptions.
|
| to_pandas(self)
| Convert response data to pandas data frame.
|
| Creates a pandas data frame for the value of the frequency
| response at each `omega`. The frequency response values are
| labeled in the form "H_{<out>, <in>}" where "<out>" and "<in>"
| are replaced with the output and input labels for the system.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| complex
| Complex value of the frequency response.
|
| Value of the frequency response as a complex number, indexed by
| either the output and frequency (if only a single input is given)
| or the output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| frequency
| Frequencies at which the response is evaluated.
|
| :type: 1D array
|
| fresp
|
| magnitude
| Magnitude of the frequency response.
|
| Magnitude of the frequency response, indexed by either the output
| and frequency (if only a single input is given) or the output,
| input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| phase
| Phase of the frequency response.
|
| Phase of the frequency response in radians/sec, indexed by either
| the output and frequency (if only a single input is given) or the
| output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| response
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| ninputs = 1
|
| noutputs = 1
|
| squeeze = None
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| dcgain(self)
| Return the zero-frequency (DC) gain.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
class FrequencyResponseData(control.lti.LTI)
| FrequencyResponseData(*args, **kwargs)
|
| FrequencyResponseData(frdata, omega[, smooth])
|
| Input/output model defined by frequency response data (FRD).
|
| The FrequencyResponseData (FRD) class is used to represent systems in
| frequency response data form. It can be created manually using the
| class constructor, using the `frd` factory function, or
| via the `frequency_response` function.
|
| Parameters
| ----------
| frdata : 1D or 3D complex array_like
| The frequency response at each frequency point. If 1D, the system is
| assumed to be SISO. If 3D, the system is MIMO, with the first
| dimension corresponding to the output index of the FRD, the second
| dimension corresponding to the input index, and the 3rd dimension
| corresponding to the frequency points in `omega`. When accessed as an
| attribute, `frdata` is always stored as a 3D array.
| omega : iterable of real frequencies
| List of monotonically increasing frequency points for the response.
| smooth : bool, optional
| If True, create an interpolation function that allows the frequency
| response to be computed at any frequency within the range of
| frequencies give in `omega`. If False (default), frequency response
| can only be obtained at the frequencies specified in `omega`.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
| squeeze : bool
| By default, if a system is single-input, single-output (SISO) then
| the outputs (and inputs) are returned as a 1D array (indexed by
| frequency) and if a system is multi-input or multi-output, then the
| outputs are returned as a 2D array (indexed by output and
| frequency) or a 3D array (indexed by output, trace, and frequency).
| If `squeeze` = True, access to the output response will remove
| single-dimensional entries from the shape of the inputs and outputs
| even if the system is not SISO. If `squeeze` = False, the output is
| returned as a 3D array (indexed by the output, input, and
| frequency) even if the system is SISO. The default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| sysname : str or None
| Name of the system that generated the data.
|
| Attributes
| ----------
| complex : array
| Complex frequency response, indexed by output index, input index, and
| frequency point, with squeeze processing.
| magnitude : array
| Magnitude of the frequency response, indexed by output index, input
| index, and frequency point, with squeeze processing.
| phase : array
| Phase of the frequency response, indexed by output index, input index,
| and frequency point, with squeeze processing.
| frequency : 1D array
| Array of frequency points for which data are available.
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : array of str
| Names for the input and output signals.
| name : str
| System name. For data generated using
| `frequency_response`, stores the name of the
| system that created the data.
|
| Other Parameters
| ----------------
| plot_type : str, optional
| Set the type of plot to generate with `~FrequencyResponseData.plot`
| ('bode', 'nichols').
| title : str, optional
| Set the title to use when plotting.
| plot_magnitude, plot_phase : bool, optional
| If set to False, don't plot the magnitude or phase, respectively.
| return_magphase : bool, optional
| If True, then a frequency response data object will enumerate
| as a tuple of the form ``(mag, phase, omega)`` where where `mag`
| is the magnitude (absolute value, not dB or log10) of the system
| frequency response, `phase` is the wrapped phase in radians of the
| system frequency response, and `omega` is the (sorted) frequencies
| at which the response was evaluated.
|
| See Also
| --------
| frd, frequency_response, InputOutputSystem, TransferFunction
|
| Notes
| -----
| The main data members are `omega` and `frdata`, where `omega` is a 1D
| array of frequency points and and `frdata` is a 3D array of frequency
| responses, with the first dimension corresponding to the output index of
| the FRD, the second dimension corresponding to the input index, and the
| 3rd dimension corresponding to the frequency points in omega. For example,
|
| >>> frdata[2,5,:] = numpy.array([1., 0.8-0.2j, 0.2-0.8j]) # doctest: +SKIP
|
| means that the frequency response from the 6th input to the 3rd output at
| the frequencies defined in omega is set to the array above, i.e. the rows
| represent the outputs and the columns represent the inputs.
|
| A frequency response data object is callable and returns the value of the
| transfer function evaluated at a point in the complex plane (must be on
| the imaginary axis). See `FrequencyResponseData.__call__`
| for a more detailed description.
|
| Subsystem response corresponding to selected input/output pairs can be
| created by indexing the frequency response data object::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| Method resolution order:
| FrequencyResponseData
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x=None, squeeze=None, return_magphase=None)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems. For a frequency response data
| object, the argument should be an imaginary number (since only the
| frequency response is defined) and only the imaginary component of
| `x` will be used.
|
| By default, a (complex) scalar will be returned for SISO systems
| and a p x m array will be return for MIMO systems with m inputs and
| p outputs. This can be changed using the `squeeze` keyword.
|
| To evaluate at a frequency `omega` in radians per second, enter ``x
| = omega * 1j`` for continuous-time systems, ``x = exp(1j * omega *
| dt)`` for discrete-time systems, or use the
| `~LTI.frequency_response` method.
|
| If `x` is not given, this function creates a copy of a frequency
| response data object with a different set of output settings.
|
| Parameters
| ----------
| x : complex scalar or 1D array_like
| Imaginary value(s) at which frequency response will be evaluated.
| The real component of `x` is ignored. If not specified, return
| a copy of the frequency response data object with updated
| settings for output processing (`squeeze`, `return_magphase`).
| squeeze : bool, optional
| Squeeze output, as described below. Default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| return_magphase : bool, optional
| (`x` = None only) If True, then a frequency response data object
| will enumerate as a tuple of the form ``(mag, phase, omega)``
| where where `mag` is the magnitude (absolute value, not dB or
| log10) of the system frequency response, `phase` is the wrapped
| phase in radians of the system frequency response, and `omega` is
| the (sorted) frequencies at which the response was evaluated.
|
| Returns
| -------
| frdata : complex ndarray
| The value of the system transfer function at `x`. If the system
| is SISO and `squeeze` is not True, the shape of the array matches
| the shape of `x`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for the
| output and input and the remaining dimensions match `x`. If
| `squeeze` is True then single-dimensional axes are removed.
|
| Raises
| ------
| ValueError
| If `s` is not purely imaginary, because `FrequencyResponseData`
| systems are only defined at imaginary values (corresponding to
| real frequencies).
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| FrequencyResponseData(response, omega[, dt])
|
| Construct a frequency response data (FRD) object.
|
| The default constructor is `FrequencyResponseData(response, omega)`,
| where `omega` is an iterable of frequency points and `response` is
| the matching frequency data. If `response` is a single list, 1D
| array, or tuple, a SISO system description is assumed. `response`
| can also be a 2D array, in which case a MIMO response is created.
| To call the copy constructor, call `FrequencyResponseData(sys)`,
| where `sys` is a FRD object. The timebase for the frequency
| response can be provided using an optional third argument or the
| `dt` keyword.
|
| To construct frequency response data for an existing LTI object,
| other than an FRD, call `FrequencyResponseData(sys, omega)`. This
| functionality can also be obtained using `frequency_response`
| (which has additional options available).
|
| See `FrequencyResponseData` and `frd` for more
| information.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right Multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self)
| String representation of the transfer function.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to FRD if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `LTI`
| System to be appended.
|
| Returns
| -------
| sys : `FrequencyResponseData`
| System model with `other` appended to `self`.
|
| eval(self, omega, squeeze=None)
| Evaluate a transfer function at a frequency point.
|
| Note that a "normal" FRD only returns values for which there is an
| entry in the `omega` vector. An interpolating FRD can return
| intermediate values.
|
| Parameters
| ----------
| omega : float or 1D array_like
| Frequency(s) for evaluation, in radians per second.
| squeeze : bool, optional
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep all indices (output, input and, if
| `omega` is array_like, frequency) even if the system is
| SISO. The default value can be set using
| `config.defaults['control.squeeze_frequency_response']`.
|
| Returns
| -------
| frdata : complex ndarray
| The frequency response of the system. If the system is SISO
| and `squeeze` is not True, the shape of the array matches the
| shape of `omega`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for
| the output and input and the remaining dimensions match `omega`.
| If `squeeze` is True then single-dimensional axes are removed.
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two FRD objects.
|
| Parameters
| ----------
| other : `LTI`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `FrequencyResponseData.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| plot(self, plot_type=None, *args, **kwargs)
| Plot the frequency response using Bode or singular values plot.
|
| Plot the frequency response using either a standard Bode plot
| (plot_type='bode', default) or a singular values plot
| (plot_type='svplot'). See `bode_plot` and `singular_values_plot`
| for more detailed descriptions.
|
| to_pandas(self)
| Convert response data to pandas data frame.
|
| Creates a pandas data frame for the value of the frequency
| response at each `omega`. The frequency response values are
| labeled in the form "H_{<out>, <in>}" where "<out>" and "<in>"
| are replaced with the output and input labels for the system.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| complex
| Complex value of the frequency response.
|
| Value of the frequency response as a complex number, indexed by
| either the output and frequency (if only a single input is given)
| or the output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| frequency
| Frequencies at which the response is evaluated.
|
| :type: 1D array
|
| fresp
|
| magnitude
| Magnitude of the frequency response.
|
| Magnitude of the frequency response, indexed by either the output
| and frequency (if only a single input is given) or the output,
| input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| phase
| Phase of the frequency response.
|
| Phase of the frequency response in radians/sec, indexed by either
| the output and frequency (if only a single input is given) or the
| output, input, and frequency (for multi-input systems). See
| `FrequencyResponseData.squeeze` for a description of how this
| can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets.
|
| :type: 1D, 2D, or 3D array
|
| response
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| ninputs = 1
|
| noutputs = 1
|
| squeeze = None
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| dcgain(self)
| Return the zero-frequency (DC) gain.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
FUNCTIONS
frd(*args, **kwargs)
frd(frdata, omega[, dt])
Construct a frequency response data (FRD) model.
A frequency response data model stores the (measured) frequency response
of a system. This factory function can be called in different ways:
``frd(frdata, omega)``
Create an frd model with the given response data, in the form of
complex response vector, at matching frequencies `omega` [in rad/s].
``frd(sys, omega)``
Convert an LTI system into an frd model with data at frequencies
`omega`.
Parameters
----------
frdata : array_like or LTI system
Complex vector with the system response or an LTI system that can
be used to compute the frequency response at a list of frequencies.
sys : `StateSpace` or `TransferFunction`
A linear system that will be evaluated for frequency response data.
omega : array_like
Vector of frequencies at which the response is evaluated.
dt : float, True, or None
System timebase.
smooth : bool, optional
If True, create an interpolation function that allows the
frequency response to be computed at any frequency within the range
of frequencies give in `omega`. If False (default),
frequency response can only be obtained at the frequencies
specified in `omega`.
Returns
-------
sys : `FrequencyResponseData`
New frequency response data system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
input_prefix, output_prefix : string, optional
Set the prefix for input and output signals. Defaults = 'u', 'y'.
name : string, optional
Set the name of the system. If unspecified and the system is
sampled from an existing system, the new system name is determined
by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'. Otherwise, a generic
name 'sys[id]' is generated with a unique integer id
See Also
--------
FrequencyResponseData, frequency_response, ss, tf
Examples
--------
>>> # Create from measurements
>>> response = [1.0, 1.0, 0.5]
>>> omega = [1, 10, 100]
>>> F = ct.frd(response, omega)
>>> G = ct.tf([1], [1, 1])
>>> omega = [1, 10, 100]
>>> F = ct.frd(G, omega)
DATA
__all__ = ['FrequencyResponseData', 'FRD', 'frd']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\frdata.py
control.freqplot
Python Library Documentation: module control.freqplot in control
NAME
control.freqplot - Frequency domain plots for control systems.
DESCRIPTION
This module contains some standard control system plots: Bode plots,
Nyquist plots and other frequency response plots. The code for
Nichols charts is in nichols.py. The code for pole-zero diagrams is
in pzmap.py and rlocus.py.
CLASSES
builtins.list(builtins.object)
FrequencyResponseList
NyquistResponseList
builtins.object
NyquistResponseData
class FrequencyResponseList(builtins.list)
| FrequencyResponseList(iterable=(), /)
|
| List of FrequencyResponseData objects with plotting capability.
|
| This class consists of a list of `FrequencyResponseData` objects.
| It is a subclass of the Python `list` class, with a `plot` method that
| plots the individual `FrequencyResponseData` objects.
|
| Method resolution order:
| FrequencyResponseList
| builtins.list
| builtins.object
|
| Methods defined here:
|
| plot(self, *args, plot_type=None, **kwargs)
| Plot a list of frequency responses.
|
| See `FrequencyResponseData.plot` for details.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.list:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, index, /)
| Return self[index].
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(self, /)
| Return a reverse iterator over the list.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(self, /)
| Return the size of the list in memory, in bytes.
|
| append(self, object, /)
| Append object to the end of the list.
|
| clear(self, /)
| Remove all items from list.
|
| copy(self, /)
| Return a shallow copy of the list.
|
| count(self, value, /)
| Return number of occurrences of value.
|
| extend(self, iterable, /)
| Extend list by appending elements from the iterable.
|
| index(self, value, start=0, stop=9223372036854775807, /)
| Return first index of value.
|
| Raises ValueError if the value is not present.
|
| insert(self, index, object, /)
| Insert object before index.
|
| pop(self, index=-1, /)
| Remove and return item at index (default last).
|
| Raises IndexError if list is empty or index is out of range.
|
| remove(self, value, /)
| Remove first occurrence of value.
|
| Raises ValueError if the value is not present.
|
| reverse(self, /)
| Reverse *IN PLACE*.
|
| sort(self, /, *, key=None, reverse=False)
| Sort the list in ascending order and return None.
|
| The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
| order of two equal elements is maintained).
|
| If a key function is given, apply it once to each list item and sort them,
| ascending or descending, according to their function values.
|
| The reverse flag can be set to sort in descending order.
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.list:
|
| __class_getitem__(...)
| See PEP 585
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.list:
|
| __new__(*args, **kwargs) class method of builtins.list
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from builtins.list:
|
| __hash__ = None
class NyquistResponseData(builtins.object)
| NyquistResponseData(count, contour, response, dt, sysname=None, return_contour=False)
|
| Nyquist response data object.
|
| Nyquist contour analysis allows the stability and robustness of a
| closed loop linear system to be evaluated using the open loop response
| of the loop transfer function. The NyquistResponseData class is used
| by the `nyquist_response` function to return the
| response of a linear system along the Nyquist 'D' contour. The
| response object can be used to obtain information about the Nyquist
| response or to generate a Nyquist plot.
|
| Parameters
| ----------
| count : integer
| Number of encirclements of the -1 point by the Nyquist curve for
| a system evaluated along the Nyquist contour.
| contour : complex array
| The Nyquist 'D' contour, with appropriate indentations to avoid
| open loop poles and zeros near/on the imaginary axis.
| response : complex array
| The value of the linear system under study along the Nyquist contour.
| dt : None or float
| The system timebase.
| sysname : str
| The name of the system being analyzed.
| return_contour : bool
| If True, when the object is accessed as an iterable return two
| elements: `count` (number of encirclements) and `contour`. If
| False (default), then return only `count`.
|
| Methods defined here:
|
| __getitem__(self, index)
| # Implement (thin) getitem to allow access via legacy indexing
|
| __init__(self, count, contour, response, dt, sysname=None, return_contour=False)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| plot(self, *args, **kwargs)
| Plot a list of Nyquist responses.
|
| See `nyquist_plot` for details.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class NyquistResponseList(builtins.list)
| NyquistResponseList(iterable=(), /)
|
| List of NyquistResponseData objects with plotting capability.
|
| This class consists of a list of `NyquistResponseData` objects.
| It is a subclass of the Python `list` class, with a `plot` method that
| plots the individual `NyquistResponseData` objects.
|
| Method resolution order:
| NyquistResponseList
| builtins.list
| builtins.object
|
| Methods defined here:
|
| plot(self, *args, **kwargs)
| Plot a list of Nyquist responses.
|
| See `nyquist_plot` for details.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.list:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, index, /)
| Return self[index].
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(self, /)
| Return a reverse iterator over the list.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(self, /)
| Return the size of the list in memory, in bytes.
|
| append(self, object, /)
| Append object to the end of the list.
|
| clear(self, /)
| Remove all items from list.
|
| copy(self, /)
| Return a shallow copy of the list.
|
| count(self, value, /)
| Return number of occurrences of value.
|
| extend(self, iterable, /)
| Extend list by appending elements from the iterable.
|
| index(self, value, start=0, stop=9223372036854775807, /)
| Return first index of value.
|
| Raises ValueError if the value is not present.
|
| insert(self, index, object, /)
| Insert object before index.
|
| pop(self, index=-1, /)
| Remove and return item at index (default last).
|
| Raises IndexError if list is empty or index is out of range.
|
| remove(self, value, /)
| Remove first occurrence of value.
|
| Raises ValueError if the value is not present.
|
| reverse(self, /)
| Reverse *IN PLACE*.
|
| sort(self, /, *, key=None, reverse=False)
| Sort the list in ascending order and return None.
|
| The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
| order of two equal elements is maintained).
|
| If a key function is given, apply it once to each list item and sort them,
| ascending or descending, according to their function values.
|
| The reverse flag can be set to sort in descending order.
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.list:
|
| __class_getitem__(...)
| See PEP 585
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.list:
|
| __new__(*args, **kwargs) class method of builtins.list
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from builtins.list:
|
| __hash__ = None
FUNCTIONS
bode = bode_plot(data, omega=None, *fmt, ax=None, omega_limits=None, omega_num=None, plot=None, plot_magnitude=True, plot_phase=None, overlay_outputs=None, overlay_inputs=None, phase_label=None, magnitude_label=None, label=None, display_margins=None, margins_method='best', title=None, sharex=None, sharey=None, **kwargs)
Bode plot for a system.
Plot the magnitude and phase of the frequency response over a
(optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like, optional
Set of frequencies in rad/sec to plot over. If not specified, this
will be determined from the properties of the systems. Ignored if
`data` is not a list of systems.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
deg : bool
If True, plot phase in degrees (else radians). Default
value (True) set by `config.defaults['freqplot.deg']`.
display_margins : bool or str
If True, draw gain and phase margin lines on the magnitude and phase
graphs and display the margins at the top of the graph. If set to
'overlay', the values for the gain and phase margin are placed on
the graph. Setting `display_margins` turns off the axes grid, unless
`grid` is explicitly set to True.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
freq_label, magnitude_label, phase_label : str, optional
Labels to use for the frequency, magnitude, and phase axes.
Defaults are set by `config.defaults['freqplot.<keyword>']`.
grid : bool, optional
If True, plot grid lines on gain and phase plots. Default is set by
`config.defaults['freqplot.grid']`.
initial_phase : float, optional
Set the reference phase to use for the lowest frequency. If set, the
initial phase of the Bode plot will be set to the value closest to the
value specified. Units are in either degrees or radians, depending on
the `deg` parameter. Default is -180 if wrap_phase is False, 0 if
wrap_phase is True.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system. If MIMO, strings required for each system, output, and input.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
margins_method : str, optional
Method to use in computing margins (see `stability_margins`).
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
overlay_inputs, overlay_outputs : bool, optional
If set to True, combine input and/or output signals onto a single
plot and use line colors, labels, and a legend to distinguish them.
plot : bool, optional
(legacy) If given, `bode_plot` returns the legacy return values
of magnitude, phase, and frequency. If False, just return the
values with no plot.
plot_magnitude, plot_phase : bool, optional
If set to False, do not plot the magnitude or phase, respectively.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
share_frequency, share_magnitude, share_phase : str or bool, optional
Determine whether and how axis limits are shared between the
indicated variables. Can be set set to 'row' to share across all
subplots in a row, 'col' to set across all subplots in a column, or
False to allow independent limits. Note: if `sharex` is given,
it sets the value of `share_frequency`; if `sharey` is given, it
sets the value of both `share_magnitude` and `share_phase`.
Default values are 'row' for `share_magnitude` and `share_phase`,
'col', for `share_frequency`, and can be set using
`config.defaults['freqplot.share_<axis>']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will be
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution). The default
value can be set using `config.defaults['freqplot.title_frame']`.
wrap_phase : bool or float
If wrap_phase is False (default), then the phase will be unwrapped
so that it is continuously increasing or decreasing. If wrap_phase is
True the phase will be restricted to the range [-180, 180) (or
[:math:`-\pi`, :math:`\pi`) radians). If `wrap_phase` is specified
as a float, the phase will be offset by 360 degrees if it falls below
the specified value. Default value is False and can be set using
`config.defaults['freqplot.wrap_phase']`.
See Also
--------
frequency_response
Notes
-----
Starting with python-control version 0.10, `bode_plot` returns a
`ControlPlot` object instead of magnitude, phase, and
frequency. To recover the old behavior, call `bode_plot` with
`plot` = True, which will force the legacy values (mag, phase, omega) to
be returned (with a warning). To obtain just the frequency response of
a system (or list of systems) without plotting, use the
`frequency_response` command.
If a discrete-time model is given, the frequency response is plotted
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and `dt`
is the discrete timebase. If timebase not specified (`dt` = True),
`dt` is set to 1.
The default values for Bode plot configuration parameters can be reset
using the `config.defaults` dictionary, with module name 'bode'.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> out = ct.bode_plot(G)
bode_plot(data, omega=None, *fmt, ax=None, omega_limits=None, omega_num=None, plot=None, plot_magnitude=True, plot_phase=None, overlay_outputs=None, overlay_inputs=None, phase_label=None, magnitude_label=None, label=None, display_margins=None, margins_method='best', title=None, sharex=None, sharey=None, **kwargs)
Bode plot for a system.
Plot the magnitude and phase of the frequency response over a
(optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like, optional
Set of frequencies in rad/sec to plot over. If not specified, this
will be determined from the properties of the systems. Ignored if
`data` is not a list of systems.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
deg : bool
If True, plot phase in degrees (else radians). Default
value (True) set by `config.defaults['freqplot.deg']`.
display_margins : bool or str
If True, draw gain and phase margin lines on the magnitude and phase
graphs and display the margins at the top of the graph. If set to
'overlay', the values for the gain and phase margin are placed on
the graph. Setting `display_margins` turns off the axes grid, unless
`grid` is explicitly set to True.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
freq_label, magnitude_label, phase_label : str, optional
Labels to use for the frequency, magnitude, and phase axes.
Defaults are set by `config.defaults['freqplot.<keyword>']`.
grid : bool, optional
If True, plot grid lines on gain and phase plots. Default is set by
`config.defaults['freqplot.grid']`.
initial_phase : float, optional
Set the reference phase to use for the lowest frequency. If set, the
initial phase of the Bode plot will be set to the value closest to the
value specified. Units are in either degrees or radians, depending on
the `deg` parameter. Default is -180 if wrap_phase is False, 0 if
wrap_phase is True.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system. If MIMO, strings required for each system, output, and input.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
margins_method : str, optional
Method to use in computing margins (see `stability_margins`).
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
overlay_inputs, overlay_outputs : bool, optional
If set to True, combine input and/or output signals onto a single
plot and use line colors, labels, and a legend to distinguish them.
plot : bool, optional
(legacy) If given, `bode_plot` returns the legacy return values
of magnitude, phase, and frequency. If False, just return the
values with no plot.
plot_magnitude, plot_phase : bool, optional
If set to False, do not plot the magnitude or phase, respectively.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
share_frequency, share_magnitude, share_phase : str or bool, optional
Determine whether and how axis limits are shared between the
indicated variables. Can be set set to 'row' to share across all
subplots in a row, 'col' to set across all subplots in a column, or
False to allow independent limits. Note: if `sharex` is given,
it sets the value of `share_frequency`; if `sharey` is given, it
sets the value of both `share_magnitude` and `share_phase`.
Default values are 'row' for `share_magnitude` and `share_phase`,
'col', for `share_frequency`, and can be set using
`config.defaults['freqplot.share_<axis>']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will be
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution). The default
value can be set using `config.defaults['freqplot.title_frame']`.
wrap_phase : bool or float
If wrap_phase is False (default), then the phase will be unwrapped
so that it is continuously increasing or decreasing. If wrap_phase is
True the phase will be restricted to the range [-180, 180) (or
[:math:`-\pi`, :math:`\pi`) radians). If `wrap_phase` is specified
as a float, the phase will be offset by 360 degrees if it falls below
the specified value. Default value is False and can be set using
`config.defaults['freqplot.wrap_phase']`.
See Also
--------
frequency_response
Notes
-----
Starting with python-control version 0.10, `bode_plot` returns a
`ControlPlot` object instead of magnitude, phase, and
frequency. To recover the old behavior, call `bode_plot` with
`plot` = True, which will force the legacy values (mag, phase, omega) to
be returned (with a warning). To obtain just the frequency response of
a system (or list of systems) without plotting, use the
`frequency_response` command.
If a discrete-time model is given, the frequency response is plotted
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and `dt`
is the discrete timebase. If timebase not specified (`dt` = True),
`dt` is set to 1.
The default values for Bode plot configuration parameters can be reset
using the `config.defaults` dictionary, with module name 'bode'.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> out = ct.bode_plot(G)
gangof4 = gangof4_plot(*args, omega=None, omega_limits=None, omega_num=None, Hz=False, **kwargs)
gangof4_plot(response) gangof4_plot(P, C, omega)
Plot response of "Gang of 4" transfer functions.
Plots a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S]. Can be called in one of two ways:
gangof4_plot(response[, ...])
gangof4_plot(P, C[, ...])
Parameters
----------
response : FrequencyPlotData
Gang of 4 frequency response from `gangof4_response`.
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2x2 array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The value
of each array entry is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
gangof4_plot(*args, omega=None, omega_limits=None, omega_num=None, Hz=False, **kwargs)
gangof4_plot(response) gangof4_plot(P, C, omega)
Plot response of "Gang of 4" transfer functions.
Plots a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S]. Can be called in one of two ways:
gangof4_plot(response[, ...])
gangof4_plot(P, C[, ...])
Parameters
----------
response : FrequencyPlotData
Gang of 4 frequency response from `gangof4_response`.
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2x2 array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The value
of each array entry is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
gangof4_response(P, C, omega=None, omega_limits=None, omega_num=None, Hz=False)
Compute response of "Gang of 4" transfer functions.
Generates a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S].
Parameters
----------
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
response : `FrequencyResponseData`
Frequency response with inputs 'r' and 'd' and outputs 'y', and 'u'
representing the 2x2 matrix of transfer functions in the Gang of 4.
Examples
--------
>>> P = ct.tf([1], [1, 1])
>>> C = ct.tf([2], [1])
>>> response = ct.gangof4_response(P, C)
>>> cplt = response.plot()
nyquist = nyquist_plot(data, omega=None, plot=None, label_freq=0, color=None, label=None, return_contour=None, title=None, ax=None, unit_circle=False, mt_circles=None, ms_circles=None, **kwargs)
Nyquist plot for a system.
Generates a Nyquist plot for the system over a (optional) frequency
range. The curve is computed by evaluating the Nyquist segment along
the positive imaginary axis, with a mirror image generated to reflect
the negative imaginary axis. Poles on or near the imaginary axis are
avoided using a small indentation. The portion of the Nyquist contour
at infinity is not explicitly computed (since it maps to a constant
value for any system with a proper transfer function).
Parameters
----------
data : list of `LTI` or `NyquistResponseData`
List of linear input/output systems (single system is OK) or
Nyquist responses (computed using `nyquist_response`).
Nyquist curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`.
unit_circle : bool, optional
If True, display the unit circle, to read gain crossover
frequency. The circle style is determined by
`config.defaults['nyquist.circle_style']`.
mt_circles : array_like, optional
Draw circles corresponding to the given magnitudes of sensitivity.
ms_circles : array_like, optional
Draw circles corresponding to the given magnitudes of complementary
sensitivity.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array is given by (nsys, 4) where nsys is the number of
systems or Nyquist responses passed to the function. The second
index specifies the segment type:
- lines[idx, 0]: unscaled portion of the primary curve
- lines[idx, 1]: scaled portion of the primary curve
- lines[idx, 2]: unscaled portion of the mirror curve
- lines[idx, 3]: scaled portion of the mirror curve
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
arrows : int or 1D/2D array of floats, optional
Specify the number of arrows to plot on the Nyquist curve. If an
integer is passed. that number of equally spaced arrows will be
plotted on each of the primary segment and the mirror image. If a
1D array is passed, it should consist of a sorted list of floats
between 0 and 1, indicating the location along the curve to plot an
arrow. If a 2D array is passed, the first row will be used to
specify arrow locations for the primary curve and the second row
will be used for the mirror image. Default value is 2 and can be
set using `config.defaults['nyquist.arrows']`.
arrow_size : float, optional
Arrowhead width and length (in display coordinates). Default value is
8 and can be set using `config.defaults['nyquist.arrow_size']`.
arrow_style : matplotlib.patches.ArrowStyle, optional
Define style used for Nyquist curve arrows (overrides `arrow_size`).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
blend_fraction : float, optional
For portions of the Nyquist curve that are scaled to have a maximum
magnitude of `max_curve_magnitude`, begin a smooth rescaling at
this fraction of `max_curve_magnitude`. Default value is 0.15.
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to indented
portions of the contour are plotted using a different line style.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If `data` is a list, strings should be specified for each
system.
label_freq : int, optional
Label every nth frequency on the plot. If not specified, no labels
are generated.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
max_curve_magnitude : float, optional
Restrict the maximum magnitude of the Nyquist plot to this value.
Portions of the Nyquist plot whose magnitude is restricted are
plotted using a different line style. The default value is 20 and
can be set using `config.defaults['nyquist.max_curve_magnitude']`.
max_curve_offset : float, optional
When plotting scaled portion of the Nyquist plot, increase/decrease
the magnitude by this fraction of the max_curve_magnitude to allow
any overlaps between the primary and mirror curves to be avoided.
The default value is 0.02 and can be set using
`config.defaults['nyquist.max_curve_magnitude']`.
mirror_style : [str, str] or False
Linestyles for mirror image of the Nyquist curve. The first element
is used for unscaled portions of the Nyquist curve, the second element
is used for portions that are scaled (using max_curve_magnitude). If
False then omit completely. Default linestyle (['--', ':']) is
determined by `config.defaults['nyquist.mirror_style']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if `data`
is not a system or list of systems.
plot : bool, optional
(legacy) If given, `nyquist_plot` returns the legacy return values
of (counts, contours). If False, return the values with no plot.
primary_style : [str, str], optional
Linestyles for primary image of the Nyquist curve. The first
element is used for unscaled portions of the Nyquist curve,
the second element is used for portions that are scaled (using
max_curve_magnitude). Default linestyle (['-', '-.']) is
determined by `config.defaults['nyquist.mirror_style']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
return_contour : bool, optional
(legacy) If True, return the encirclement count and Nyquist
contour used to generate the Nyquist plot.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
start_marker : str, optional
Matplotlib marker to use to mark the starting point of the Nyquist
plot. Defaults value is 'o' and can be set using
`config.defaults['nyquist.start_marker']`.
start_marker_size : float, optional
Start marker size (in display coordinates). Default value is
4 and can be set using `config.defaults['nyquist.start_marker_size']`.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
See Also
--------
nyquist_response
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation. If `return_contour` is True,
the exact contour used for evaluation is returned.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dashdot line style and the scaled portions of the mirror
image use a dotted line style.
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> out = ct.nyquist_plot(G)
nyquist_plot(data, omega=None, plot=None, label_freq=0, color=None, label=None, return_contour=None, title=None, ax=None, unit_circle=False, mt_circles=None, ms_circles=None, **kwargs)
Nyquist plot for a system.
Generates a Nyquist plot for the system over a (optional) frequency
range. The curve is computed by evaluating the Nyquist segment along
the positive imaginary axis, with a mirror image generated to reflect
the negative imaginary axis. Poles on or near the imaginary axis are
avoided using a small indentation. The portion of the Nyquist contour
at infinity is not explicitly computed (since it maps to a constant
value for any system with a proper transfer function).
Parameters
----------
data : list of `LTI` or `NyquistResponseData`
List of linear input/output systems (single system is OK) or
Nyquist responses (computed using `nyquist_response`).
Nyquist curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`.
unit_circle : bool, optional
If True, display the unit circle, to read gain crossover
frequency. The circle style is determined by
`config.defaults['nyquist.circle_style']`.
mt_circles : array_like, optional
Draw circles corresponding to the given magnitudes of sensitivity.
ms_circles : array_like, optional
Draw circles corresponding to the given magnitudes of complementary
sensitivity.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array is given by (nsys, 4) where nsys is the number of
systems or Nyquist responses passed to the function. The second
index specifies the segment type:
- lines[idx, 0]: unscaled portion of the primary curve
- lines[idx, 1]: scaled portion of the primary curve
- lines[idx, 2]: unscaled portion of the mirror curve
- lines[idx, 3]: scaled portion of the mirror curve
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
arrows : int or 1D/2D array of floats, optional
Specify the number of arrows to plot on the Nyquist curve. If an
integer is passed. that number of equally spaced arrows will be
plotted on each of the primary segment and the mirror image. If a
1D array is passed, it should consist of a sorted list of floats
between 0 and 1, indicating the location along the curve to plot an
arrow. If a 2D array is passed, the first row will be used to
specify arrow locations for the primary curve and the second row
will be used for the mirror image. Default value is 2 and can be
set using `config.defaults['nyquist.arrows']`.
arrow_size : float, optional
Arrowhead width and length (in display coordinates). Default value is
8 and can be set using `config.defaults['nyquist.arrow_size']`.
arrow_style : matplotlib.patches.ArrowStyle, optional
Define style used for Nyquist curve arrows (overrides `arrow_size`).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
blend_fraction : float, optional
For portions of the Nyquist curve that are scaled to have a maximum
magnitude of `max_curve_magnitude`, begin a smooth rescaling at
this fraction of `max_curve_magnitude`. Default value is 0.15.
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to indented
portions of the contour are plotted using a different line style.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If `data` is a list, strings should be specified for each
system.
label_freq : int, optional
Label every nth frequency on the plot. If not specified, no labels
are generated.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
max_curve_magnitude : float, optional
Restrict the maximum magnitude of the Nyquist plot to this value.
Portions of the Nyquist plot whose magnitude is restricted are
plotted using a different line style. The default value is 20 and
can be set using `config.defaults['nyquist.max_curve_magnitude']`.
max_curve_offset : float, optional
When plotting scaled portion of the Nyquist plot, increase/decrease
the magnitude by this fraction of the max_curve_magnitude to allow
any overlaps between the primary and mirror curves to be avoided.
The default value is 0.02 and can be set using
`config.defaults['nyquist.max_curve_magnitude']`.
mirror_style : [str, str] or False
Linestyles for mirror image of the Nyquist curve. The first element
is used for unscaled portions of the Nyquist curve, the second element
is used for portions that are scaled (using max_curve_magnitude). If
False then omit completely. Default linestyle (['--', ':']) is
determined by `config.defaults['nyquist.mirror_style']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if `data`
is not a system or list of systems.
plot : bool, optional
(legacy) If given, `nyquist_plot` returns the legacy return values
of (counts, contours). If False, return the values with no plot.
primary_style : [str, str], optional
Linestyles for primary image of the Nyquist curve. The first
element is used for unscaled portions of the Nyquist curve,
the second element is used for portions that are scaled (using
max_curve_magnitude). Default linestyle (['-', '-.']) is
determined by `config.defaults['nyquist.mirror_style']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
return_contour : bool, optional
(legacy) If True, return the encirclement count and Nyquist
contour used to generate the Nyquist plot.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
start_marker : str, optional
Matplotlib marker to use to mark the starting point of the Nyquist
plot. Defaults value is 'o' and can be set using
`config.defaults['nyquist.start_marker']`.
start_marker_size : float, optional
Start marker size (in display coordinates). Default value is
4 and can be set using `config.defaults['nyquist.start_marker_size']`.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
See Also
--------
nyquist_response
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation. If `return_contour` is True,
the exact contour used for evaluation is returned.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dashdot line style and the scaled portions of the mirror
image use a dotted line style.
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> out = ct.nyquist_plot(G)
nyquist_response(sysdata, omega=None, omega_limits=None, omega_num=None, return_contour=False, warn_encirclements=True, warn_nyquist=True, _kwargs=None, _check_kwargs=True, **kwargs)
Nyquist response for a system.
Computes a Nyquist contour for the system over a (optional) frequency
range and evaluates the number of net encirclements. The curve is
computed by evaluating the Nyquist segment along the positive imaginary
axis, with a mirror image generated to reflect the negative imaginary
axis. Poles on or near the imaginary axis are avoided using a small
indentation. The portion of the Nyquist contour at infinity is not
explicitly computed (since it maps to a constant value for any system
with a proper transfer function).
Parameters
----------
sysdata : LTI or list of LTI
List of linear input/output systems (single system is OK). Nyquist
curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec.
Returns
-------
responses : list of `NyquistResponseData`
For each system, a Nyquist response data object is returned. If
`sysdata` is a single system, a single element is returned (not a
list).
response.count : int
Number of encirclements of the point -1 by the Nyquist curve. If
multiple systems are given, an array of counts is returned.
response.contour : ndarray
The contour used to create the primary Nyquist curve segment. To
obtain the Nyquist curve values, evaluate system(s) along contour.
Other Parameters
----------------
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'. The default value can
be set using `config.defaults['nyquist.indent_direction']`.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to
indented portions of the contour are plotted using a different line
style. The default value can be set using
`config.defaults['nyquist.indent_radius']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`.
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dotted line style and the scaled portion of the mirror
image use a dashdot line style.
If the legacy keyword `return_contour` is specified as True, the
response object can be iterated over to return ``(count, contour)``.
This behavior is deprecated and will be removed in a future release.
See Also
--------
nyquist_plot
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> response = ct.nyquist_response(G)
>>> count = response.count
>>> cplt = response.plot()
singular_values_plot(data, omega=None, *fmt, plot=None, omega_limits=None, omega_num=None, ax=None, label=None, title=None, **kwargs)
Plot the singular values for a system.
Plot the singular values as a function of frequency for a system or
list of systems. If multiple systems are plotted, each system in the
list is plotted in a different color.
Parameters
----------
data : list of `FrequencyResponseData`
List of `FrequencyResponseData` objects. For backward
compatibility, a list of LTI systems can also be given.
omega : array_like
List of frequencies in rad/sec over to plot over.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The size of
the array matches the number of systems and the value of the array
is a list of Line2D objects for that system.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
color : matplotlib color spec
Color to use for singular values (or None for matplotlib default).
grid : bool
If True, plot grid lines on gain and phase plots. Default is
set by `config.defaults['freqplot.grid']`.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
plot : bool, optional
(legacy) If given, `singular_values_plot` returns the legacy return
values of magnitude, phase, and frequency. If False, just return
the values with no plot.
rcParams : dict
Override the default parameters used for generating plots.
Default is set up `config.defaults['ctrlplot.rcParams']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
See Also
--------
singular_values_response
Notes
-----
If `plot` = False, the following legacy values are returned:
* `mag` : ndarray (or list of ndarray if len(data) > 1))
Magnitude of the response (deprecated).
* `phase` : ndarray (or list of ndarray if len(data) > 1))
Phase in radians of the response (deprecated).
* `omega` : ndarray (or list of ndarray if len(data) > 1))
Frequency in rad/sec (deprecated).
singular_values_response(sysdata, omega=None, omega_limits=None, omega_num=None, Hz=False)
Singular value response for a system.
Computes the singular values for a system or list of systems over
a (optional) frequency range.
Parameters
----------
sysdata : LTI or list of LTI
List of linear input/output systems (single system is OK).
omega : array_like
List of frequencies in rad/sec to be used for frequency response.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
response : `FrequencyResponseData`
Frequency response with the number of outputs equal to the
number of singular values in the response, and a single input.
Other Parameters
----------------
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`.
See Also
--------
singular_values_plot
Examples
--------
>>> omegas = np.logspace(-4, 1, 1000)
>>> den = [75, 1]
>>> G = ct.tf([[[87.8], [-86.4]], [[108.2], [-109.6]]],
... [[den, den], [den, den]])
>>> response = ct.singular_values_response(G, omega=omegas)
DATA
__all__ = ['bode_plot', 'NyquistResponseData', 'nyquist_response', 'ny...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\freqplot.py
control.freqresp
Python Library Documentation: function freqresp in module control.lti
freqresp(sys, omega)
Legacy version of frequency_response.
.. deprecated:: 0.9.0
This function will be removed in a future version of python-control.
Use `frequency_response` instead.
control.frequency_response
Python Library Documentation: function frequency_response in module control.lti
frequency_response(sysdata, omega=None, omega_limits=None, omega_num=None, Hz=None, squeeze=None)
Frequency response of an LTI system.
For continuous-time systems with transfer function G, computes the
frequency response as
G(j*omega) = mag * exp(j*phase)
For discrete-time systems, the response is evaluated around the unit
circle such that
G(exp(j*omega*dt)) = mag * exp(j*phase).
In general the system may be multiple input, multiple output (MIMO),
where ``m = self.ninputs`` number of inputs and ``p = self.noutputs``
number of outputs.
Parameters
----------
sysdata : LTI system or list of LTI systems
Linear system(s) for which frequency response is computed.
omega : float or 1D array_like, optional
A list, tuple, array, or scalar value of frequencies in radians/sec
at which the system will be evaluated. Can be a single frequency
or array of frequencies, which will be sorted before evaluation.
If None (default), a common set of frequencies that works across
all given systems is computed.
omega_limits : array_like of two values, optional
Limits to the range of frequencies, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`. Ignored if omega is provided.
omega_num : int, optional
Number of frequency samples at which to compute the response.
Defaults to `config.defaults['freqplot.number_of_samples']`. Ignored
if omega is provided.
Returns
-------
response : `FrequencyResponseData`
Frequency response data object representing the frequency
response. When accessed as a tuple, returns ``(magnitude,
phase, omega)``. If `sysdata` is a list of systems, returns a
`FrequencyResponseList` object. Results can be plotted using
the `~FrequencyResponseData.plot` method. See
`FrequencyResponseData` for more detailed information.
response.magnitude : array
Magnitude of the frequency response (absolute value, not dB or
log10). If the system is SISO and squeeze is not True, the
array is 1D, indexed by frequency. If the system is not SISO
or squeeze is False, the array is 3D, indexed by the output,
input, and, if omega is array_like, frequency. If `squeeze` is
True then single-dimensional axes are removed.
response.phase : array
Wrapped phase, in radians, with same shape as `magnitude`.
response.omega : array
Sorted list of frequencies at which response was evaluated.
Other Parameters
----------------
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s. Omega is always
returned in rad/sec.
squeeze : bool, optional
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep all indices (output, input and, if omega is
array_like, frequency) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_frequency_response']`.
See Also
--------
LTI.__call__, bode_plot
Notes
-----
This function is a wrapper for `StateSpace.frequency_response` and
`TransferFunction.frequency_response`. You can also use the
lower-level methods ``sys(s)`` or ``sys(z)`` to generate the frequency
response for a single system.
All frequency data should be given in rad/sec. If frequency limits are
computed automatically, the `Hz` keyword can be used to ensure that
limits are in factors of decades in Hz, so that Bode plots with
`Hz` = True look better.
The frequency response data can be plotted by calling the `bode_plot`
function or using the `plot` method of the `FrequencyResponseData`
class.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> mag, phase, omega = ct.frequency_response(G, [0.1, 1., 10.])
>>> sys = ct.rss(3, 2, 2)
>>> mag, phase, omega = ct.frequency_response(sys, [0.1, 1., 10.])
>>> mag[0, 1, :] # Magnitude of second input to first output
array([..., ..., ...])
>>> phase[1, 0, :] # Phase of first input to second output
array([..., ..., ...])
control.friction_backlash_nonlinearity
Python Library Documentation: class friction_backlash_nonlinearity in module control.descfcn class friction_backlash_nonlinearity(DescribingFunctionNonlinearity) | friction_backlash_nonlinearity(b) | | Backlash nonlinearity for describing function analysis. | | This class creates a nonlinear function representing a friction-dominated | backlash nonlinearity ,including the describing function for the | nonlinearity. The following call creates a nonlinear function suitable | for describing function analysis:: | | F = friction_backlash_nonlinearity(b) | | This function maintains an internal state representing the 'center' of | a mechanism with backlash. If the new input is within b/2 of the | current center, the output is unchanged. Otherwise, the output is | given by the input shifted by b/2. | | Parameters | ---------- | b : float | Backlash amount. | | Examples | -------- | >>> nl = ct.friction_backlash_nonlinearity(2) # backlash of +/- 1 | >>> nl(0) | 0 | >>> nl(1) # not enough to overcome backlash | 0 | >>> nl(2) | 1.0 | >>> nl(1) | 1.0 | >>> nl(0) # not enough to overcome backlash | 1.0 | >>> nl(-1) | 0.0 | | Method resolution order: | friction_backlash_nonlinearity | DescribingFunctionNonlinearity | builtins.object | | Methods defined here: | | __call__(self, x) | Evaluate the nonlinearity at a (scalar) input value. | | __init__(self, b) | Initialize a describing function nonlinearity (optional). | | describing_function(self, A) | Return the describing function for a backlash nonlinearity. | | Parameters | ---------- | A : float | Amplitude of the sinusoidal input to the nonlinearity. | | Returns | ------- | float | Value of the describing function at the given amplitude. | | ---------------------------------------------------------------------- | Data descriptors inherited from DescribingFunctionNonlinearity: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.gangof4
Python Library Documentation: function gangof4_plot in module control.freqplot
gangof4_plot(*args, omega=None, omega_limits=None, omega_num=None, Hz=False, **kwargs)
gangof4_plot(response) gangof4_plot(P, C, omega)
Plot response of "Gang of 4" transfer functions.
Plots a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S]. Can be called in one of two ways:
gangof4_plot(response[, ...])
gangof4_plot(P, C[, ...])
Parameters
----------
response : FrequencyPlotData
Gang of 4 frequency response from `gangof4_response`.
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2x2 array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The value
of each array entry is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
control.gangof4_plot
Python Library Documentation: function gangof4_plot in module control.freqplot
gangof4_plot(*args, omega=None, omega_limits=None, omega_num=None, Hz=False, **kwargs)
gangof4_plot(response) gangof4_plot(P, C, omega)
Plot response of "Gang of 4" transfer functions.
Plots a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S]. Can be called in one of two ways:
gangof4_plot(response[, ...])
gangof4_plot(P, C[, ...])
Parameters
----------
response : FrequencyPlotData
Gang of 4 frequency response from `gangof4_response`.
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2x2 array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The value
of each array entry is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
control.gangof4_response
Python Library Documentation: function gangof4_response in module control.freqplot
gangof4_response(P, C, omega=None, omega_limits=None, omega_num=None, Hz=False)
Compute response of "Gang of 4" transfer functions.
Generates a 2x2 frequency response for the "Gang of 4" sensitivity
functions [T, PS; CS, S].
Parameters
----------
P, C : LTI
Linear input/output systems (process and control).
omega : array
Range of frequencies (list or bounds) in rad/sec.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`. Ignored if
data is not a list of systems.
omega_num : int
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
response : `FrequencyResponseData`
Frequency response with inputs 'r' and 'd' and outputs 'y', and 'u'
representing the 2x2 matrix of transfer functions in the Gang of 4.
Examples
--------
>>> P = ct.tf([1], [1, 1])
>>> C = ct.tf([2], [1])
>>> response = ct.gangof4_response(P, C)
>>> cplt = response.plot()
control.get_input_ff_index
Python Library Documentation: function get_input_ff_index in module control.passivity
get_input_ff_index(sys)
Input feedforward passivity (IFP) index for a system.
The input feedforward passivity (IFP) is the largest gain that can be
placed in negative parallel interconnection with a system such that the
new interconnected system is passive.
Parameters
----------
sys : LTI
System to be checked.
Returns
-------
float
The IFP index.
control.get_output_fb_index
Python Library Documentation: function get_output_fb_index in module control.passivity
get_output_fb_index(sys)
Return the output feedback passivity (OFP) index for the system.
The OFP is the largest gain that can be placed in positive feedback
with a system such that the new interconnected system is passive.
Parameters
----------
sys : LTI
System to be checked.
Returns
-------
float
The OFP index.
control.get_plot_axes
Python Library Documentation: function get_plot_axes in module control.ctrlplot
get_plot_axes(line_array)
Get a list of axes from an array of lines.
.. deprecated:: 0.10.1
This function will be removed in a future version of python-control.
Use `cplt.axes` to obtain axes for an instance of `ControlPlot`.
This function can be used to return the set of axes corresponding
to the line array that is returned by `time_response_plot`. This
is useful for generating an axes array that can be passed to
subsequent plotting calls.
Parameters
----------
line_array : array of list of `matplotlib.lines.Line2D`
A 2D array with elements corresponding to a list of lines appearing
in an axes, matching the return type of a time response data plot.
Returns
-------
axes_array : array of list of `matplotlib.axes.Axes`
A 2D array with elements corresponding to the Axes associated with
the lines in `line_array`.
Notes
-----
Only the first element of each array entry is used to determine the axes.
control.gram
Python Library Documentation: function gram in module control.statefbk
gram(sys, type)
Gramian (controllability or observability).
Parameters
----------
sys : `StateSpace`
System description.
type : String
Type of desired computation. `type` is either 'c' (controllability)
or 'o' (observability). To compute the Cholesky factors of Gramians
use 'cf' (controllability) or 'of' (observability).
Returns
-------
gram : 2D array
Gramian of system.
Raises
------
ValueError
* If system is not instance of `StateSpace` class, or
* if `type` is not 'c', 'o', 'cf' or 'of', or
* if system is unstable (sys.A has eigenvalues not in left half plane).
ControlSlycot
If slycot routine sb03md cannot be found or
if slycot routine sb03od cannot be found.
Examples
--------
>>> G = ct.rss(4)
>>> Wc = ct.gram(G, 'c')
>>> Wo = ct.gram(G, 'o')
>>> Rc = ct.gram(G, 'cf') # where Wc = Rc' * Rc
>>> Ro = ct.gram(G, 'of') # where Wo = Ro' * Ro
control.grid
Python Library Documentation: module control.grid in control
NAME
control.grid - Functions to add gridlines to root locus and pole-zero diagrams.
DESCRIPTION
This code generates grids for pole-zero diagrams (including root locus
diagrams). Rather than just draw a grid in place, it uses the
AxisArtist package to generate a custom grid that will scale with the
figure.
CLASSES
builtins.object
FormatterDMS
mpl_toolkits.axisartist.angle_helper.ExtremeFinderCycle(mpl_toolkits.axisartist.grid_finder.ExtremeFinderSimple)
ModifiedExtremeFinderCycle
class FormatterDMS(builtins.object)
| Transforms angle ticks to damping ratios.
|
| Methods defined here:
|
| __call__(self, direction, factor, values)
| Call self as a function.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class ModifiedExtremeFinderCycle(mpl_toolkits.axisartist.angle_helper.ExtremeFinderCycle)
| ModifiedExtremeFinderCycle(nx, ny, lon_cycle=360.0, lat_cycle=None, lon_minmax=None, lat_minmax=(-90, 90))
|
| Changed to allow only left hand-side polar grid.
|
| https://matplotlib.org/_modules/mpl_toolkits/axisartist/angle_helper.html#ExtremeFinderCycle.__call__
|
| Method resolution order:
| ModifiedExtremeFinderCycle
| mpl_toolkits.axisartist.angle_helper.ExtremeFinderCycle
| mpl_toolkits.axisartist.grid_finder.ExtremeFinderSimple
| builtins.object
|
| Methods defined here:
|
| __call__(self, transform_xy, x1, y1, x2, y2)
| Compute an approximation of the bounding box obtained by applying
| *transform_xy* to the box delimited by ``(x1, y1, x2, y2)``.
|
| The intended use is to have ``(x1, y1, x2, y2)`` in axes coordinates,
| and have *transform_xy* be the transform from axes coordinates to data
| coordinates; this method then returns the range of data coordinates
| that span the actual axes.
|
| The computation is done by sampling ``nx * ny`` equispaced points in
| the ``(x1, y1, x2, y2)`` box and finding the resulting points with
| extremal coordinates; then adding some padding to take into account the
| finite sampling.
|
| As each sampling step covers a relative range of *1/nx* or *1/ny*,
| the padding is computed by expanding the span covered by the extremal
| coordinates by these fractions.
|
| ----------------------------------------------------------------------
| Methods inherited from mpl_toolkits.axisartist.angle_helper.ExtremeFinderCycle:
|
| __init__(self, nx, ny, lon_cycle=360.0, lat_cycle=None, lon_minmax=None, lat_minmax=(-90, 90))
| This subclass handles the case where one or both coordinates should be
| taken modulo 360, or be restricted to not exceed a specific range.
|
| Parameters
| ----------
| nx, ny : int
| The number of samples in each direction.
|
| lon_cycle, lat_cycle : 360 or None
| If not None, values in the corresponding direction are taken modulo
| *lon_cycle* or *lat_cycle*; in theory this can be any number but
| the implementation actually assumes that it is 360 (if not None);
| other values give nonsensical results.
|
| This is done by "unwrapping" the transformed grid coordinates so
| that jumps are less than a half-cycle; then normalizing the span to
| no more than a full cycle.
|
| For example, if values are in the union of the [0, 2] and
| [358, 360] intervals (typically, angles measured modulo 360), the
| values in the second interval are normalized to [-2, 0] instead so
| that the values now cover [-2, 2]. If values are in a range of
| [5, 1000], this gets normalized to [5, 365].
|
| lon_minmax, lat_minmax : (float, float) or None
| If not None, the computed bounding box is clipped to the given
| range in the corresponding direction.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from mpl_toolkits.axisartist.grid_finder.ExtremeFinderSimple:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
FUNCTIONS
nogrid(dt=None, ax=None, scaling=None)
# If not grid is given, at least separate stable/unstable regions
sgrid(subplot=(1, 1, 1), scaling=None)
zgrid(zetas=None, wns=None, ax=None, scaling=None)
Draws discrete damping and frequency grid
DATA
cos = <ufunc 'cos'>
cos(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Cosine element-wise.
Parameters
----------
x : array_like
Input array in radians.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding cosine values.
This is a scalar if `x` is a scalar.
Notes
-----
If `out` is provided, the function writes the result into it,
and returns a reference to `out`. (See Examples)
References
----------
M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions.
New York, NY: Dover, 1972.
Examples
--------
>>> import numpy as np
>>> np.cos(np.array([0, np.pi/2, np.pi]))
array([ 1.00000000e+00, 6.12303177e-17, -1.00000000e+00])
>>>
>>> # Example of providing the optional output parameter
>>> out1 = np.array([0], dtype='d')
>>> out2 = np.cos([0.1], out1)
>>> out2 is out1
True
>>>
>>> # Example of ValueError due to provision of shape mis-matched `out`
>>> np.cos(np.zeros((3,3)),np.zeros((2,2)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)
exp = <ufunc 'exp'>
exp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate the exponential of all elements in the input array.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise exponential of `x`.
This is a scalar if `x` is a scalar.
See Also
--------
expm1 : Calculate ``exp(x) - 1`` for all elements in the array.
exp2 : Calculate ``2**x`` for all elements in the array.
Notes
-----
The irrational number ``e`` is also known as Euler's number. It is
approximately 2.718281, and is the base of the natural logarithm,
``ln`` (this means that, if :math:`x = \ln y = \log_e y`,
then :math:`e^x = y`. For real input, ``exp(x)`` is always positive.
For complex arguments, ``x = a + ib``, we can write
:math:`e^x = e^a e^{ib}`. The first term, :math:`e^a`, is already
known (it is the real argument, described above). The second term,
:math:`e^{ib}`, is :math:`\cos b + i \sin b`, a function with
magnitude 1 and a periodic phase.
References
----------
.. [1] Wikipedia, "Exponential function",
https://en.wikipedia.org/wiki/Exponential_function
.. [2] M. Abramovitz and I. A. Stegun, "Handbook of Mathematical Functions
with Formulas, Graphs, and Mathematical Tables," Dover, 1964, p. 69,
https://personal.math.ubc.ca/~cbm/aands/page_69.htm
Examples
--------
Plot the magnitude and phase of ``exp(x)`` in the complex plane:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-2*np.pi, 2*np.pi, 100)
>>> xx = x + 1j * x[:, np.newaxis] # a + ib over complex plane
>>> out = np.exp(xx)
>>> plt.subplot(121)
>>> plt.imshow(np.abs(out),
... extent=[-2*np.pi, 2*np.pi, -2*np.pi, 2*np.pi], cmap='gray')
>>> plt.title('Magnitude of exp(x)')
>>> plt.subplot(122)
>>> plt.imshow(np.angle(out),
... extent=[-2*np.pi, 2*np.pi, -2*np.pi, 2*np.pi], cmap='hsv')
>>> plt.title('Phase (angle) of exp(x)')
>>> plt.show()
pi = 3.141592653589793
sin = <ufunc 'sin'>
sin(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric sine, element-wise.
Parameters
----------
x : array_like
Angle, in radians (:math:`2 \pi` rad equals 360 degrees).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : array_like
The sine of each element of x.
This is a scalar if `x` is a scalar.
See Also
--------
arcsin, sinh, cos
Notes
-----
The sine is one of the fundamental functions of trigonometry (the
mathematical study of triangles). Consider a circle of radius 1
centered on the origin. A ray comes in from the :math:`+x` axis, makes
an angle at the origin (measured counter-clockwise from that axis), and
departs from the origin. The :math:`y` coordinate of the outgoing
ray's intersection with the unit circle is the sine of that angle. It
ranges from -1 for :math:`x=3\pi / 2` to +1 for :math:`\pi / 2.` The
function has zeroes where the angle is a multiple of :math:`\pi`.
Sines of angles between :math:`\pi` and :math:`2\pi` are negative.
The numerous properties of the sine and related functions are included
in any standard trigonometry text.
Examples
--------
>>> import numpy as np
Print sine of one angle:
>>> np.sin(np.pi/2.)
1.0
Print sines of an array of angles given in degrees:
>>> np.sin(np.array((0., 30., 45., 60., 90.)) * np.pi / 180. )
array([ 0. , 0.5 , 0.70710678, 0.8660254 , 1. ])
Plot the sine function:
>>> import matplotlib.pylab as plt
>>> x = np.linspace(-np.pi, np.pi, 201)
>>> plt.plot(x, np.sin(x))
>>> plt.xlabel('Angle [rad]')
>>> plt.ylabel('sin(x)')
>>> plt.axis('tight')
>>> plt.show()
sqrt = <ufunc 'sqrt'>
sqrt(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the non-negative square-root of an array, element-wise.
Parameters
----------
x : array_like
The values whose square-roots are required.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
An array of the same shape as `x`, containing the positive
square-root of each element in `x`. If any element in `x` is
complex, a complex array is returned (and the square-roots of
negative reals are calculated). If all of the elements in `x`
are real, so is `y`, with negative elements returning ``nan``.
If `out` was provided, `y` is a reference to it.
This is a scalar if `x` is a scalar.
See Also
--------
emath.sqrt
A version which returns complex numbers when given negative reals.
Note that 0.0 and -0.0 are handled differently for complex inputs.
Notes
-----
*sqrt* has--consistent with common convention--as its branch cut the
real "interval" [`-inf`, 0), and is continuous from above on it.
A branch cut is a curve in the complex plane across which a given
complex function fails to be continuous.
Examples
--------
>>> import numpy as np
>>> np.sqrt([1,4,9])
array([ 1., 2., 3.])
>>> np.sqrt([4, -1, -3+4J])
array([ 2.+0.j, 0.+1.j, 1.+2.j])
>>> np.sqrt([4, -1, np.inf])
array([ 2., nan, inf])
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\grid.py
control.h2syn
Python Library Documentation: function h2syn in module control.robust
h2syn(P, nmeas, ncon)
H2 control synthesis for plant P.
Parameters
----------
P : `StateSpace`
Partitioned LTI plant (state-space system).
nmeas : int
Number of measurements (input to controller).
ncon : int
Number of control inputs (output from controller).
Returns
-------
K : `StateSpace`
Controller to stabilize `P`.
Raises
------
ImportError
If slycot routine sb10hd is not loaded.
See Also
--------
StateSpace
Examples
--------
>>> # Unstable first order SISO system
>>> G = ct.tf([1], [1, -1], inputs=['u'], outputs=['y'])
>>> all(G.poles() < 0) # Is G stable?
False
>>> # Create partitioned system with trivial unity systems
>>> P11 = ct.tf([0], [1], inputs=['w'], outputs=['z'])
>>> P12 = ct.tf([1], [1], inputs=['u'], outputs=['z'])
>>> P21 = ct.tf([1], [1], inputs=['w'], outputs=['y'])
>>> P22 = G
>>> P = ct.interconnect([P11, P12, P21, P22],
... inplist=['w', 'u'], outlist=['z', 'y'])
>>> # Synthesize H2 optimal stabilizing controller
>>> K = ct.h2syn(P, nmeas=1, ncon=1)
>>> T = ct.feedback(G, K, sign=1)
>>> all(T.poles() < 0) # Is T stable?
True
control.hankel_singular_values
Python Library Documentation: function hankel_singular_values in module control.modelsimp
hankel_singular_values(sys)
Calculate the Hankel singular values.
Parameters
----------
sys : `StateSpace`
State space system.
Returns
-------
H : array
List of Hankel singular values.
See Also
--------
gram
Notes
-----
The Hankel singular values are the singular values of the Hankel operator.
In practice, we compute the square root of the eigenvalues of the matrix
formed by taking the product of the observability and controllability
Gramians. There are other (more efficient) methods based on solving the
Lyapunov equation in a particular way (more details soon).
Examples
--------
>>> G = ct.tf2ss([1], [1, 2])
>>> H = ct.hsvd(G)
>>> H[0]
np.float64(0.25)
control.hinfsyn
Python Library Documentation: function hinfsyn in module control.robust
hinfsyn(P, nmeas, ncon)
H-infinity control synthesis for plant P.
Parameters
----------
P : `StateSpace`
Partitioned LTI plant (state-space system).
nmeas : int
Number of measurements (input to controller).
ncon : int
Number of control inputs (output from controller).
Returns
-------
K : `StateSpace`
Controller to stabilize `P`.
CL : `StateSpace`
Closed loop system.
gam : float
Infinity norm of closed loop system.
rcond : list
4-vector, reciprocal condition estimates of:
1: control transformation matrix
2: measurement transformation matrix
3: X-Riccati equation
4: Y-Riccati equation
Raises
------
ImportError
If slycot routine sb10ad is not loaded.
See Also
--------
StateSpace
Examples
--------
>>> # Unstable first order SISO system
>>> G = ct.tf([1], [1,-1], inputs=['u'], outputs=['y'])
>>> all(G.poles() < 0)
False
>>> # Create partitioned system with trivial unity systems
>>> P11 = ct.tf([0], [1], inputs=['w'], outputs=['z'])
>>> P12 = ct.tf([1], [1], inputs=['u'], outputs=['z'])
>>> P21 = ct.tf([1], [1], inputs=['w'], outputs=['y'])
>>> P22 = G
>>> P = ct.interconnect([P11, P12, P21, P22], inplist=['w', 'u'], outlist=['z', 'y'])
>>> # Synthesize Hinf optimal stabilizing controller
>>> K, CL, gam, rcond = ct.hinfsyn(P, nmeas=1, ncon=1)
>>> T = ct.feedback(G, K, sign=1)
>>> all(T.poles() < 0)
True
control.hsvd
Python Library Documentation: function hankel_singular_values in module control.modelsimp
hankel_singular_values(sys)
Calculate the Hankel singular values.
Parameters
----------
sys : `StateSpace`
State space system.
Returns
-------
H : array
List of Hankel singular values.
See Also
--------
gram
Notes
-----
The Hankel singular values are the singular values of the Hankel operator.
In practice, we compute the square root of the eigenvalues of the matrix
formed by taking the product of the observability and controllability
Gramians. There are other (more efficient) methods based on solving the
Lyapunov equation in a particular way (more details soon).
Examples
--------
>>> G = ct.tf2ss([1], [1, 2])
>>> H = ct.hsvd(G)
>>> H[0]
np.float64(0.25)
control.impulse_response
Python Library Documentation: function impulse_response in module control.timeresp
impulse_response(sysdata, timepts=None, input_indices=None, output_indices=None, timepts_num=None, transpose=False, return_states=False, squeeze=None, **kwargs)
Compute the impulse response for a linear system.
If the system has multiple inputs and/or multiple outputs, the impulse
response is computed for each input/output pair, with all other inputs
set to zero. Optionally, a single input and/or single output can be
selected, in which case all other inputs are set to 0 and all other
outputs are ignored.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which impulse response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a scalar (time vector is
auto-computed if not given; see `step_response` for more detail).
input_indices (or input) : int, optional
Only compute the impulse response for the listed input. If not
specified, the impulse responses for each independent input are
computed.
output_indices (or output) : int, optional
Only report the step response for the listed output. If not
specified, all outputs are reported.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array (auto-computed if not given); ignored if the system is
discrete time.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 2D array (indexed by the
output number and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, initial_response, step_response
Notes
-----
This function uses the `forced_response` function to compute the time
response. For continuous-time systems, the initial condition is altered
to account for the initial impulse. For discrete-time systems, the
impulse is sized so that it has unit area. The impulse response for
nonlinear systems is not implemented.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.impulse_response(G)
control.initial_response
Python Library Documentation: function initial_response in module control.timeresp
initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs)
Compute the initial condition response for a linear system.
If the system has multiple outputs (MIMO), optionally, one output
may be selected. If no selection is made for the output, all
outputs are given.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which initial response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number (time vector is
auto-computed if not given; see `step_response` for more detail).
initial_state (or X0) : array_like or float, optional
Initial condition (default = 0). Numbers are converted to constant
arrays with the correct shape.
output_indices (or output) : int
Index of the output that will be used in this simulation. Set
to None to not trim outputs.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `timepts` is not
provided as an array (auto-computed if not given); ignored if the
system is discrete time.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 2D array (indexed by the
output number and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, impulse_response, step_response
Notes
-----
This function uses the `forced_response` function with the input set to
zero.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.initial_response(G)
control.input_output_response
Python Library Documentation: function input_output_response in module control.nlsys
input_output_response(sys, timepts=None, inputs=0.0, initial_state=0.0, params=None, ignore_errors=False, transpose=False, return_states=False, squeeze=None, solve_ivp_kwargs=None, evaluation_times='T', **kwargs)
Compute the output response of a system to a given input.
Simulate a dynamical system with a given input and return its output
and state values.
Parameters
----------
sys : `NonlinearIOSystem` or list of `NonlinearIOSystem`
I/O system(s) for which input/output response is simulated.
timepts (or T) : array_like
Time steps at which the input is defined; values must be evenly spaced.
inputs (or U) : array_like, list, or number, optional
Input array giving input at each time in `timepts` (default =
0). If a list is specified, each element in the list will be
treated as a portion of the input and broadcast (if necessary) to
match the time vector.
initial_state (or X0) : array_like, list, or number, optional
Initial condition (default = 0). If a list is given, each element
in the list will be flattened and stacked into the initial
condition. If a smaller number of elements are given that the
number of states in the system, the initial condition will be padded
with zeros.
evaluation_times (or t_eval) : array-list, optional
List of times at which the time response should be computed.
Defaults to `timepts`.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple. See
`forced_response` for more details. If True, return the values of
the state at each time Default is False.
params : dict, optional
Parameter values for the system. Passed to the evaluation functions
for the system as default values, overriding internal defaults.
squeeze : bool, optional
If True and if the system has a single output, return the system
output as a 1D array rather than a 2D array. If False, return the
system output as a 2D array even if the system is SISO. Default
value set by `config.defaults['control.squeeze_time_response']`.
Returns
-------
response : `TimeResponseData`
Time response data object representing the input/output response.
When accessed as a tuple, returns ``(time, outputs)`` or ``(time,
outputs, states`` if `return_x` is True. If the input/output system
signals are named, these names will be used as labels for the time
response. If `sys` is a list of systems, returns a `TimeResponseList`
object. Results can be plotted using the `~TimeResponseData.plot`
method. See `TimeResponseData` for more detailed information.
response.time : array
Time values of the output.
response.outputs : array
Response of the system. If the system is SISO and `squeeze` is not
True, the array is 1D (indexed by time). If the system is not SISO
or `squeeze` is False, the array is 2D (indexed by output and time).
response.states : array
Time evolution of the state vector, represented as a 2D array
indexed by state and time.
response.inputs : array
Input(s) to the system, indexed by input and time.
response.params : dict
Parameters values used for the simulation.
Other Parameters
----------------
ignore_errors : bool, optional
If False (default), errors during computation of the trajectory
will raise a `RuntimeError` exception. If True, do not raise
an exception and instead set `response.success` to False and
place an error message in `response.message`.
solve_ivp_method : str, optional
Set the method used by `scipy.integrate.solve_ivp`. Defaults
to 'RK45'.
solve_ivp_kwargs : dict, optional
Pass additional keywords to `scipy.integrate.solve_ivp`.
transpose : bool, default=False
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`).
Raises
------
TypeError
If the system is not an input/output system.
ValueError
If time step does not match sampling time (for discrete-time systems).
Notes
-----
If a smaller number of initial conditions are given than the number of
states in the system, the initial conditions will be padded with zeros.
This is often useful for interconnected control systems where the
process dynamics are the first system and all other components start
with zero initial condition since this can be specified as [xsys_0, 0].
A warning is issued if the initial conditions are padded and and the
final listed initial state is not zero.
If discontinuous inputs are given, the underlying SciPy numerical
integration algorithms can sometimes produce erroneous results due to
the default tolerances that are used. The `solve_ivp_method` and
`solve_ivp_keywords` parameters can be used to tune the ODE solver and
produce better results. In particular, using 'LSODA' as the
`solve_ivp_method`, setting the `rtol` parameter to a smaller value
(e.g. using ``solve_ivp_kwargs={'rtol': 1e-4}``), or setting the
maximum step size to a smaller value (e.g. ``solve_ivp_kwargs=
{'max_step': 0.01}``) can provide more accurate results.
control.interconnect
Python Library Documentation: function interconnect in module control.nlsys
interconnect(syslist, connections=None, inplist=None, outlist=None, params=None, check_unused=True, add_unused=False, ignore_inputs=None, ignore_outputs=None, warn_duplicate=None, debug=False, **kwargs)
Interconnect a set of input/output systems.
This function creates a new system that is an interconnection of a set of
input/output systems. If all of the input systems are linear I/O systems
(type `StateSpace`) then the resulting system will be
a linear interconnected I/O system (type `LinearICSystem`)
with the appropriate inputs, outputs, and states. Otherwise, an
interconnected I/O system (type `InterconnectedSystem`)
will be created.
Parameters
----------
syslist : list of `NonlinearIOSystem`
The list of (state-based) input/output systems to be connected.
connections : list of connections, optional
Description of the internal connections between the subsystems::
[connection1, connection2, ...]
Each connection is itself a list that describes an input to one of
the subsystems. The entries are of the form::
[input-spec, output-spec1, output-spec2, ...]
The input-spec can be in a number of different forms. The lowest
level representation is a tuple of the form ``(subsys_i, inp_j)``
where `subsys_i` is the index into `syslist` and `inp_j` is the
index into the input vector for the subsystem. If the signal index
is omitted, then all subsystem inputs are used. If systems and
signals are given names, then the forms 'sys.sig' or ('sys', 'sig')
are also recognized. Finally, for multivariable systems the signal
index can be given as a list, for example '(subsys_i, [inp_j1, ...,
inp_jn])'; or as a slice, for example, 'sys.sig[i:j]'; or as a base
name 'sys.sig' (which matches 'sys.sig[i]').
Similarly, each output-spec should describe an output signal from
one of the subsystems. The lowest level representation is a tuple
of the form ``(subsys_i, out_j, gain)``. The input will be
constructed by summing the listed outputs after multiplying by the
gain term. If the gain term is omitted, it is assumed to be 1. If
the subsystem index 'subsys_i' is omitted, then all outputs of the
subsystem are used. If systems and signals are given names, then
the form 'sys.sig', ('sys', 'sig') or ('sys', 'sig', gain) are also
recognized, and the special form '-sys.sig' can be used to specify
a signal with gain -1. Lists, slices, and base names can also be
used, as long as the number of elements for each output spec
matches the input spec.
If omitted, the `interconnect` function will attempt to create the
interconnection map by connecting all signals with the same base
names (ignoring the system name). Specifically, for each input
signal name in the list of systems, if that signal name corresponds
to the output signal in any of the systems, it will be connected to
that input (with a summation across all signals if the output name
occurs in more than one system).
The `connections` keyword can also be set to False, which will leave
the connection map empty and it can be specified instead using the
low-level `InterconnectedSystem.set_connect_map`
method.
inplist : list of input connections, optional
List of connections for how the inputs for the overall system are
mapped to the subsystem inputs. The entries for a connection are
of the form::
[input-spec1, input-spec2, ...]
Each system input is added to the input for the listed subsystem.
If the system input connects to a subsystem with a single input, a
single input specification can be given (without the inner list).
If omitted the `input` parameter will be used to identify the list
of input signals to the overall system.
outlist : list of output connections, optional
List of connections for how the outputs from the subsystems are
mapped to overall system outputs. The entries for a connection are
of the form::
[output-spec1, output-spec2, ...]
If an output connection contains more than one signal specification,
then those signals are added together (multiplying by the any gain
term) to form the system output.
If omitted, the output map can be specified using the
`InterconnectedSystem.set_output_map` method.
inputs : int, list of str or None, optional
Description of the system inputs. This can be given as an integer
count or as a list of strings that name the individual signals. If
an integer count is specified, the names of the signal will be of
the form 's[i]' (where 's' is one of 'u', 'y', or 'x'). If this
parameter is not given or given as None, the relevant quantity will
be determined when possible based on other information provided to
functions using the system.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`. The
default is None, in which case the states will be given names of
the form '<subsys_name><delim><state_name>', for each subsys in
syslist and each state_name of each subsys, where <delim> is the
value of `config.defaults['iosys.state_name_delim']`.
params : dict, optional
Parameter values for the systems. Passed to the evaluation functions
for the system as default values, overriding internal defaults. If
not specified, defaults to parameters from subsystems.
dt : timebase, optional
The timebase for the system, used to specify whether the system is
operating in continuous or discrete-time. It can have the following
values:
* `dt` = 0: continuous-time system (default)
* `dt` > 0`: discrete-time system with sampling period `dt`
* `dt` = True: discrete time with unspecified sampling period
* `dt` = None: no timebase specified
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Returns
-------
sys : `InterconnectedSystem`
`NonlinearIOSystem` consisting of the interconnected subsystems.
Other Parameters
----------------
input_prefix, output_prefix, state_prefix : string, optional
Set the prefix for input, output, and state signals. Defaults =
'u', 'y', 'x'.
check_unused : bool, optional
If True, check for unused sub-system signals. This check is
not done if connections is False, and neither input nor output
mappings are specified.
add_unused : bool, optional
If True, subsystem signals that are not connected to other components
are added as inputs and outputs of the interconnected system.
ignore_inputs : list of input-spec, optional
A list of sub-system inputs known not to be connected. This is
*only* used in checking for unused signals, and does not
disable use of the input.
Besides the usual input-spec forms (see `connections`), an
input-spec can be just the signal base name, in which case all
signals from all sub-systems with that base name are
considered ignored.
ignore_outputs : list of output-spec, optional
A list of sub-system outputs known not to be connected. This
is *only* used in checking for unused signals, and does not
disable use of the output.
Besides the usual output-spec forms (see `connections`), an
output-spec can be just the signal base name, in which all
outputs from all sub-systems with that base name are
considered ignored.
warn_duplicate : None, True, or False, optional
Control how warnings are generated if duplicate objects or names are
detected. In None (default), then warnings are generated for
systems that have non-generic names. If False, warnings are not
generated and if True then warnings are always generated.
debug : bool, default=False
Print out information about how signals are being processed that
may be useful in understanding why something is not working.
Examples
--------
>>> P = ct.rss(2, 2, 2, strictly_proper=True, name='P')
>>> C = ct.rss(2, 2, 2, name='C')
>>> T = ct.interconnect(
... [P, C],
... connections=[
... ['P.u[0]', 'C.y[0]'], ['P.u[1]', 'C.y[1]'],
... ['C.u[0]', '-P.y[0]'], ['C.u[1]', '-P.y[1]']],
... inplist=['C.u[0]', 'C.u[1]'],
... outlist=['P.y[0]', 'P.y[1]'],
... )
This expression can be simplified using either slice notation or
just signal basenames:
>>> T = ct.interconnect(
... [P, C], connections=[['P.u[:]', 'C.y[:]'], ['C.u', '-P.y']],
... inplist='C.u', outlist='P.y[:]')
or further simplified by omitting the input and output signal
specifications (since all inputs and outputs are used):
>>> T = ct.interconnect(
... [P, C], connections=[['P', 'C'], ['C', '-P']],
... inplist=['C'], outlist=['P'])
A feedback system can also be constructed using the
`summing_junction` function and the ability to
automatically interconnect signals with the same names:
>>> P = ct.tf(1, [1, 0], inputs='u', outputs='y')
>>> C = ct.tf(10, [1, 1], inputs='e', outputs='u')
>>> sumblk = ct.summing_junction(inputs=['r', '-y'], output='e')
>>> T = ct.interconnect([P, C, sumblk], inputs='r', outputs='y')
Notes
-----
If a system is duplicated in the list of systems to be connected,
a warning is generated and a copy of the system is created with the
name of the new system determined by adding the prefix and suffix
strings in `config.defaults['iosys.duplicate_system_name_prefix']`
and `config.defaults['iosys.duplicate_system_name_suffix']`, with the
default being to add the suffix '$copy' to the system name.
In addition to explicit lists of system signals, it is possible to
lists vectors of signals, using one of the following forms::
(subsys, [i1, ..., iN], gain) # signals with indices i1, ..., in
'sysname.signal[i:j]' # range of signal names, i through j-1
'sysname.signal[:]' # all signals with given prefix
While in many Python functions tuples can be used in place of lists,
for the interconnect() function the only use of tuples should be in the
specification of an input- or output-signal via the tuple notation
``(subsys_i, signal_j, gain)`` (where `gain` is optional). If you get an
unexpected error message about a specification being of the wrong type
or not being found, check to make sure you are not using a tuple where
you should be using a list.
In addition to its use for general nonlinear I/O systems, the
`interconnect` function allows linear systems to be
interconnected using named signals (compared with the
legacy `connect` function, which uses signal indices) and to be
treated as both a `StateSpace` system as well as an
`InputOutputSystem`.
The `input` and `output` keywords can be used instead of `inputs` and
`outputs`, for more natural naming of SISO systems.
control.iosys
Python Library Documentation: module control.iosys in control
NAME
control.iosys - I/O system class and helper functions.
DESCRIPTION
This module implements the `InputOutputSystem` class, which is used as a
parent class for `LTI`, `StateSpace`, `TransferFunction`,
`NonlinearIOSystem`, class:`FrequencyResponseData`, `InterconnectedSystem`
and other similar classes that allow naming of signals.
CLASSES
builtins.object
InputOutputSystem
numpy.ndarray(builtins.object)
NamedSignal
class InputOutputSystem(builtins.object)
| InputOutputSystem(name=None, inputs=None, outputs=None, states=None, input_prefix='u', output_prefix='y', state_prefix='x', **kwargs)
|
| Base class for input/output systems.
|
| The `InputOutputSystem` class allows (possibly nonlinear) input/output
| systems to be represented in Python. It is used as a parent class for
| a set of subclasses that are used to implement specific structures and
| operations for different types of input/output dynamical systems.
|
| The timebase for the system, `dt`, is used to specify whether the system
| is operating in continuous or discrete time. It can have the following
| values:
|
| * `dt` = None: No timebase specified
| * `dt` = 0: Continuous time system
| * `dt` > 0: Discrete time system with sampling time dt
| * `dt` = True: Discrete time system with unspecified sampling time
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or a list of strings that name the individual signals. If an
| integer count is specified, the names of the signal will be of the
| form 's[i]' (where 's' is given by the `input_prefix` parameter and
| has default value 'u'). If this parameter is not given or given as
| None, the relevant quantity will be determined when possible
| based on other information provided to functions using the system.
| outputs : int, list of str, or None
| Description of the system outputs. Same format as `inputs`, with
| the prefix given by `output_prefix` (defaults to 'y').
| states : int, list of str, or None
| Description of the system states. Same format as `inputs`, with
| the prefix given by `state_prefix` (defaults to 'x').
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None indicates
| unspecified timebase (either continuous or discrete time).
| name : string, optional
| System name (used for specifying signals). If unspecified, a generic
| name 'sys[id]' is generated with a unique integer id.
| params : dict, optional
| Parameter values for the system. Passed to the evaluation functions
| for the system as default values, overriding internal defaults.
|
| Attributes
| ----------
| ninputs, noutputs, nstates : int
| Number of input, output, and state variables.
| input_index, output_index, state_index : dict
| Dictionary of signal names for the inputs, outputs, and states and
| the index of the corresponding array.
| input_labels, output_labels, state_labels : list of str
| List of signal names for inputs, outputs, and states.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| Other Parameters
| ----------------
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
| repr_format : str
| String representation format. See `control.iosys_repr`.
|
| Methods defined here:
|
| __init__(self, name=None, inputs=None, outputs=None, states=None, input_prefix='u', output_prefix='y', state_prefix='x', **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __repr__(self)
| Return repr(self).
|
| __str__(self)
| String representation of an input/output object
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __array_priority__ = 20
|
| dt = None
|
| ninputs = None
|
| noutputs = None
|
| nstates = None
class NamedSignal(numpy.ndarray)
| NamedSignal(input_array, signal_labels=None, trace_labels=None)
|
| Named signal with label-based access.
|
| This class modifies the `numpy.ndarray` class and allows signals to
| be accessed using the signal name in addition to indices and slices.
|
| Signals can be either a 2D array, index by signal and time, or a 3D
| array, indexed by signal, trace, and time.
|
| Attributes
| ----------
| signal_labels : list of str
| Label names for each of the signal elements in the signal.
| trace_labels : list of str, optional
| Label names for each of the traces in the signal (if multi-trace).
|
| Examples
| --------
| >>> sys = ct.rss(
| ... states=['p1', 'p2', 'p3'], inputs=['u1', 'u2'], outputs=['y'])
| >>> resp = ct.step_response(sys)
| >>> resp.states['p1', 'u1'] # Step response from u1 to p1
| NamedSignal(...)
|
| Method resolution order:
| NamedSignal
| numpy.ndarray
| builtins.object
|
| Methods defined here:
|
| __array_finalize__(self, obj)
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __getitem__(self, key)
| Return self[key].
|
| __repr__(self)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(cls, input_array, signal_labels=None, trace_labels=None)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| ----------------------------------------------------------------------
| Methods inherited from numpy.ndarray:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __array_wrap__(...)
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __imul__(self, value, /)
| Return self*=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __ipow__(self, value, /)
| Return self**=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| a.all(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if all elements evaluate to True.
|
| Refer to `numpy.all` for full documentation.
|
| See Also
| --------
| numpy.all : equivalent function
|
| any(...)
| a.any(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if any of the elements of `a` evaluate to True.
|
| Refer to `numpy.any` for full documentation.
|
| See Also
| --------
| numpy.any : equivalent function
|
| argmax(...)
| a.argmax(axis=None, out=None, *, keepdims=False)
|
| Return indices of the maximum values along the given axis.
|
| Refer to `numpy.argmax` for full documentation.
|
| See Also
| --------
| numpy.argmax : equivalent function
|
| argmin(...)
| a.argmin(axis=None, out=None, *, keepdims=False)
|
| Return indices of the minimum values along the given axis.
|
| Refer to `numpy.argmin` for detailed documentation.
|
| See Also
| --------
| numpy.argmin : equivalent function
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| flatten(...)
| a.flatten(order='C')
|
| Return a copy of the array collapsed into one dimension.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order.
| 'F' means to flatten in column-major (Fortran-
| style) order. 'A' means to flatten in column-major
| order if `a` is Fortran *contiguous* in memory,
| row-major order otherwise. 'K' means to flatten
| `a` in the order the elements occur in memory.
| The default is 'C'.
|
| Returns
| -------
| y : ndarray
| A copy of the input array, flattened to one dimension.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,2], [3,4]])
| >>> a.flatten()
| array([1, 2, 3, 4])
| >>> a.flatten('F')
| array([1, 3, 2, 4])
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| max(...)
| a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the maximum along a given axis.
|
| Refer to `numpy.amax` for full documentation.
|
| See Also
| --------
| numpy.amax : equivalent function
|
| mean(...)
| a.mean(axis=None, dtype=None, out=None, keepdims=False, *, where=True)
|
| Returns the average of the array elements along given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean : equivalent function
|
| min(...)
| a.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the minimum along a given axis.
|
| Refer to `numpy.amin` for full documentation.
|
| See Also
| --------
| numpy.amin : equivalent function
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| prod(...)
| a.prod(axis=None, dtype=None, out=None, keepdims=False,
| initial=1, where=True)
|
| Return the product of the array elements over the given axis
|
| Refer to `numpy.prod` for full documentation.
|
| See Also
| --------
| numpy.prod : equivalent function
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| ravel(...)
| a.ravel([order])
|
| Return a flattened array.
|
| Refer to `numpy.ravel` for full documentation.
|
| See Also
| --------
| numpy.ravel : equivalent function
|
| ndarray.flat : a flat iterator on the array.
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| squeeze(...)
| a.squeeze(axis=None)
|
| Remove axes of length one from `a`.
|
| Refer to `numpy.squeeze` for full documentation.
|
| See Also
| --------
| numpy.squeeze : equivalent function
|
| std(...)
| a.std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the standard deviation of the array elements along given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std : equivalent function
|
| sum(...)
| a.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
|
| Return the sum of the array elements over the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum : equivalent function
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tolist(...)
| a.tolist()
|
| Return the array as an ``a.ndim``-levels deep nested list of Python scalars.
|
| Return a copy of the array data as a (nested) Python list.
| Data items are converted to the nearest compatible builtin Python type, via
| the `~numpy.ndarray.item` function.
|
| If ``a.ndim`` is 0, then since the depth of the nested list is 0, it will
| not be a list at all, but a simple Python scalar.
|
| Parameters
| ----------
| none
|
| Returns
| -------
| y : object, or list of object, or list of list of object, or ...
| The possibly nested list of array elements.
|
| Notes
| -----
| The array may be recreated via ``a = np.array(a.tolist())``, although this
| may sometimes lose precision.
|
| Examples
| --------
| For a 1D array, ``a.tolist()`` is almost the same as ``list(a)``,
| except that ``tolist`` changes numpy scalars to Python scalars:
|
| >>> import numpy as np
| >>> a = np.uint32([1, 2])
| >>> a_list = list(a)
| >>> a_list
| [1, 2]
| >>> type(a_list[0])
| <class 'numpy.uint32'>
| >>> a_tolist = a.tolist()
| >>> a_tolist
| [1, 2]
| >>> type(a_tolist[0])
| <class 'int'>
|
| Additionally, for a 2D array, ``tolist`` applies recursively:
|
| >>> a = np.array([[1, 2], [3, 4]])
| >>> list(a)
| [array([1, 2]), array([3, 4])]
| >>> a.tolist()
| [[1, 2], [3, 4]]
|
| The base case for this recursion is a 0D array:
|
| >>> a = np.array(1)
| >>> list(a)
| Traceback (most recent call last):
| ...
| TypeError: iteration over a 0-d array
| >>> a.tolist()
| 1
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| var(...)
| a.var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the variance of the array elements, along given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var : equivalent function
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods inherited from numpy.ndarray:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from numpy.ndarray:
|
| T
| View of the transposed array.
|
| Same as ``self.transpose()``.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.T
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.T
| array([1, 2, 3, 4])
|
| See Also
| --------
| transpose
|
| __array_interface__
| Array protocol: Python side.
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| ptp
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from numpy.ndarray:
|
| __hash__ = None
FUNCTIONS
common_timebase(dt1, dt2)
Find the common timebase when interconnecting systems.
Parameters
----------
dt1, dt2 : `InputOutputSystem` or float
Number or system with a 'dt' attribute (e.g. `TransferFunction`
or `StateSpace` system).
Returns
-------
dt : number
The common timebase of dt1 and dt2, as specified in
:ref:`conventions-ref`.
Raises
------
ValueError
When no compatible time base can be found.
iosys_repr(sys, format=None)
Return representation of an I/O system.
Parameters
----------
sys : `InputOutputSystem`
System for which the representation is generated.
format : str
Format to use in creating the representation:
* 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
* 'eval' : system specific, loadable representation
* 'latex' : HTML/LaTeX representation of the object
Returns
-------
str
String representing the input/output system.
Notes
-----
By default, the representation for an input/output is set to 'eval'.
Set `config.defaults['iosys.repr_format']` to change for all I/O systems
or use the `repr_format` parameter for a single system.
Jupyter will automatically use the 'latex' representation for I/O
systems, when available.
isctime(sys=None, dt=None, strict=False)
Check to see if a system is a continuous-time system.
Parameters
----------
sys : I/O system, optional
System to be checked.
dt : None or number, optional
Timebase to be checked.
strict : bool (default = False)
If strict is True, make sure that timebase is not None.
isdtime(sys=None, strict=False, dt=None)
Check to see if a system is a discrete-time system.
Parameters
----------
sys : I/O system, optional
System to be checked.
dt : None or number, optional
Timebase to be checked.
strict : bool, default=False
If strict is True, make sure that timebase is not None.
issiso(sys, strict=False)
Check to see if a system is single input, single output.
Parameters
----------
sys : I/O or LTI system
System to be checked.
strict : bool (default = False)
If strict is True, do not treat scalars as SISO.
timebase(sys, strict=True)
Return the timebase for a system.
dt = timebase(sys)
returns the timebase for a system 'sys'. If the strict option is
set to True, `dt` = True will be returned as 1.
Parameters
----------
sys : `InputOutputSystem` or float
System whose timebase is to be determined.
strict : bool, optional
Whether to implement strict checking. If set to True (default),
a float will always be returned (`dt` = True will be returned as 1).
Returns
-------
dt : timebase
Timebase for the system (0 = continuous time, None = unspecified).
DATA
__all__ = ['InputOutputSystem', 'NamedSignal', 'issiso', 'timebase', '...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\iosys.py
control.iosys_repr
Python Library Documentation: function iosys_repr in module control.iosys
iosys_repr(sys, format=None)
Return representation of an I/O system.
Parameters
----------
sys : `InputOutputSystem`
System for which the representation is generated.
format : str
Format to use in creating the representation:
* 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
* 'eval' : system specific, loadable representation
* 'latex' : HTML/LaTeX representation of the object
Returns
-------
str
String representing the input/output system.
Notes
-----
By default, the representation for an input/output is set to 'eval'.
Set `config.defaults['iosys.repr_format']` to change for all I/O systems
or use the `repr_format` parameter for a single system.
Jupyter will automatically use the 'latex' representation for I/O
systems, when available.
control.isctime
Python Library Documentation: function isctime in module control.iosys
isctime(sys=None, dt=None, strict=False)
Check to see if a system is a continuous-time system.
Parameters
----------
sys : I/O system, optional
System to be checked.
dt : None or number, optional
Timebase to be checked.
strict : bool (default = False)
If strict is True, make sure that timebase is not None.
control.isdtime
Python Library Documentation: function isdtime in module control.iosys
isdtime(sys=None, strict=False, dt=None)
Check to see if a system is a discrete-time system.
Parameters
----------
sys : I/O system, optional
System to be checked.
dt : None or number, optional
Timebase to be checked.
strict : bool, default=False
If strict is True, make sure that timebase is not None.
control.ispassive
Python Library Documentation: function ispassive in module control.passivity
ispassive(sys, ofp_index=0, ifp_index=0)
Indicate if a linear time invariant (LTI) system is passive.
Checks if system is passive with the given output feedback (OFP)
and input feedforward (IFP) passivity indices.
Parameters
----------
sys : LTI
System to be checked.
ofp_index : float
Output feedback passivity index.
ifp_index : float
Input feedforward passivity index.
Returns
-------
bool
The system is passive.
Notes
-----
Querying if the system is passive in the sense of
.. math:: V(x) >= 0 \land \dot{V}(x) <= y^T u
is equivalent to the default case of `ofp_index` = 0 and `ifp_index` =
0. Note that computing the `ofp_index` and `ifp_index` for a system,
then using both values simultaneously as inputs to this function is not
guaranteed to have an output of True (the system might not be passive
with both indices at the same time).
For more details, see [1]_.
References
----------
.. [1] McCourt, Michael J., and Panos J. Antsaklis "Demonstrating
passivity and dissipativity using computational methods."
Technical Report of the ISIS Group at the University of Notre
Dame. ISIS-2013-008, Aug. 2013.
control.issiso
Python Library Documentation: function issiso in module control.iosys
issiso(sys, strict=False)
Check to see if a system is single input, single output.
Parameters
----------
sys : I/O or LTI system
System to be checked.
strict : bool (default = False)
If strict is True, do not treat scalars as SISO.
control.issys
Python Library Documentation: function issys in module control.ctrlutil
issys(obj)
Deprecated function to check if an object is an LTI system.
.. deprecated:: 0.10.0
Use isinstance(obj, ct.LTI)
control.linearize
Python Library Documentation: function linearize in module control.nlsys
linearize(sys, xeq, ueq=None, t=0, params=None, **kw)
Linearize an input/output system at a given state and input.
Compute the linearization of an I/O system at an operating point (state
and input) and returns a `StateSpace` object. The
operating point need not be an equilibrium point.
Parameters
----------
sys : `InputOutputSystem`
The system to be linearized.
xeq : array or `OperatingPoint`
The state or operating point at which the linearization will be
evaluated (does not need to be an equilibrium state).
ueq : array, optional
The input at which the linearization will be evaluated (does not need
to correspond to an equilibrium state). Can be omitted if `xeq` is
an `OperatingPoint`. Defaults to 0.
t : float, optional
The time at which the linearization will be computed (for time-varying
systems).
params : dict, optional
Parameter values for the systems. Passed to the evaluation functions
for the system as default values, overriding internal defaults.
name : string, optional
Set the name of the linearized system. If not specified and
if `copy_names` is False, a generic name 'sys[id]' is generated
with a unique integer id. If `copy_names` is True, the new system
name is determined by adding the prefix and suffix strings in
`config.defaults['iosys.linearized_system_name_prefix']` and
`config.defaults['iosys.linearized_system_name_suffix']`, with the
default being to add the suffix '$linearized'.
copy_names : bool, Optional
If True, Copy the names of the input signals, output signals, and
states to the linearized system.
Returns
-------
ss_sys : `StateSpace`
The linearization of the system, as a `StateSpace`
object.
Other Parameters
----------------
inputs : int, list of str or None, optional
Description of the system inputs. If not specified, the original
system inputs are used. See `InputOutputSystem` for more
information.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`.
control.linfnorm
Python Library Documentation: function linfnorm in module control.statesp
linfnorm(sys, tol=1e-10)
L-infinity norm of a linear system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
System to evaluate L-infinity norm of.
tol : real scalar
Tolerance on norm estimate.
Returns
-------
gpeak : non-negative scalar
L-infinity norm.
fpeak : non-negative scalar
Frequency, in rad/s, at which gpeak occurs.
See Also
--------
slycot.ab13dd
Notes
-----
For stable systems, the L-infinity and H-infinity norms are equal;
for unstable systems, the H-infinity norm is infinite, while the
L-infinity norm is finite if the system has no poles on the
imaginary axis.
control.lqe
Python Library Documentation: function lqe in module control.stochsys
lqe(*args, **kwargs)
lqe(A, G, C, QN, RN, [, NN])
Continuous-time linear quadratic estimator (Kalman filter).
Given the continuous-time system
.. math::
dx/dt &= Ax + Bu + Gw \\
y &= Cx + Du + v
with unbiased process noise w and measurement noise v with covariances
.. math:: E\{w w^T\} = QN, E\{v v^T\} = RN, E\{w v^T\} = NN
The lqe() function computes the observer gain matrix L such that the
stationary (non-time-varying) Kalman filter
.. math:: dx_e/dt = A x_e + B u + L(y - C x_e - D u)
produces a state estimate x_e that minimizes the expected squared error
using the sensor measurements y. The noise cross-correlation `NN` is
set to zero when omitted.
The function can be called with either 3, 4, 5, or 6 arguments:
* ``L, P, E = lqe(sys, QN, RN)``
* ``L, P, E = lqe(sys, QN, RN, NN)``
* ``L, P, E = lqe(A, G, C, QN, RN)``
* ``L, P, E = lqe(A, G, C, QN, RN, NN)``
where `sys` is an `LTI` object, and `A`, `G`, `C`, `QN`, `RN`, and `NN`
are 2D arrays or matrices of appropriate dimension.
Parameters
----------
A, G, C : 2D array_like
Dynamics, process noise (disturbance), and output matrices.
sys : `StateSpace` or `TransferFunction`
Linear I/O system, with the process noise input taken as the system
input.
QN, RN : 2D array_like
Process and sensor noise covariance matrices.
NN : 2D array, optional
Cross covariance matrix. Not currently implemented.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
L : 2D array
Kalman estimator gain.
P : 2D array
Solution to Riccati equation:
.. math::
A P + P A^T - (P C^T + G N) R^{-1} (C P + N^T G^T) + G Q G^T = 0
E : 1D array
Eigenvalues of estimator poles eig(A - L C).
Notes
-----
If the first argument is an LTI object, then this object will be used
to define the dynamics, noise and output matrices. Furthermore, if the
LTI object corresponds to a discrete-time system, the `dlqe`
function will be called.
Examples
--------
>>> L, P, E = lqe(A, G, C, QN, RN) # doctest: +SKIP
>>> L, P, E = lqe(A, G, C, Q, RN, NN) # doctest: +SKIP
See Also
--------
lqr, dlqe, dlqr
control.lqr
Python Library Documentation: function lqr in module control.statefbk
lqr(*args, **kwargs)
lqr(A, B, Q, R[, N])
Linear quadratic regulator design.
The lqr() function computes the optimal state feedback controller
u = -K x that minimizes the quadratic cost
.. math:: J = \int_0^\infty (x' Q x + u' R u + 2 x' N u) dt
The function can be called with either 3, 4, or 5 arguments:
* ``K, S, E = lqr(sys, Q, R)``
* ``K, S, E = lqr(sys, Q, R, N)``
* ``K, S, E = lqr(A, B, Q, R)``
* ``K, S, E = lqr(A, B, Q, R, N)``
where `sys` is an `LTI` object, and `A`, `B`, `Q`, `R`, and `N` are
2D arrays or matrices of appropriate dimension.
Parameters
----------
A, B : 2D array_like
Dynamics and input matrices.
sys : LTI `StateSpace` system
Linear system.
Q, R : 2D array
State and input weight matrices.
N : 2D array, optional
Cross weight matrix.
integral_action : ndarray, optional
If this keyword is specified, the controller includes integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current state to generate the error for the
internal integrator states of the control law. The number of
outputs that are to be integrated must match the number of
additional rows and columns in the `Q` matrix.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
K : 2D array
State feedback gains.
S : 2D array
Solution to Riccati equation.
E : 1D array
Eigenvalues of the closed loop system.
See Also
--------
lqe, dlqr, dlqe
Notes
-----
If the first argument is an LTI object, then this object will be used
to define the dynamics and input matrices. Furthermore, if the LTI
object corresponds to a discrete-time system, the `dlqr` function
will be called.
Examples
--------
>>> K, S, E = lqr(sys, Q, R, [N]) # doctest: +SKIP
>>> K, S, E = lqr(A, B, Q, R, [N]) # doctest: +SKIP
control.lti
Python Library Documentation: module control.lti in control
NAME
control.lti - LTI class and functions for linear systems.
DESCRIPTION
This module contains the LTI parent class to the child classes
StateSpace and TransferFunction.
CLASSES
control.iosys.InputOutputSystem(builtins.object)
LTI
class LTI(control.iosys.InputOutputSystem)
| LTI(inputs=1, outputs=1, states=None, name=None, **kwargs)
|
| Parent class for linear time-invariant system objects.
|
| LTI is the parent to the `FrequencyResponseData`, `StateSpace`, and
| `TransferFunction` child classes. It contains the number of inputs and
| outputs, and the timebase (dt) for the system. This class is not
| generally accessed directly by the user.
|
| See Also
| --------
| InputOutputSystem, StateSpace, TransferFunction, FrequencyResponseData
|
| Method resolution order:
| LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __call__(self, x, squeeze=None, warn_infinite=True)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems.
|
| By default, a (complex) scalar will be returned for SISO systems
| and a p x m array will be return for MIMO systems with m inputs and
| p outputs. This can be changed using the `squeeze` keyword.
|
| To evaluate at a frequency `omega` in radians per second,
| enter ``x = omega * 1j`` for continuous-time systems,
| ``x = exp(1j * omega * dt)`` for discrete-time systems, or
| use the `~LTI.frequency_response` method.
|
| Parameters
| ----------
| x : complex or complex 1D array_like
| Complex value(s) at which transfer function will be evaluated.
| squeeze : bool, optional
| Squeeze output, as described below. Default value can be set
| using `config.defaults['control.squeeze_frequency_response']`.
| warn_infinite : bool, optional
| If set to False, turn off divide by zero warning.
|
| Returns
| -------
| fresp : complex ndarray
| The value of the system transfer function at `x`. If the system
| is SISO and `squeeze` is not True, the shape of the array matches
| the shape of `x`. If the system is not SISO or `squeeze` is
| False, the first two dimensions of the array are indices for the
| output and input and the remaining dimensions match `x`. If
| `squeeze` is True then single-dimensional axes are removed.
|
| Notes
| -----
| See `FrequencyResponseData.__call__`, `StateSpace.__call__`,
| `TransferFunction.__call__` for class-specific details.
|
| __init__(self, inputs=1, outputs=1, states=None, name=None, **kwargs)
| Assign the LTI object's numbers of inputs and outputs.
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| dcgain(self)
| Return the zero-frequency (DC) gain.
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two input/output systems.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| __str__(self)
| String representation of an input/output object
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| ninputs = None
|
| noutputs = None
|
| nstates = None
FUNCTIONS
bandwidth(sys, dbdrop=-3)
Find first frequency where gain drops by 3 dB.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system for which the bandwidth should be computed.
dbdrop : float, optional
By how much the gain drop in dB (default = -3) that defines the
bandwidth. Should be a negative scalar.
Returns
-------
bandwidth : ndarray
The first frequency where the gain drops below `dbdrop` of the zero
frequency (DC) gain of the system, or nan if the system has infinite
zero frequency gain, inf if the gain does not drop for any frequency.
Raises
------
TypeError
If `sys` is not an SISO LTI instance.
ValueError
If `dbdrop` is not a negative scalar.
Examples
--------
>>> G = ct.tf([1], [1, 1])
>>> ct.bandwidth(G)
np.float64(0.9976283451102316)
>>> G1 = ct.tf(0.1, [1, 0.1])
>>> wn2 = 1
>>> zeta2 = 0.001
>>> G2 = ct.tf(wn2**2, [1, 2*zeta2*wn2, wn2**2])
>>> ct.bandwidth(G1*G2)
np.float64(0.10184838823897456)
damp(sys, doprint=True)
Compute system's natural frequencies, damping ratios, and poles.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system object.
doprint : bool (optional)
If True, print table with values.
Returns
-------
wn : array
Natural frequency for each system pole.
zeta : array
Damping ratio for each system pole.
poles : array
System pole locations.
See Also
--------
poles
Notes
-----
If the system is continuous
| ``wn = abs(poles)``
| ``zeta = -real(poles)/poles``
If the system is discrete, the discrete poles are mapped to their
equivalent location in the s-plane via
| ``s = log(poles)/dt``
and
| ``wn = abs(s)``
| ``zeta = -real(s)/wn``
Examples
--------
>>> G = ct.tf([1], [1, 4])
>>> wn, zeta, poles = ct.damp(G)
Eigenvalue (pole) Damping Frequency
-4 1 4
dcgain(sys)
Return the zero-frequency (or DC) gain of the given system.
Parameters
----------
sys : LTI
System for which the zero-frequency gain is computed.
Returns
-------
gain : ndarray
The zero-frequency gain, or (inf + nanj) if the system has a pole at
the origin, (nan + nanj) if there is a pole/zero cancellation at the
origin.
Examples
--------
>>> G = ct.tf([1], [1, 2])
>>> ct.dcgain(G) # doctest: +SKIP
np.float(0.5)
evalfr(sys, x, squeeze=None)
Evaluate transfer function of LTI system at complex frequency.
Returns the complex frequency response ``sys(x)`` where `x` is `s` for
continuous-time systems and `z` for discrete-time systems, with
``m = sys.ninputs`` number of inputs and ``p = sys.noutputs`` number of
outputs.
To evaluate at a frequency omega in radians per second, enter
``x = omega * 1j`` for continuous-time systems, or
``x = exp(1j * omega * dt)`` for discrete-time systems, or use
``freqresp(sys, omega)``.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
x : complex scalar or 1D array_like
Complex frequency(s).
squeeze : bool, optional (default=True)
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep all indices (output, input and, if omega is
array_like, frequency) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_frequency_response']`.
Returns
-------
fresp : complex ndarray
The frequency response of the system. If the system is SISO and
squeeze is not True, the shape of the array matches the shape of
omega. If the system is not SISO or squeeze is False, the first two
dimensions of the array are indices for the output and input and the
remaining dimensions match omega. If `squeeze` is True then
single-dimensional axes are removed.
See Also
--------
LTI.__call__, frequency_response, bode_plot
Notes
-----
This function is a wrapper for `StateSpace.__call__` and
`TransferFunction.__call__`.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> fresp = ct.evalfr(G, 1j) # evaluate at s = 1j
freqresp(sys, omega)
Legacy version of frequency_response.
.. deprecated:: 0.9.0
This function will be removed in a future version of python-control.
Use `frequency_response` instead.
frequency_response(sysdata, omega=None, omega_limits=None, omega_num=None, Hz=None, squeeze=None)
Frequency response of an LTI system.
For continuous-time systems with transfer function G, computes the
frequency response as
G(j*omega) = mag * exp(j*phase)
For discrete-time systems, the response is evaluated around the unit
circle such that
G(exp(j*omega*dt)) = mag * exp(j*phase).
In general the system may be multiple input, multiple output (MIMO),
where ``m = self.ninputs`` number of inputs and ``p = self.noutputs``
number of outputs.
Parameters
----------
sysdata : LTI system or list of LTI systems
Linear system(s) for which frequency response is computed.
omega : float or 1D array_like, optional
A list, tuple, array, or scalar value of frequencies in radians/sec
at which the system will be evaluated. Can be a single frequency
or array of frequencies, which will be sorted before evaluation.
If None (default), a common set of frequencies that works across
all given systems is computed.
omega_limits : array_like of two values, optional
Limits to the range of frequencies, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`. Ignored if omega is provided.
omega_num : int, optional
Number of frequency samples at which to compute the response.
Defaults to `config.defaults['freqplot.number_of_samples']`. Ignored
if omega is provided.
Returns
-------
response : `FrequencyResponseData`
Frequency response data object representing the frequency
response. When accessed as a tuple, returns ``(magnitude,
phase, omega)``. If `sysdata` is a list of systems, returns a
`FrequencyResponseList` object. Results can be plotted using
the `~FrequencyResponseData.plot` method. See
`FrequencyResponseData` for more detailed information.
response.magnitude : array
Magnitude of the frequency response (absolute value, not dB or
log10). If the system is SISO and squeeze is not True, the
array is 1D, indexed by frequency. If the system is not SISO
or squeeze is False, the array is 3D, indexed by the output,
input, and, if omega is array_like, frequency. If `squeeze` is
True then single-dimensional axes are removed.
response.phase : array
Wrapped phase, in radians, with same shape as `magnitude`.
response.omega : array
Sorted list of frequencies at which response was evaluated.
Other Parameters
----------------
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s. Omega is always
returned in rad/sec.
squeeze : bool, optional
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep all indices (output, input and, if omega is
array_like, frequency) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_frequency_response']`.
See Also
--------
LTI.__call__, bode_plot
Notes
-----
This function is a wrapper for `StateSpace.frequency_response` and
`TransferFunction.frequency_response`. You can also use the
lower-level methods ``sys(s)`` or ``sys(z)`` to generate the frequency
response for a single system.
All frequency data should be given in rad/sec. If frequency limits are
computed automatically, the `Hz` keyword can be used to ensure that
limits are in factors of decades in Hz, so that Bode plots with
`Hz` = True look better.
The frequency response data can be plotted by calling the `bode_plot`
function or using the `plot` method of the `FrequencyResponseData`
class.
Examples
--------
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
>>> mag, phase, omega = ct.frequency_response(G, [0.1, 1., 10.])
>>> sys = ct.rss(3, 2, 2)
>>> mag, phase, omega = ct.frequency_response(sys, [0.1, 1., 10.])
>>> mag[0, 1, :] # Magnitude of second input to first output
array([..., ..., ...])
>>> phase[1, 0, :] # Phase of first input to second output
array([..., ..., ...])
poles(sys)
Compute system poles.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
Returns
-------
poles : ndarray
Array that contains the system's poles.
See Also
--------
zeros, StateSpace.poles, TransferFunction.poles
zeros(sys)
Compute system zeros.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
Returns
-------
zeros : ndarray
Array that contains the system's zeros.
See Also
--------
poles, StateSpace.zeros, TransferFunction.zeros
DATA
__all__ = ['poles', 'zeros', 'damp', 'evalfr', 'frequency_response', '...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\lti.py
control.lyap
Python Library Documentation: function lyap in module control.mateqn
lyap(A, Q, C=None, E=None, method=None)
Solves the continuous-time Lyapunov equation.
X = lyap(A, Q) solves
:math:`A X + X A^T + Q = 0`
where A and Q are square matrices of the same dimension. Q must be
symmetric.
X = lyap(A, Q, C) solves the Sylvester equation
:math:`A X + X Q + C = 0`
where A and Q are square matrices.
X = lyap(A, Q, None, E) solves the generalized continuous-time
Lyapunov equation
:math:`A X E^T + E X A^T + Q = 0`
where Q is a symmetric matrix and A, Q and E are square matrices of the
same dimension.
Parameters
----------
A, Q : 2D array_like
Input matrices for the Lyapunov or Sylvestor equation.
C : 2D array_like, optional
If present, solve the Sylvester equation.
E : 2D array_like, optional
If present, solve the generalized Lyapunov equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
X : 2D array
Solution to the Lyapunov or Sylvester equation.
control.mag2db
Python Library Documentation: function mag2db in module control.ctrlutil
mag2db(mag)
Convert a magnitude to decibels (dB).
If A is magnitude,
db = 20 * log10(A)
Parameters
----------
mag : float or ndarray
Input magnitude or array of magnitudes.
Returns
-------
db : float or ndarray
Corresponding values in decibels.
Examples
--------
>>> ct.mag2db(10.0) # doctest: +SKIP
20.0
>>> ct.mag2db(np.array([1, 0.01])) # doctest: +SKIP
array([ 0., -40.])
control.margin
Python Library Documentation: function margin in module control.margins
margin(*args)
margin(sys) margin(mag, phase, omega)
Gain and phase margins and associated crossover frequencies.
Can be called as ``margin(sys)`` where `sys` is a SISO LTI system or
``margin(mag, phase, omega)``.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear SISO system representing the loop transfer function.
mag, phase, omega : sequence of array_like
Input magnitude, phase (in deg.), and frequencies (rad/sec) from
bode frequency response data.
Returns
-------
gm : float
Gain margin.
pm : float
Phase margin (in degrees).
wcg : float or array_like
Crossover frequency associated with gain margin (phase crossover
frequency), where phase crosses below -180 degrees.
wcp : float or array_like
Crossover frequency associated with phase margin (gain crossover
frequency), where gain crosses below 1.
Margins are calculated for a SISO open-loop system.
If there is more than one gain crossover, the one at the smallest margin
(deviation from gain = 1), in absolute sense, is returned. Likewise the
smallest phase margin (in absolute sense) is returned.
Examples
--------
>>> G = ct.tf(1, [1, 2, 1, 0])
>>> gm, pm, wcg, wcp = ct.margin(G)
control.margins
Python Library Documentation: module control.margins in control
NAME
control.margins - Functions for computing stability margins and related functions.
FUNCTIONS
disk_margins(L, omega, skew=0.0, returnall=False)
Disk-based stability margins of loop transfer function.
Parameters
----------
L : `StateSpace` or `TransferFunction`
Linear SISO or MIMO loop transfer function.
omega : sequence of array_like
1D array of (non-negative) frequencies (rad/s) at which
to evaluate the disk-based stability margins.
skew : float or array_like, optional
Skew parameter(s) for disk margin (default = 0.0):
* skew = 0.0 "balanced" sensitivity function 0.5*(S - T)
* skew = 1.0 sensitivity function S
* skew = -1.0 complementary sensitivity function T
returnall : bool, optional
If True, return frequency-dependent margins.
If False (default), return worst-case (minimum) margins.
Returns
-------
DM : float or array_like
Disk margin.
DGM : float or array_like
Disk-based gain margin.
DPM : float or array_like
Disk-based phase margin.
Examples
--------
>> omega = np.logspace(-1, 3, 1001)
>> P = control.ss([[0, 10], [-10, 0]], np.eye(2), [[1, 10],
[-10, 1]], 0)
>> K = control.ss([], [], [], [[1, -2], [0, 1]])
>> L = P * K
>> DM, DGM, DPM = control.disk_margins(L, omega, skew=0.0)
margin(*args)
margin(sys) margin(mag, phase, omega)
Gain and phase margins and associated crossover frequencies.
Can be called as ``margin(sys)`` where `sys` is a SISO LTI system or
``margin(mag, phase, omega)``.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear SISO system representing the loop transfer function.
mag, phase, omega : sequence of array_like
Input magnitude, phase (in deg.), and frequencies (rad/sec) from
bode frequency response data.
Returns
-------
gm : float
Gain margin.
pm : float
Phase margin (in degrees).
wcg : float or array_like
Crossover frequency associated with gain margin (phase crossover
frequency), where phase crosses below -180 degrees.
wcp : float or array_like
Crossover frequency associated with phase margin (gain crossover
frequency), where gain crosses below 1.
Margins are calculated for a SISO open-loop system.
If there is more than one gain crossover, the one at the smallest margin
(deviation from gain = 1), in absolute sense, is returned. Likewise the
smallest phase margin (in absolute sense) is returned.
Examples
--------
>>> G = ct.tf(1, [1, 2, 1, 0])
>>> gm, pm, wcg, wcp = ct.margin(G)
phase_crossover_frequencies(sys)
Compute Nyquist plot real-axis crossover frequencies and gains.
Parameters
----------
sys : LTI
SISO LTI system.
Returns
-------
omega : ndarray
1d array of (non-negative) frequencies where Nyquist plot
intersects the real axis.
gains : ndarray
1d array of corresponding gains.
Examples
--------
>>> G = ct.tf([1], [1, 2, 3, 4])
>>> x_omega, x_gain = ct.phase_crossover_frequencies(G)
stability_margins(sysdata, returnall=False, epsw=0.0, method='best')
Stability margins and associated crossover frequencies.
Parameters
----------
sysdata : LTI system or 3-tuple of array_like
Linear SISO system representing the loop transfer function.
Alternatively, a three tuple of the form (mag, phase, omega)
providing the frequency response can be passed.
returnall : bool, optional
If true, return all margins found. If False (default), return only the
minimum stability margins. For frequency data or FRD systems, only
margins in the given frequency region can be found and returned.
epsw : float, optional
Frequencies below this value (default 0.0) are considered static gain,
and not returned as margin.
method : string, optional
Method to use (default is 'best'):
* 'poly': use polynomial method if passed a `LTI` system.
* 'frd': calculate crossover frequencies using numerical
interpolation of a `FrequencyResponseData` representation
of the system if passed a `LTI` system.
* 'best': use the 'poly' method if possible, reverting to 'frd' if
it is detected that numerical inaccuracy is likely to arise in the
'poly' method for for discrete-time systems.
Returns
-------
gm : float or array_like
Gain margin.
pm : float or array_like
Phase margin.
sm : float or array_like
Stability margin, the minimum distance from the Nyquist plot to -1.
wpc : float or array_like
Phase crossover frequency (where phase crosses -180 degrees), which is
associated with the gain margin.
wgc : float or array_like
Gain crossover frequency (where gain crosses 1), which is associated
with the phase margin.
wms : float or array_like
Stability margin frequency (where Nyquist plot is closest to -1).
Notes
-----
The gain margin is determined by the gain of the loop transfer function
at the phase crossover frequency(s), the phase margin is determined by
the phase of the loop transfer function at the gain crossover
frequency(s), and the stability margin is determined by the frequency
of maximum sensitivity (given by the magnitude of 1/(1+L)).
DATA
__all__ = ['stability_margins', 'phase_crossover_frequencies', 'margin...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\margins.py
control.markov
Python Library Documentation: function markov in module control.modelsimp
markov(*args, m=None, transpose=False, dt=None, truncate=False)
markov(Y, U, [, m])
Calculate Markov parameters [D CB CAB ...] from data.
This function computes the the first `m` Markov parameters [D CB CAB
...] for a discrete-time system.
.. math::
x[k+1] &= A x[k] + B u[k] \\
y[k] &= C x[k] + D u[k]
given data for u and y. The algorithm assumes that that C A^k B = 0
for k > m-2 (see [1]_). Note that the problem is ill-posed if the
length of the input data is less than the desired number of Markov
parameters (a warning message is generated in this case).
The function can be called with either 1, 2 or 3 arguments:
* ``H = markov(data)``
* ``H = markov(data, m)``
* ``H = markov(Y, U)``
* ``H = markov(Y, U, m)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
Y : array_like
Output data. If the array is 1D, the system is assumed to be
single input. If the array is 2D and `transpose` = False, the columns
of `Y` are taken as time points, otherwise the rows of `Y` are
taken as time points.
U : array_like
Input data, arranged in the same way as `Y`.
data : `TimeResponseData`
Response data from which the Markov parameters where estimated.
Input and output data must be 1D or 2D array.
m : int, optional
Number of Markov parameters to output. Defaults to len(U).
dt : True of float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the Markov parameters in order to match
the unit-area impulse response of python-control. Default is True
for array_like and dt=data.time[1]-data.time[0] for
`TimeResponseData` as input.
truncate : bool, optional
Do not use first m equation for least squares. Default is False.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
H : ndarray
First m Markov parameters, [D CB CAB ...].
References
----------
.. [1] J.-N. Juang, M. Phan, L. G. Horta, and R. W. Longman,
Identification of observer/Kalman filter Markov parameters - Theory
and experiments. Journal of Guidance Control and Dynamics, 16(2),
320-329, 2012. https://doi.org/10.2514/3.21006
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> U = np.ones((1, 100))
>>> T, Y = ct.forced_response(ct.tf([1], [1, 0.5], True), T, U)
>>> H = ct.markov(Y, U, 3, transpose=False)
control.mateqn
Python Library Documentation: module control.mateqn in control
NAME
control.mateqn - Matrix equation solvers (Lyapunov, Riccati).
DESCRIPTION
This module contains implementation of the functions lyap, dlyap, care
and dare for solution of Lyapunov and Riccati equations.
FUNCTIONS
care(A, B, Q, R=None, S=None, E=None, stabilizing=True, method=None, _As='A', _Bs='B', _Qs='Q', _Rs='R', _Ss='S', _Es='E')
Solves the continuous-time algebraic Riccati equation.
X, L, G = care(A, B, Q, R=None) solves
:math:`A^T X + X A - X B R^{-1} B^T X + Q = 0`
where A and Q are square matrices of the same dimension. Further,
Q and R are a symmetric matrices. If R is None, it is set to the
identity matrix. The function returns the solution X, the gain
matrix G = B^T X and the closed loop eigenvalues L, i.e., the
eigenvalues of A - B G.
X, L, G = care(A, B, Q, R, S, E) solves the generalized
continuous-time algebraic Riccati equation
:math:`A^T X E + E^T X A - (E^T X B + S) R^{-1} (B^T X E + S^T) + Q = 0`
where A, Q and E are square matrices of the same dimension. Further, Q
and R are symmetric matrices. If R is None, it is set to the identity
matrix. The function returns the solution X, the gain matrix G = R^-1
(B^T X E + S^T) and the closed loop eigenvalues L, i.e., the eigenvalues
of A - B G , E.
Parameters
----------
A, B, Q : 2D array_like
Input matrices for the Riccati equation.
R, S, E : 2D array_like, optional
Input matrices for generalized Riccati equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
stabilizing : bool, optional
If `method` is 'slycot', unstabilized eigenvalues will be returned
in the initial elements of `L`. Not supported for 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Riccati equation.
L : 1D array
Closed loop eigenvalues.
G : 2D array (or matrix)
Gain matrix.
dare(A, B, Q, R, S=None, E=None, stabilizing=True, method=None, _As='A', _Bs='B', _Qs='Q', _Rs='R', _Ss='S', _Es='E')
Solves the discrete-time algebraic Riccati equation.
X, L, G = dare(A, B, Q, R) solves
:math:`A^T X A - X - A^T X B (B^T X B + R)^{-1} B^T X A + Q = 0`
where A and Q are square matrices of the same dimension. Further, Q
is a symmetric matrix. The function returns the solution X, the gain
matrix G = (B^T X B + R)^-1 B^T X A and the closed loop eigenvalues L,
i.e., the eigenvalues of A - B G.
X, L, G = dare(A, B, Q, R, S, E) solves the generalized discrete-time
algebraic Riccati equation
:math:`A^T X A - E^T X E - (A^T X B + S) (B^T X B + R)^{-1} (B^T X A + S^T) + Q = 0`
where A, Q and E are square matrices of the same dimension. Further, Q
and R are symmetric matrices. If R is None, it is set to the identity
matrix. The function returns the solution X, the gain matrix :math:`G =
(B^T X B + R)^{-1} (B^T X A + S^T)` and the closed loop eigenvalues L,
i.e., the (generalized) eigenvalues of A - B G (with respect to E, if
specified).
Parameters
----------
A, B, Q : 2D arrays
Input matrices for the Riccati equation.
R, S, E : 2D arrays, optional
Input matrices for generalized Riccati equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
stabilizing : bool, optional
If `method` is 'slycot', unstabilized eigenvalues will be returned
in the initial elements of `L`. Not supported for 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Riccati equation.
L : 1D array
Closed loop eigenvalues.
G : 2D array (or matrix)
Gain matrix.
dlyap(A, Q, C=None, E=None, method=None)
Solves the discrete-time Lyapunov equation.
X = dlyap(A, Q) solves
:math:`A X A^T - X + Q = 0`
where A and Q are square matrices of the same dimension. Further
Q must be symmetric.
dlyap(A, Q, C) solves the Sylvester equation
:math:`A X Q^T - X + C = 0`
where A and Q are square matrices.
dlyap(A, Q, None, E) solves the generalized discrete-time Lyapunov
equation
:math:`A X A^T - E X E^T + Q = 0`
where Q is a symmetric matrix and A, Q and E are square matrices of the
same dimension.
Parameters
----------
A, Q : 2D array_like
Input matrices for the Lyapunov or Sylvestor equation.
C : 2D array_like, optional
If present, solve the Sylvester equation.
E : 2D array_like, optional
If present, solve the generalized Lyapunov equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
X : 2D array (or matrix)
Solution to the Lyapunov or Sylvester equation.
lyap(A, Q, C=None, E=None, method=None)
Solves the continuous-time Lyapunov equation.
X = lyap(A, Q) solves
:math:`A X + X A^T + Q = 0`
where A and Q are square matrices of the same dimension. Q must be
symmetric.
X = lyap(A, Q, C) solves the Sylvester equation
:math:`A X + X Q + C = 0`
where A and Q are square matrices.
X = lyap(A, Q, None, E) solves the generalized continuous-time
Lyapunov equation
:math:`A X E^T + E X A^T + Q = 0`
where Q is a symmetric matrix and A, Q and E are square matrices of the
same dimension.
Parameters
----------
A, Q : 2D array_like
Input matrices for the Lyapunov or Sylvestor equation.
C : 2D array_like, optional
If present, solve the Sylvester equation.
E : 2D array_like, optional
If present, solve the generalized Lyapunov equation.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
X : 2D array
Solution to the Lyapunov or Sylvester equation.
DATA
__all__ = ['lyap', 'dlyap', 'dare', 'care']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\mateqn.py
control.minimal_realization
Python Library Documentation: function minimal_realization in module control.modelsimp
minimal_realization(sys, tol=None, verbose=True)
Eliminate uncontrollable or unobservable states.
Eliminates uncontrollable or unobservable states in state-space
models or canceling pole-zero pairs in transfer functions. The
output `sysr` has minimal order and the same response
characteristics as the original model `sys`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Original system.
tol : real
Tolerance.
verbose : bool
Print results if True.
Returns
-------
rsys : `StateSpace` or `TransferFunction`
Cleaned model.
control.minreal
Python Library Documentation: function minimal_realization in module control.modelsimp
minimal_realization(sys, tol=None, verbose=True)
Eliminate uncontrollable or unobservable states.
Eliminates uncontrollable or unobservable states in state-space
models or canceling pole-zero pairs in transfer functions. The
output `sysr` has minimal order and the same response
characteristics as the original model `sys`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Original system.
tol : real
Tolerance.
verbose : bool
Print results if True.
Returns
-------
rsys : `StateSpace` or `TransferFunction`
Cleaned model.
control.mixsyn
Python Library Documentation: function mixsyn in module control.robust
mixsyn(g, w1=None, w2=None, w3=None)
Mixed-sensitivity H-infinity synthesis.
mixsyn(g,w1,w2,w3) -> k,cl,info
Parameters
----------
g : LTI
The plant for which controller must be synthesized.
w1 : None, or scalar or k1-by-ny LTI
Weighting on S = (1+G*K)**-1.
w2 : None, or scalar or k2-by-nu LTI
Weighting on K*S.
w3 : None, or scalar or k3-by-ny LTI
Weighting on T = G*K*(1+G*K)**-1.
Returns
-------
k : `StateSpace`
Synthesized controller.
cl : `StateSpace`
Closed system mapping evaluation inputs to evaluation outputs.
Let p be the augmented plant, with::
[z] = [p11 p12] [w]
[y] [p21 g] [u]
then cl is the system from w -> z with u = -k*y.
info : tuple
Two-tuple (`gamma`, `rcond`) containing additional information:
- `gamma` (scalar): H-infinity norm of cl.
- `rcond` (array): Estimates of reciprocal condition numbers
computed during synthesis. See hinfsyn for details.
See Also
--------
hinfsyn, augw
Notes
-----
If a weighting w is scalar, it will be replaced by I*w, where I is
ny-by-ny for `w1` and `w3`, and nu-by-nu for `w2`.
control.modal_form
Python Library Documentation: function modal_form in module control.canonical
modal_form(xsys, condmax=None, sort=False)
Convert a system into modal canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state x.
condmax : None or float, optional
An upper bound on individual transformations. If None, use
`bdschur` default.
sort : bool, optional
If False (default), Schur blocks will not be sorted. See `bdschur`
for sort order.
Returns
-------
zsys : `StateSpace` object
System in modal canonical form, with state z.
T : (M, M) ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.modal_form(Gs) # default reachable
>>> Gc.A # doctest: +SKIP
array([[-2., 0.],
[ 0., -1.]])
control.model_reduction
Python Library Documentation: function model_reduction in module control.modelsimp
model_reduction(sys, elim_states=None, method='matchdc', elim_inputs=None, elim_outputs=None, keep_states=None, keep_inputs=None, keep_outputs=None, warn_unstable=True)
Model reduction by input, output, or state elimination.
This function produces a reduced-order model of a system by eliminating
specified inputs, outputs, and/or states from the original system. The
specific states, inputs, or outputs that are eliminated can be
specified by either listing the states, inputs, or outputs to be
eliminated or those to be kept.
Two methods of state reduction are possible: 'truncate' removes the
states marked for elimination, while 'matchdc' replaces the eliminated
states with their equilibrium values (thereby keeping the input/output
gain unchanged at zero frequency ["DC"]).
Parameters
----------
sys : `StateSpace`
Original system to reduce.
elim_inputs, elim_outputs, elim_states : array of int or str, optional
Vector of inputs, outputs, or states to eliminate. Can be specified
either as an offset into the appropriate vector or as a signal name.
keep_inputs, keep_outputs, keep_states : array, optional
Vector of inputs, outputs, or states to keep. Can be specified
either as an offset into the appropriate vector or as a signal name.
method : string
Method of removing states: either 'truncate' or 'matchdc' (default).
warn_unstable : bool, option
If False, don't warn if system is unstable.
Returns
-------
rsys : `StateSpace`
Reduced order model.
Raises
------
ValueError
If `method` is not either 'matchdc' or 'truncate'.
NotImplementedError
If the 'matchdc' method is used for a discrete-time system.
Warns
-----
UserWarning
If eigenvalues of `sys.A` are not all stable.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.model_reduction(G, [0, 2], method='matchdc')
>>> Gr.nstates
2
See Also
--------
balanced_reduction, minimal_realization
Notes
-----
The model_reduction function issues a warning if the system has
unstable eigenvalues, since in those situations the stability of the
reduced order model may be different than the stability of the full
model. No other checking is done, so users must to be careful not to
render a system unobservable or unreachable.
States, inputs, and outputs can be specified using integer offsets or
using signal names. Slices can also be specified, but must use the
Python `slice` function.
control.modelsimp
Python Library Documentation: module control.modelsimp in control
NAME
control.modelsimp - Tools for model simplification.
DESCRIPTION
This module contains routines for obtaining reduced order models for state
space systems.
FUNCTIONS
balanced_reduction(sys, orders, method='truncate', alpha=None)
Balanced reduced order model of system of a given order.
States are eliminated based on Hankel singular value. If `sys` has
unstable modes, they are removed, the balanced realization is done on
the stable part, then reinserted in accordance with [1]_.
References
----------
.. [1] C. S. Hsu and D. Hou, "Reducing unstable linear control
systems via real Schur transformation". Electronics Letters,
27, 984-986, 1991.
Parameters
----------
sys : `StateSpace`
Original system to reduce.
orders : integer or array of integer
Desired order of reduced order model (if a vector, returns a vector
of systems).
method : string
Method of removing states, either 'truncate' or 'matchdc'.
alpha : float
Redefines the stability boundary for eigenvalues of the system
matrix A. By default for continuous-time systems, alpha <= 0
defines the stability boundary for the real part of A's eigenvalues
and for discrete-time systems, 0 <= alpha <= 1 defines the stability
boundary for the modulus of A's eigenvalues. See SLICOT routines
AB09MD and AB09ND for more information.
Returns
-------
rsys : `StateSpace`
A reduced order model or a list of reduced order models if orders is
a list.
Raises
------
ValueError
If `method` is not 'truncate' or 'matchdc'.
ImportError
If slycot routine ab09ad, ab09md, or ab09nd is not found.
ValueError
If there are more unstable modes than any value in orders.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.balred(G, orders=2, method='matchdc')
>>> Gr.nstates
2
balred = balanced_reduction(sys, orders, method='truncate', alpha=None)
Balanced reduced order model of system of a given order.
States are eliminated based on Hankel singular value. If `sys` has
unstable modes, they are removed, the balanced realization is done on
the stable part, then reinserted in accordance with [1]_.
References
----------
.. [1] C. S. Hsu and D. Hou, "Reducing unstable linear control
systems via real Schur transformation". Electronics Letters,
27, 984-986, 1991.
Parameters
----------
sys : `StateSpace`
Original system to reduce.
orders : integer or array of integer
Desired order of reduced order model (if a vector, returns a vector
of systems).
method : string
Method of removing states, either 'truncate' or 'matchdc'.
alpha : float
Redefines the stability boundary for eigenvalues of the system
matrix A. By default for continuous-time systems, alpha <= 0
defines the stability boundary for the real part of A's eigenvalues
and for discrete-time systems, 0 <= alpha <= 1 defines the stability
boundary for the modulus of A's eigenvalues. See SLICOT routines
AB09MD and AB09ND for more information.
Returns
-------
rsys : `StateSpace`
A reduced order model or a list of reduced order models if orders is
a list.
Raises
------
ValueError
If `method` is not 'truncate' or 'matchdc'.
ImportError
If slycot routine ab09ad, ab09md, or ab09nd is not found.
ValueError
If there are more unstable modes than any value in orders.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.balred(G, orders=2, method='matchdc')
>>> Gr.nstates
2
eigensys_realization(arg, r, m=None, n=None, dt=True, transpose=False)
eigensys_realization(YY, r)
Calculate ERA model based on impulse-response data.
This function computes a discrete-time system
.. math::
x[k+1] &= A x[k] + B u[k] \\\\
y[k] &= C x[k] + D u[k]
of order :math:`r` for a given impulse-response data (see [1]_).
The function can be called with 2 arguments:
* ``sysd, S = eigensys_realization(data, r)``
* ``sysd, S = eigensys_realization(YY, r)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
YY : array_like
Impulse response from which the `StateSpace` model is estimated, 1D
or 3D array.
data : `TimeResponseData`
Impulse response from which the `StateSpace` model is estimated.
r : integer
Order of model.
m : integer, optional
Number of rows in Hankel matrix. Default is 2*r.
n : integer, optional
Number of columns in Hankel matrix. Default is 2*r.
dt : True or float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the `StateSpace` model in order to match the
unit-area impulse response of python-control. Default is True.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
sys : `StateSpace`
State space model of the specified order.
S : array
Singular values of Hankel matrix. Can be used to choose a good `r`
value.
References
----------
.. [1] Samet Oymak and Necmiye Ozay, Non-asymptotic Identification of
LTI Systems from a Single Trajectory. https://arxiv.org/abs/1806.05722
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> _, YY = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(YY, r=1)
>>> T = np.linspace(0, 10, 100)
>>> response = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(response, r=1)
era = eigensys_realization(arg, r, m=None, n=None, dt=True, transpose=False)
eigensys_realization(YY, r)
Calculate ERA model based on impulse-response data.
This function computes a discrete-time system
.. math::
x[k+1] &= A x[k] + B u[k] \\\\
y[k] &= C x[k] + D u[k]
of order :math:`r` for a given impulse-response data (see [1]_).
The function can be called with 2 arguments:
* ``sysd, S = eigensys_realization(data, r)``
* ``sysd, S = eigensys_realization(YY, r)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
YY : array_like
Impulse response from which the `StateSpace` model is estimated, 1D
or 3D array.
data : `TimeResponseData`
Impulse response from which the `StateSpace` model is estimated.
r : integer
Order of model.
m : integer, optional
Number of rows in Hankel matrix. Default is 2*r.
n : integer, optional
Number of columns in Hankel matrix. Default is 2*r.
dt : True or float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the `StateSpace` model in order to match the
unit-area impulse response of python-control. Default is True.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
sys : `StateSpace`
State space model of the specified order.
S : array
Singular values of Hankel matrix. Can be used to choose a good `r`
value.
References
----------
.. [1] Samet Oymak and Necmiye Ozay, Non-asymptotic Identification of
LTI Systems from a Single Trajectory. https://arxiv.org/abs/1806.05722
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> _, YY = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(YY, r=1)
>>> T = np.linspace(0, 10, 100)
>>> response = ct.impulse_response(ct.tf([1], [1, 0.5], True), T)
>>> sysd, _ = ct.eigensys_realization(response, r=1)
hankel_singular_values(sys)
Calculate the Hankel singular values.
Parameters
----------
sys : `StateSpace`
State space system.
Returns
-------
H : array
List of Hankel singular values.
See Also
--------
gram
Notes
-----
The Hankel singular values are the singular values of the Hankel operator.
In practice, we compute the square root of the eigenvalues of the matrix
formed by taking the product of the observability and controllability
Gramians. There are other (more efficient) methods based on solving the
Lyapunov equation in a particular way (more details soon).
Examples
--------
>>> G = ct.tf2ss([1], [1, 2])
>>> H = ct.hsvd(G)
>>> H[0]
np.float64(0.25)
hsvd = hankel_singular_values(sys)
Calculate the Hankel singular values.
Parameters
----------
sys : `StateSpace`
State space system.
Returns
-------
H : array
List of Hankel singular values.
See Also
--------
gram
Notes
-----
The Hankel singular values are the singular values of the Hankel operator.
In practice, we compute the square root of the eigenvalues of the matrix
formed by taking the product of the observability and controllability
Gramians. There are other (more efficient) methods based on solving the
Lyapunov equation in a particular way (more details soon).
Examples
--------
>>> G = ct.tf2ss([1], [1, 2])
>>> H = ct.hsvd(G)
>>> H[0]
np.float64(0.25)
markov(*args, m=None, transpose=False, dt=None, truncate=False)
markov(Y, U, [, m])
Calculate Markov parameters [D CB CAB ...] from data.
This function computes the the first `m` Markov parameters [D CB CAB
...] for a discrete-time system.
.. math::
x[k+1] &= A x[k] + B u[k] \\
y[k] &= C x[k] + D u[k]
given data for u and y. The algorithm assumes that that C A^k B = 0
for k > m-2 (see [1]_). Note that the problem is ill-posed if the
length of the input data is less than the desired number of Markov
parameters (a warning message is generated in this case).
The function can be called with either 1, 2 or 3 arguments:
* ``H = markov(data)``
* ``H = markov(data, m)``
* ``H = markov(Y, U)``
* ``H = markov(Y, U, m)``
where `data` is a `TimeResponseData` object, `YY` is a 1D or 3D
array, and r is an integer.
Parameters
----------
Y : array_like
Output data. If the array is 1D, the system is assumed to be
single input. If the array is 2D and `transpose` = False, the columns
of `Y` are taken as time points, otherwise the rows of `Y` are
taken as time points.
U : array_like
Input data, arranged in the same way as `Y`.
data : `TimeResponseData`
Response data from which the Markov parameters where estimated.
Input and output data must be 1D or 2D array.
m : int, optional
Number of Markov parameters to output. Defaults to len(U).
dt : True of float, optional
True indicates discrete time with unspecified sampling time and a
positive float is discrete time with the specified sampling time.
It can be used to scale the Markov parameters in order to match
the unit-area impulse response of python-control. Default is True
for array_like and dt=data.time[1]-data.time[0] for
`TimeResponseData` as input.
truncate : bool, optional
Do not use first m equation for least squares. Default is False.
transpose : bool, optional
Assume that input data is transposed relative to the standard
:ref:`time-series-convention`. For `TimeResponseData` this parameter
is ignored. Default is False.
Returns
-------
H : ndarray
First m Markov parameters, [D CB CAB ...].
References
----------
.. [1] J.-N. Juang, M. Phan, L. G. Horta, and R. W. Longman,
Identification of observer/Kalman filter Markov parameters - Theory
and experiments. Journal of Guidance Control and Dynamics, 16(2),
320-329, 2012. https://doi.org/10.2514/3.21006
Examples
--------
>>> T = np.linspace(0, 10, 100)
>>> U = np.ones((1, 100))
>>> T, Y = ct.forced_response(ct.tf([1], [1, 0.5], True), T, U)
>>> H = ct.markov(Y, U, 3, transpose=False)
minimal_realization(sys, tol=None, verbose=True)
Eliminate uncontrollable or unobservable states.
Eliminates uncontrollable or unobservable states in state-space
models or canceling pole-zero pairs in transfer functions. The
output `sysr` has minimal order and the same response
characteristics as the original model `sys`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Original system.
tol : real
Tolerance.
verbose : bool
Print results if True.
Returns
-------
rsys : `StateSpace` or `TransferFunction`
Cleaned model.
minreal = minimal_realization(sys, tol=None, verbose=True)
Eliminate uncontrollable or unobservable states.
Eliminates uncontrollable or unobservable states in state-space
models or canceling pole-zero pairs in transfer functions. The
output `sysr` has minimal order and the same response
characteristics as the original model `sys`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Original system.
tol : real
Tolerance.
verbose : bool
Print results if True.
Returns
-------
rsys : `StateSpace` or `TransferFunction`
Cleaned model.
model_reduction(sys, elim_states=None, method='matchdc', elim_inputs=None, elim_outputs=None, keep_states=None, keep_inputs=None, keep_outputs=None, warn_unstable=True)
Model reduction by input, output, or state elimination.
This function produces a reduced-order model of a system by eliminating
specified inputs, outputs, and/or states from the original system. The
specific states, inputs, or outputs that are eliminated can be
specified by either listing the states, inputs, or outputs to be
eliminated or those to be kept.
Two methods of state reduction are possible: 'truncate' removes the
states marked for elimination, while 'matchdc' replaces the eliminated
states with their equilibrium values (thereby keeping the input/output
gain unchanged at zero frequency ["DC"]).
Parameters
----------
sys : `StateSpace`
Original system to reduce.
elim_inputs, elim_outputs, elim_states : array of int or str, optional
Vector of inputs, outputs, or states to eliminate. Can be specified
either as an offset into the appropriate vector or as a signal name.
keep_inputs, keep_outputs, keep_states : array, optional
Vector of inputs, outputs, or states to keep. Can be specified
either as an offset into the appropriate vector or as a signal name.
method : string
Method of removing states: either 'truncate' or 'matchdc' (default).
warn_unstable : bool, option
If False, don't warn if system is unstable.
Returns
-------
rsys : `StateSpace`
Reduced order model.
Raises
------
ValueError
If `method` is not either 'matchdc' or 'truncate'.
NotImplementedError
If the 'matchdc' method is used for a discrete-time system.
Warns
-----
UserWarning
If eigenvalues of `sys.A` are not all stable.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.model_reduction(G, [0, 2], method='matchdc')
>>> Gr.nstates
2
See Also
--------
balanced_reduction, minimal_realization
Notes
-----
The model_reduction function issues a warning if the system has
unstable eigenvalues, since in those situations the stability of the
reduced order model may be different than the stability of the full
model. No other checking is done, so users must to be careful not to
render a system unobservable or unreachable.
States, inputs, and outputs can be specified using integer offsets or
using signal names. Slices can also be specified, but must use the
Python `slice` function.
modred = model_reduction(sys, elim_states=None, method='matchdc', elim_inputs=None, elim_outputs=None, keep_states=None, keep_inputs=None, keep_outputs=None, warn_unstable=True)
Model reduction by input, output, or state elimination.
This function produces a reduced-order model of a system by eliminating
specified inputs, outputs, and/or states from the original system. The
specific states, inputs, or outputs that are eliminated can be
specified by either listing the states, inputs, or outputs to be
eliminated or those to be kept.
Two methods of state reduction are possible: 'truncate' removes the
states marked for elimination, while 'matchdc' replaces the eliminated
states with their equilibrium values (thereby keeping the input/output
gain unchanged at zero frequency ["DC"]).
Parameters
----------
sys : `StateSpace`
Original system to reduce.
elim_inputs, elim_outputs, elim_states : array of int or str, optional
Vector of inputs, outputs, or states to eliminate. Can be specified
either as an offset into the appropriate vector or as a signal name.
keep_inputs, keep_outputs, keep_states : array, optional
Vector of inputs, outputs, or states to keep. Can be specified
either as an offset into the appropriate vector or as a signal name.
method : string
Method of removing states: either 'truncate' or 'matchdc' (default).
warn_unstable : bool, option
If False, don't warn if system is unstable.
Returns
-------
rsys : `StateSpace`
Reduced order model.
Raises
------
ValueError
If `method` is not either 'matchdc' or 'truncate'.
NotImplementedError
If the 'matchdc' method is used for a discrete-time system.
Warns
-----
UserWarning
If eigenvalues of `sys.A` are not all stable.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.model_reduction(G, [0, 2], method='matchdc')
>>> Gr.nstates
2
See Also
--------
balanced_reduction, minimal_realization
Notes
-----
The model_reduction function issues a warning if the system has
unstable eigenvalues, since in those situations the stability of the
reduced order model may be different than the stability of the full
model. No other checking is done, so users must to be careful not to
render a system unobservable or unreachable.
States, inputs, and outputs can be specified using integer offsets or
using signal names. Slices can also be specified, but must use the
Python `slice` function.
DATA
__all__ = ['hankel_singular_values', 'balanced_reduction', 'model_redu...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\modelsimp.py
control.modred
Python Library Documentation: function model_reduction in module control.modelsimp
model_reduction(sys, elim_states=None, method='matchdc', elim_inputs=None, elim_outputs=None, keep_states=None, keep_inputs=None, keep_outputs=None, warn_unstable=True)
Model reduction by input, output, or state elimination.
This function produces a reduced-order model of a system by eliminating
specified inputs, outputs, and/or states from the original system. The
specific states, inputs, or outputs that are eliminated can be
specified by either listing the states, inputs, or outputs to be
eliminated or those to be kept.
Two methods of state reduction are possible: 'truncate' removes the
states marked for elimination, while 'matchdc' replaces the eliminated
states with their equilibrium values (thereby keeping the input/output
gain unchanged at zero frequency ["DC"]).
Parameters
----------
sys : `StateSpace`
Original system to reduce.
elim_inputs, elim_outputs, elim_states : array of int or str, optional
Vector of inputs, outputs, or states to eliminate. Can be specified
either as an offset into the appropriate vector or as a signal name.
keep_inputs, keep_outputs, keep_states : array, optional
Vector of inputs, outputs, or states to keep. Can be specified
either as an offset into the appropriate vector or as a signal name.
method : string
Method of removing states: either 'truncate' or 'matchdc' (default).
warn_unstable : bool, option
If False, don't warn if system is unstable.
Returns
-------
rsys : `StateSpace`
Reduced order model.
Raises
------
ValueError
If `method` is not either 'matchdc' or 'truncate'.
NotImplementedError
If the 'matchdc' method is used for a discrete-time system.
Warns
-----
UserWarning
If eigenvalues of `sys.A` are not all stable.
Examples
--------
>>> G = ct.rss(4)
>>> Gr = ct.model_reduction(G, [0, 2], method='matchdc')
>>> Gr.nstates
2
See Also
--------
balanced_reduction, minimal_realization
Notes
-----
The model_reduction function issues a warning if the system has
unstable eigenvalues, since in those situations the stability of the
reduced order model may be different than the stability of the full
model. No other checking is done, so users must to be careful not to
render a system unobservable or unreachable.
States, inputs, and outputs can be specified using integer offsets or
using signal names. Slices can also be specified, but must use the
Python `slice` function.
control.negate
Python Library Documentation: function negate in module control.bdalg
negate(sys, **kwargs)
Return the negative of a system.
Parameters
----------
sys : scalar, array, or `InputOutputSystem`
I/O systems to negate.
Returns
-------
out : `InputOutputSystem`
Negated system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
See Also
--------
append, feedback, interconnect, parallel, series
Notes
-----
This function is a wrapper for the __neg__ function in the `StateSpace`
and `TransferFunction` classes. The output type is the same as the
input type.
Examples
--------
>>> G = ct.tf([2], [1, 1])
>>> G.dcgain()
np.float64(2.0)
>>> Gn = ct.negate(G) # Same as sys2 = -sys1.
>>> Gn.dcgain()
np.float64(-2.0)
control.nichols
Python Library Documentation: function nichols_plot in module control.nichols
nichols_plot(data, omega=None, *fmt, grid=None, title=None, ax=None, label=None, **kwargs)
Nichols plot for a system.
Plots a Nichols plot for the system over a (optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like
Range of frequencies (list or bounds) in rad/sec.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
grid : boolean, optional
True if the plot should include a Nichols-chart grid. Default is
True and can be set using `config.defaults['nichols.grid']`.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper left',
with no legend for a single response. Use False to suppress legend.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
control.nichols_grid
Python Library Documentation: function nichols_grid in module control.nichols
nichols_grid(cl_mags=None, cl_phases=None, line_style='dotted', ax=None, label_cl_phases=True)
Plot Nichols chart grid.
Plots a Nichols chart grid on the current axes, or creates a new chart
if no plot already exists.
Parameters
----------
cl_mags : array_like (dB), optional
Array of closed-loop magnitudes defining the iso-gain lines on a
custom Nichols chart.
cl_phases : array_like (degrees), optional
Array of closed-loop phases defining the iso-phase lines on a custom
Nichols chart. Must be in the range -360 < cl_phases < 0
line_style : string, optional
:doc:`Matplotlib linestyle <matplotlib:gallery/lines_bars_and_markers/linestyles>`.
ax : `matplotlib.axes.Axes`, optional
Axes to add grid to. If None, use `matplotlib.pyplot.gca`.
label_cl_phases : bool, optional
If True, closed-loop phase lines will be labeled.
Returns
-------
cl_mag_lines : list of `matplotlib.line.Line2D`
The constant closed-loop gain contours.
cl_phase_lines : list of `matplotlib.line.Line2D`
The constant closed-loop phase contours.
cl_mag_labels : list of `matplotlib.text.Text`
Magnitude contour labels; each entry corresponds to the respective
entry in `cl_mag_lines`.
cl_phase_labels : list of `matplotlib.text.Text`
Phase contour labels; each entry corresponds to the respective entry
in `cl_phase_lines`.
control.nichols_plot
Python Library Documentation: function nichols_plot in module control.nichols
nichols_plot(data, omega=None, *fmt, grid=None, title=None, ax=None, label=None, **kwargs)
Nichols plot for a system.
Plots a Nichols plot for the system over a (optional) frequency range.
Parameters
----------
data : list of `FrequencyResponseData` or `LTI`
List of LTI systems or `FrequencyResponseData` objects. A
single system or frequency response can also be passed.
omega : array_like
Range of frequencies (list or bounds) in rad/sec.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
grid : boolean, optional
True if the plot should include a Nichols-chart grid. Default is
True and can be set using `config.defaults['nichols.grid']`.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : Array of `matplotlib.lines.Line2D` objects
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D ndarray of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper left',
with no legend for a single response. Use False to suppress legend.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
control.nlsys
Python Library Documentation: function nlsys in module control.nlsys
nlsys(updfcn, outfcn=None, **kwargs)
Create a nonlinear input/output system.
Creates an `InputOutputSystem` for a nonlinear system by specifying a
state update function and an output function. The new system can be a
continuous or discrete-time system.
Parameters
----------
updfcn : callable (or `StateSpace`)
Function returning the state update function
``updfcn(t, x, u, params) -> array``
where `x` is a 1-D array with shape (nstates,), `u` is a 1-D array
with shape (ninputs,), `t` is a float representing the current
time, and `params` is a dict containing the values of parameters
used by the function.
If a `StateSpace` system is passed as the update function,
then a nonlinear I/O system is created that implements the linear
dynamics of the state space system.
outfcn : callable
Function returning the output at the given state
``outfcn(t, x, u, params) -> array``
where the arguments are the same as for `updfcn`.
inputs : int, list of str or None, optional
Description of the system inputs. This can be given as an integer
count or as a list of strings that name the individual signals.
If an integer count is specified, the names of the signal will be
of the form 's[i]' (where 's' is one of 'u', 'y', or 'x'). If
this parameter is not given or given as None, the relevant
quantity will be determined when possible based on other
information provided to functions using the system.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`.
dt : timebase, optional
The timebase for the system, used to specify whether the system is
operating in continuous or discrete time. It can have the
following values:
* `dt` = 0: continuous-time system (default)
* `dt` > 0: discrete-time system with sampling period `dt`
* `dt` = True: discrete time with unspecified sampling period
* `dt` = None: no timebase specified
name : string, optional
System name (used for specifying signals). If unspecified, a
generic name 'sys[id]' is generated with a unique integer id.
params : dict, optional
Parameter values for the system. Passed to the evaluation functions
for the system as default values, overriding internal defaults.
Returns
-------
sys : `NonlinearIOSystem`
Nonlinear input/output system.
Other Parameters
----------------
input_prefix, output_prefix, state_prefix : string, optional
Set the prefix for input, output, and state signals. Defaults =
'u', 'y', 'x'.
See Also
--------
ss, tf
Examples
--------
>>> def kincar_update(t, x, u, params):
... l = params['l'] # wheelbase
... return np.array([
... np.cos(x[2]) * u[0], # x velocity
... np.sin(x[2]) * u[0], # y velocity
... np.tan(u[1]) * u[0] / l # angular velocity
... ])
>>>
>>> def kincar_output(t, x, u, params):
... return x[0:2] # x, y position
>>>
>>> kincar = ct.nlsys(
... kincar_update, kincar_output, states=3, inputs=2, outputs=2,
... params={'l': 1})
>>>
>>> timepts = np.linspace(0, 10)
>>> response = ct.input_output_response(
... kincar, timepts, [10, 0.05 * np.sin(timepts)])
control.norm
Python Library Documentation: function system_norm in module control.sysnorm
system_norm(system, p=2, tol=1e-06, print_warning=True, method=None)
Computes the input/output norm of system.
Parameters
----------
system : LTI (`StateSpace` or `TransferFunction`)
System in continuous or discrete time for which the norm should
be computed.
p : int or str
Type of norm to be computed. `p` = 2 gives the H2 norm, and
`p` = 'inf' gives the L-infinity norm.
tol : float
Relative tolerance for accuracy of L-infinity norm
computation. Ignored unless `p` = 'inf'.
print_warning : bool
Print warning message in case norm value may be uncertain.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
norm_value : float
Norm value of system.
Notes
-----
Does not yet compute the L-infinity norm for discrete-time systems
with pole(s) at the origin unless Slycot is used.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> round(ct.norm(Gc, 2), 3)
0.5
>>> round(ct.norm(Gc, 'inf', tol=1e-5, method='scipy'), 3)
np.float64(1.0)
control.np
Python Library Documentation: package numpy
NAME
numpy
DESCRIPTION
NumPy
=====
Provides
1. An array object of arbitrary homogeneous items
2. Fast mathematical operations over arrays
3. Linear Algebra, Fourier Transforms, Random Number Generation
How to use the documentation
----------------------------
Documentation is available in two forms: docstrings provided
with the code, and a loose standing reference guide, available from
`the NumPy homepage <https://numpy.org>`_.
We recommend exploring the docstrings using
`IPython <https://ipython.org>`_, an advanced Python shell with
TAB-completion and introspection capabilities. See below for further
instructions.
The docstring examples assume that `numpy` has been imported as ``np``::
>>> import numpy as np
Code snippets are indicated by three greater-than signs::
>>> x = 42
>>> x = x + 1
Use the built-in ``help`` function to view a function's docstring::
>>> help(np.sort)
... # doctest: +SKIP
For some objects, ``np.info(obj)`` may provide additional help. This is
particularly true if you see the line "Help on ufunc object:" at the top
of the help() page. Ufuncs are implemented in C, not Python, for speed.
The native Python help() does not know how to view their help, but our
np.info() function does.
Available subpackages
---------------------
lib
Basic functions used by several sub-packages.
random
Core Random Tools
linalg
Core Linear Algebra Tools
fft
Core FFT routines
polynomial
Polynomial tools
testing
NumPy testing tools
distutils
Enhancements to distutils with support for
Fortran compilers support and more (for Python <= 3.11)
Utilities
---------
test
Run numpy unittests
show_config
Show numpy build configuration
__version__
NumPy version string
Viewing documentation using IPython
-----------------------------------
Start IPython and import `numpy` usually under the alias ``np``: `import
numpy as np`. Then, directly past or use the ``%cpaste`` magic to paste
examples into the shell. To see which functions are available in `numpy`,
type ``np.<TAB>`` (where ``<TAB>`` refers to the TAB key), or use
``np.*cos*?<ENTER>`` (where ``<ENTER>`` refers to the ENTER key) to narrow
down the list. To view the docstring for a function, use
``np.cos?<ENTER>`` (to view the docstring) and ``np.cos??<ENTER>`` (to view
the source code).
Copies vs. in-place operation
-----------------------------
Most of the functions in `numpy` return a copy of the array argument
(e.g., `np.sort`). In-place versions of these functions are often
available as array methods, i.e. ``x = np.array([1,2,3]); x.sort()``.
Exceptions to this rule are documented.
PACKAGE CONTENTS
__config__
_array_api_info
_configtool
_core (package)
_distributor_init
_expired_attrs_2_0
_globals
_pyinstaller (package)
_pytesttester
_typing (package)
_utils (package)
char (package)
compat (package)
conftest
core (package)
ctypeslib
dtypes
exceptions
f2py (package)
fft (package)
lib (package)
linalg (package)
ma (package)
matlib
matrixlib (package)
polynomial (package)
random (package)
rec (package)
strings (package)
testing (package)
tests (package)
typing (package)
version
SUBMODULES
_mat
emath
CLASSES
builtins.bytes(builtins.object)
bytes_(builtins.bytes, character)
builtins.object
__array_namespace_info__
broadcast
busdaycalendar
dtype
errstate
finfo
flatiter
generic
bool
datetime64
flexible
character
bytes_(builtins.bytes, character)
str_(builtins.str, character)
void
record
number
inexact
complexfloating
clongdouble
complex128(complexfloating, builtins.complex)
complex64
floating
float16
float32
float64(floating, builtins.float)
longdouble
integer
signedinteger
int16
int32
int64
int8
intc
timedelta64
unsignedinteger
uint16
uint32
uint64
uint8
uintc
object_
iinfo
ndarray
matrix
memmap
numpy.rec.recarray
ndenumerate
ndindex
nditer
poly1d
ufunc
vectorize
builtins.str(builtins.object)
str_(builtins.str, character)
class __array_namespace_info__(builtins.object)
| Get the array API inspection namespace for NumPy.
|
| The array API inspection namespace defines the following functions:
|
| - capabilities()
| - default_device()
| - default_dtypes()
| - dtypes()
| - devices()
|
| See
| https://data-apis.org/array-api/latest/API_specification/inspection.html
| for more details.
|
| Returns
| -------
| info : ModuleType
| The array API inspection namespace for NumPy.
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.default_dtypes()
| {'real floating': numpy.float64,
| 'complex floating': numpy.complex128,
| 'integral': numpy.int64,
| 'indexing': numpy.int64}
|
| Methods defined here:
|
| capabilities(self) from numpy._array_api_info.__array_namespace_info__
| Return a dictionary of array API library capabilities.
|
| The resulting dictionary has the following keys:
|
| - **"boolean indexing"**: boolean indicating whether an array library
| supports boolean indexing. Always ``True`` for NumPy.
|
| - **"data-dependent shapes"**: boolean indicating whether an array
| library supports data-dependent output shapes. Always ``True`` for
| NumPy.
|
| See
| https://data-apis.org/array-api/latest/API_specification/generated/array_api.info.capabilities.html
| for more details.
|
| See Also
| --------
| __array_namespace_info__.default_device,
| __array_namespace_info__.default_dtypes,
| __array_namespace_info__.dtypes,
| __array_namespace_info__.devices
|
| Returns
| -------
| capabilities : dict
| A dictionary of array API library capabilities.
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.capabilities()
| {'boolean indexing': True,
| 'data-dependent shapes': True}
|
| default_device(self) from numpy._array_api_info.__array_namespace_info__
| The default device used for new NumPy arrays.
|
| For NumPy, this always returns ``'cpu'``.
|
| See Also
| --------
| __array_namespace_info__.capabilities,
| __array_namespace_info__.default_dtypes,
| __array_namespace_info__.dtypes,
| __array_namespace_info__.devices
|
| Returns
| -------
| device : str
| The default device used for new NumPy arrays.
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.default_device()
| 'cpu'
|
| default_dtypes(self, *, device=None) from numpy._array_api_info.__array_namespace_info__
| The default data types used for new NumPy arrays.
|
| For NumPy, this always returns the following dictionary:
|
| - **"real floating"**: ``numpy.float64``
| - **"complex floating"**: ``numpy.complex128``
| - **"integral"**: ``numpy.intp``
| - **"indexing"**: ``numpy.intp``
|
| Parameters
| ----------
| device : str, optional
| The device to get the default data types for. For NumPy, only
| ``'cpu'`` is allowed.
|
| Returns
| -------
| dtypes : dict
| A dictionary describing the default data types used for new NumPy
| arrays.
|
| See Also
| --------
| __array_namespace_info__.capabilities,
| __array_namespace_info__.default_device,
| __array_namespace_info__.dtypes,
| __array_namespace_info__.devices
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.default_dtypes()
| {'real floating': numpy.float64,
| 'complex floating': numpy.complex128,
| 'integral': numpy.int64,
| 'indexing': numpy.int64}
|
| devices(self) from numpy._array_api_info.__array_namespace_info__
| The devices supported by NumPy.
|
| For NumPy, this always returns ``['cpu']``.
|
| Returns
| -------
| devices : list of str
| The devices supported by NumPy.
|
| See Also
| --------
| __array_namespace_info__.capabilities,
| __array_namespace_info__.default_device,
| __array_namespace_info__.default_dtypes,
| __array_namespace_info__.dtypes
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.devices()
| ['cpu']
|
| dtypes(self, *, device=None, kind=None) from numpy._array_api_info.__array_namespace_info__
| The array API data types supported by NumPy.
|
| Note that this function only returns data types that are defined by
| the array API.
|
| Parameters
| ----------
| device : str, optional
| The device to get the data types for. For NumPy, only ``'cpu'`` is
| allowed.
| kind : str or tuple of str, optional
| The kind of data types to return. If ``None``, all data types are
| returned. If a string, only data types of that kind are returned.
| If a tuple, a dictionary containing the union of the given kinds
| is returned. The following kinds are supported:
|
| - ``'bool'``: boolean data types (i.e., ``bool``).
| - ``'signed integer'``: signed integer data types (i.e., ``int8``,
| ``int16``, ``int32``, ``int64``).
| - ``'unsigned integer'``: unsigned integer data types (i.e.,
| ``uint8``, ``uint16``, ``uint32``, ``uint64``).
| - ``'integral'``: integer data types. Shorthand for ``('signed
| integer', 'unsigned integer')``.
| - ``'real floating'``: real-valued floating-point data types
| (i.e., ``float32``, ``float64``).
| - ``'complex floating'``: complex floating-point data types (i.e.,
| ``complex64``, ``complex128``).
| - ``'numeric'``: numeric data types. Shorthand for ``('integral',
| 'real floating', 'complex floating')``.
|
| Returns
| -------
| dtypes : dict
| A dictionary mapping the names of data types to the corresponding
| NumPy data types.
|
| See Also
| --------
| __array_namespace_info__.capabilities,
| __array_namespace_info__.default_device,
| __array_namespace_info__.default_dtypes,
| __array_namespace_info__.devices
|
| Examples
| --------
| >>> info = np.__array_namespace_info__()
| >>> info.dtypes(kind='signed integer')
| {'int8': numpy.int8,
| 'int16': numpy.int16,
| 'int32': numpy.int32,
| 'int64': numpy.int64}
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class bool(generic)
| Boolean type (True or False), stored as a byte.
|
| .. warning::
|
| The :class:`bool` type is not a subclass of the :class:`int_` type
| (the :class:`bool` is not even a number type). This is different
| than Python's default implementation of :class:`bool` as a
| sub-class of :class:`int`.
|
| :Character code: ``'?'``
|
| Method resolution order:
| bool
| generic
| builtins.object
|
| Methods defined here:
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __repr__(self, /)
| Return repr(self).
|
| __ror__(self, value, /)
| Return value|self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __xor__(self, value, /)
| Return self^value.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
bool_ = class bool(generic)
| Boolean type (True or False), stored as a byte.
|
| .. warning::
|
| The :class:`bool` type is not a subclass of the :class:`int_` type
| (the :class:`bool` is not even a number type). This is different
| than Python's default implementation of :class:`bool` as a
| sub-class of :class:`int`.
|
| :Character code: ``'?'``
|
| Method resolution order:
| bool
| generic
| builtins.object
|
| Methods defined here:
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __repr__(self, /)
| Return repr(self).
|
| __ror__(self, value, /)
| Return value|self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __xor__(self, value, /)
| Return self^value.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class broadcast(builtins.object)
| Produce an object that mimics broadcasting.
|
| Parameters
| ----------
| in1, in2, ... : array_like
| Input parameters.
|
| Returns
| -------
| b : broadcast object
| Broadcast the input parameters against one another, and
| return an object that encapsulates the result.
| Amongst others, it has ``shape`` and ``nd`` properties, and
| may be used as an iterator.
|
| See Also
| --------
| broadcast_arrays
| broadcast_to
| broadcast_shapes
|
| Examples
| --------
|
| Manually adding two vectors, using broadcasting:
|
| >>> import numpy as np
| >>> x = np.array([[1], [2], [3]])
| >>> y = np.array([4, 5, 6])
| >>> b = np.broadcast(x, y)
|
| >>> out = np.empty(b.shape)
| >>> out.flat = [u+v for (u,v) in b]
| >>> out
| array([[5., 6., 7.],
| [6., 7., 8.],
| [7., 8., 9.]])
|
| Compare against built-in broadcasting:
|
| >>> x + y
| array([[5, 6, 7],
| [6, 7, 8],
| [7, 8, 9]])
|
| Methods defined here:
|
| __iter__(self, /)
| Implement iter(self).
|
| __next__(self, /)
| Implement next(self).
|
| reset(...)
| reset()
|
| Reset the broadcasted result's iterator(s).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| None
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.index
| 0
| >>> next(b), next(b), next(b)
| ((1, 4), (2, 4), (3, 4))
| >>> b.index
| 3
| >>> b.reset()
| >>> b.index
| 0
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| index
| current index in broadcasted result
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.array([[1], [2], [3]])
| >>> y = np.array([4, 5, 6])
| >>> b = np.broadcast(x, y)
| >>> b.index
| 0
| >>> next(b), next(b), next(b)
| ((1, 4), (1, 5), (1, 6))
| >>> b.index
| 3
|
| iters
| tuple of iterators along ``self``'s "components."
|
| Returns a tuple of `numpy.flatiter` objects, one for each "component"
| of ``self``.
|
| See Also
| --------
| numpy.flatiter
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> row, col = b.iters
| >>> next(row), next(col)
| (1, 4)
|
| nd
| Number of dimensions of broadcasted result. For code intended for NumPy
| 1.12.0 and later the more consistent `ndim` is preferred.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.nd
| 2
|
| ndim
| Number of dimensions of broadcasted result. Alias for `nd`.
|
| .. versionadded:: 1.12.0
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.ndim
| 2
|
| numiter
| Number of iterators possessed by the broadcasted result.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.numiter
| 2
|
| shape
| Shape of broadcasted result.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.shape
| (3, 3)
|
| size
| Total size of broadcasted result.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> y = np.array([[4], [5], [6]])
| >>> b = np.broadcast(x, y)
| >>> b.size
| 9
class busdaycalendar(builtins.object)
| busdaycalendar(weekmask='1111100', holidays=None)
|
| A business day calendar object that efficiently stores information
| defining valid days for the busday family of functions.
|
| The default valid days are Monday through Friday ("business days").
| A busdaycalendar object can be specified with any set of weekly
| valid days, plus an optional "holiday" dates that always will be invalid.
|
| Once a busdaycalendar object is created, the weekmask and holidays
| cannot be modified.
|
| .. versionadded:: 1.7.0
|
| Parameters
| ----------
| weekmask : str or array_like of bool, optional
| A seven-element array indicating which of Monday through Sunday are
| valid days. May be specified as a length-seven list or array, like
| [1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
| like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
| weekdays, optionally separated by white space. Valid abbreviations
| are: Mon Tue Wed Thu Fri Sat Sun
| holidays : array_like of datetime64[D], optional
| An array of dates to consider as invalid dates, no matter which
| weekday they fall upon. Holiday dates may be specified in any
| order, and NaT (not-a-time) dates are ignored. This list is
| saved in a normalized form that is suited for fast calculations
| of valid days.
|
| Returns
| -------
| out : busdaycalendar
| A business day calendar object containing the specified
| weekmask and holidays values.
|
| See Also
| --------
| is_busday : Returns a boolean array indicating valid days.
| busday_offset : Applies an offset counted in valid days.
| busday_count : Counts how many valid days are in a half-open date range.
|
| Attributes
| ----------
| weekmask : (copy) seven-element array of bool
| holidays : (copy) sorted array of datetime64[D]
|
| Notes
| -----
| Once a busdaycalendar object is created, you cannot modify the
| weekmask or holidays. The attributes return copies of internal data.
|
| Examples
| --------
| >>> import numpy as np
| >>> # Some important days in July
| ... bdd = np.busdaycalendar(
| ... holidays=['2011-07-01', '2011-07-04', '2011-07-17'])
| >>> # Default is Monday to Friday weekdays
| ... bdd.weekmask
| array([ True, True, True, True, True, False, False])
| >>> # Any holidays already on the weekend are removed
| ... bdd.holidays
| array(['2011-07-01', '2011-07-04'], dtype='datetime64[D]')
|
| Methods defined here:
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| holidays
| A copy of the holiday array indicating additional invalid days.
|
| weekmask
| A copy of the seven-element boolean mask indicating valid days.
byte = class int8(signedinteger)
| Signed integer type, compatible with C ``char``.
|
| :Character code: ``'b'``
| :Canonical name: `numpy.byte`
| :Alias on this platform (win32 AMD64): `numpy.int8`: 8-bit signed integer (``-128`` to ``127``).
|
| Method resolution order:
| int8
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int8.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int8(127).bit_count()
| 7
| >>> np.int8(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class bytes_(builtins.bytes, character)
| A byte string.
|
| When used in arrays, this type strips trailing null bytes.
|
| :Character code: ``'S'``
|
| Method resolution order:
| bytes_
| builtins.bytes
| character
| flexible
| generic
| builtins.object
|
| Methods defined here:
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __str__(self, /)
| Return str(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.bytes:
|
| __add__(self, value, /)
| Return self+value.
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __bytes__(self, /)
| Convert this value to exact type bytes.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __getnewargs__(...)
|
| __iter__(self, /)
| Implement iter(self).
|
| __len__(self, /)
| Return len(self).
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| capitalize(...)
| B.capitalize() -> copy of B
|
| Return a copy of B with only its first character capitalized (ASCII)
| and the rest lower-cased.
|
| center(self, width, fillchar=b' ', /)
| Return a centered string of length width.
|
| Padding is done using the specified fill character.
|
| count(...)
| B.count(sub[, start[, end]]) -> int
|
| Return the number of non-overlapping occurrences of subsection sub in
| bytes B[start:end]. Optional arguments start and end are interpreted
| as in slice notation.
|
| decode(self, /, encoding='utf-8', errors='strict')
| Decode the bytes using the codec registered for encoding.
|
| encoding
| The encoding with which to decode the bytes.
| errors
| The error handling scheme to use for the handling of decoding errors.
| The default is 'strict' meaning that decoding errors raise a
| UnicodeDecodeError. Other possible values are 'ignore' and 'replace'
| as well as any other name registered with codecs.register_error that
| can handle UnicodeDecodeErrors.
|
| endswith(...)
| B.endswith(suffix[, start[, end]]) -> bool
|
| Return True if B ends with the specified suffix, False otherwise.
| With optional start, test B beginning at that position.
| With optional end, stop comparing B at that position.
| suffix can also be a tuple of bytes to try.
|
| expandtabs(self, /, tabsize=8)
| Return a copy where all tab characters are expanded using spaces.
|
| If tabsize is not given, a tab size of 8 characters is assumed.
|
| find(...)
| B.find(sub[, start[, end]]) -> int
|
| Return the lowest index in B where subsection sub is found,
| such that sub is contained within B[start,end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Return -1 on failure.
|
| hex(...)
| Create a string of hexadecimal numbers from a bytes object.
|
| sep
| An optional single character or byte to separate hex bytes.
| bytes_per_sep
| How many bytes between separators. Positive values count from the
| right, negative values count from the left.
|
| Example:
| >>> value = b'\xb9\x01\xef'
| >>> value.hex()
| 'b901ef'
| >>> value.hex(':')
| 'b9:01:ef'
| >>> value.hex(':', 2)
| 'b9:01ef'
| >>> value.hex(':', -2)
| 'b901:ef'
|
| index(...)
| B.index(sub[, start[, end]]) -> int
|
| Return the lowest index in B where subsection sub is found,
| such that sub is contained within B[start,end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Raises ValueError when the subsection is not found.
|
| isalnum(...)
| B.isalnum() -> bool
|
| Return True if all characters in B are alphanumeric
| and there is at least one character in B, False otherwise.
|
| isalpha(...)
| B.isalpha() -> bool
|
| Return True if all characters in B are alphabetic
| and there is at least one character in B, False otherwise.
|
| isascii(...)
| B.isascii() -> bool
|
| Return True if B is empty or all characters in B are ASCII,
| False otherwise.
|
| isdigit(...)
| B.isdigit() -> bool
|
| Return True if all characters in B are digits
| and there is at least one character in B, False otherwise.
|
| islower(...)
| B.islower() -> bool
|
| Return True if all cased characters in B are lowercase and there is
| at least one cased character in B, False otherwise.
|
| isspace(...)
| B.isspace() -> bool
|
| Return True if all characters in B are whitespace
| and there is at least one character in B, False otherwise.
|
| istitle(...)
| B.istitle() -> bool
|
| Return True if B is a titlecased string and there is at least one
| character in B, i.e. uppercase characters may only follow uncased
| characters and lowercase characters only cased ones. Return False
| otherwise.
|
| isupper(...)
| B.isupper() -> bool
|
| Return True if all cased characters in B are uppercase and there is
| at least one cased character in B, False otherwise.
|
| join(self, iterable_of_bytes, /)
| Concatenate any number of bytes objects.
|
| The bytes whose method is called is inserted in between each pair.
|
| The result is returned as a new bytes object.
|
| Example: b'.'.join([b'ab', b'pq', b'rs']) -> b'ab.pq.rs'.
|
| ljust(self, width, fillchar=b' ', /)
| Return a left-justified string of length width.
|
| Padding is done using the specified fill character.
|
| lower(...)
| B.lower() -> copy of B
|
| Return a copy of B with all ASCII characters converted to lowercase.
|
| lstrip(self, bytes=None, /)
| Strip leading bytes contained in the argument.
|
| If the argument is omitted or None, strip leading ASCII whitespace.
|
| partition(self, sep, /)
| Partition the bytes into three parts using the given separator.
|
| This will search for the separator sep in the bytes. If the separator is found,
| returns a 3-tuple containing the part before the separator, the separator
| itself, and the part after it.
|
| If the separator is not found, returns a 3-tuple containing the original bytes
| object and two empty bytes objects.
|
| removeprefix(self, prefix, /)
| Return a bytes object with the given prefix string removed if present.
|
| If the bytes starts with the prefix string, return bytes[len(prefix):].
| Otherwise, return a copy of the original bytes.
|
| removesuffix(self, suffix, /)
| Return a bytes object with the given suffix string removed if present.
|
| If the bytes ends with the suffix string and that suffix is not empty,
| return bytes[:-len(prefix)]. Otherwise, return a copy of the original
| bytes.
|
| replace(self, old, new, count=-1, /)
| Return a copy with all occurrences of substring old replaced by new.
|
| count
| Maximum number of occurrences to replace.
| -1 (the default value) means replace all occurrences.
|
| If the optional argument count is given, only the first count occurrences are
| replaced.
|
| rfind(...)
| B.rfind(sub[, start[, end]]) -> int
|
| Return the highest index in B where subsection sub is found,
| such that sub is contained within B[start,end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Return -1 on failure.
|
| rindex(...)
| B.rindex(sub[, start[, end]]) -> int
|
| Return the highest index in B where subsection sub is found,
| such that sub is contained within B[start,end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Raise ValueError when the subsection is not found.
|
| rjust(self, width, fillchar=b' ', /)
| Return a right-justified string of length width.
|
| Padding is done using the specified fill character.
|
| rpartition(self, sep, /)
| Partition the bytes into three parts using the given separator.
|
| This will search for the separator sep in the bytes, starting at the end. If
| the separator is found, returns a 3-tuple containing the part before the
| separator, the separator itself, and the part after it.
|
| If the separator is not found, returns a 3-tuple containing two empty bytes
| objects and the original bytes object.
|
| rsplit(self, /, sep=None, maxsplit=-1)
| Return a list of the sections in the bytes, using sep as the delimiter.
|
| sep
| The delimiter according which to split the bytes.
| None (the default value) means split on ASCII whitespace characters
| (space, tab, return, newline, formfeed, vertical tab).
| maxsplit
| Maximum number of splits to do.
| -1 (the default value) means no limit.
|
| Splitting is done starting at the end of the bytes and working to the front.
|
| rstrip(self, bytes=None, /)
| Strip trailing bytes contained in the argument.
|
| If the argument is omitted or None, strip trailing ASCII whitespace.
|
| split(self, /, sep=None, maxsplit=-1)
| Return a list of the sections in the bytes, using sep as the delimiter.
|
| sep
| The delimiter according which to split the bytes.
| None (the default value) means split on ASCII whitespace characters
| (space, tab, return, newline, formfeed, vertical tab).
| maxsplit
| Maximum number of splits to do.
| -1 (the default value) means no limit.
|
| splitlines(self, /, keepends=False)
| Return a list of the lines in the bytes, breaking at line boundaries.
|
| Line breaks are not included in the resulting list unless keepends is given and
| true.
|
| startswith(...)
| B.startswith(prefix[, start[, end]]) -> bool
|
| Return True if B starts with the specified prefix, False otherwise.
| With optional start, test B beginning at that position.
| With optional end, stop comparing B at that position.
| prefix can also be a tuple of bytes to try.
|
| strip(self, bytes=None, /)
| Strip leading and trailing bytes contained in the argument.
|
| If the argument is omitted or None, strip leading and trailing ASCII whitespace.
|
| swapcase(...)
| B.swapcase() -> copy of B
|
| Return a copy of B with uppercase ASCII characters converted
| to lowercase ASCII and vice versa.
|
| title(...)
| B.title() -> copy of B
|
| Return a titlecased version of B, i.e. ASCII words start with uppercase
| characters, all remaining cased characters have lowercase.
|
| translate(self, table, /, delete=b'')
| Return a copy with each character mapped by the given translation table.
|
| table
| Translation table, which must be a bytes object of length 256.
|
| All characters occurring in the optional argument delete are removed.
| The remaining characters are mapped through the given translation table.
|
| upper(...)
| B.upper() -> copy of B
|
| Return a copy of B with all ASCII characters converted to uppercase.
|
| zfill(self, width, /)
| Pad a numeric string with zeros on the left, to fill a field of the given width.
|
| The original string is never truncated.
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.bytes:
|
| fromhex(string, /)
| Create a bytes object from a string of hexadecimal numbers.
|
| Spaces between two numbers are accepted.
| Example: bytes.fromhex('B9 01EF') -> b'\\xb9\\x01\\xef'.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.bytes:
|
| maketrans(frm, to, /)
| Return a translation table useable for the bytes or bytearray translate method.
|
| The returned table will be one where each byte in frm is mapped to the byte at
| the same position in to.
|
| The bytes objects frm and to must be of the same length.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
cdouble = class complex128(complexfloating, builtins.complex)
| cdouble(real=0, imag=0)
|
| Complex number type composed of two double-precision floating-point
| numbers, compatible with Python :class:`complex`.
|
| :Character code: ``'D'``
| :Canonical name: `numpy.cdouble`
| :Alias on this platform (win32 AMD64): `numpy.complex128`: Complex number type composed of 2 64-bit-precision floating-point numbers.
|
| Method resolution order:
| complex128
| complexfloating
| inexact
| number
| generic
| builtins.complex
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from complexfloating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.complex:
|
| __complex__(self, /)
| Convert this value to exact type complex.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getnewargs__(self, /)
class character(flexible)
| Abstract base class of all character string scalar types.
|
| Method resolution order:
| character
| flexible
| generic
| builtins.object
|
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
class clongdouble(complexfloating)
| Complex number type composed of two extended-precision floating-point
| numbers.
|
| :Character code: ``'G'``
|
| Method resolution order:
| clongdouble
| complexfloating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from complexfloating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class complex128(complexfloating, builtins.complex)
| complex128(real=0, imag=0)
|
| Complex number type composed of two double-precision floating-point
| numbers, compatible with Python :class:`complex`.
|
| :Character code: ``'D'``
| :Canonical name: `numpy.cdouble`
| :Alias on this platform (win32 AMD64): `numpy.complex128`: Complex number type composed of 2 64-bit-precision floating-point numbers.
|
| Method resolution order:
| complex128
| complexfloating
| inexact
| number
| generic
| builtins.complex
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from complexfloating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.complex:
|
| __complex__(self, /)
| Convert this value to exact type complex.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getnewargs__(self, /)
class complex64(complexfloating)
| Complex number type composed of two single-precision floating-point
| numbers.
|
| :Character code: ``'F'``
| :Canonical name: `numpy.csingle`
| :Alias on this platform (win32 AMD64): `numpy.complex64`: Complex number type composed of 2 32-bit-precision floating-point numbers.
|
| Method resolution order:
| complex64
| complexfloating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from complexfloating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class complexfloating(inexact)
| Abstract base class of all complex number scalar types that are made up of
| floating-point numbers.
|
| Method resolution order:
| complexfloating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
csingle = class complex64(complexfloating)
| Complex number type composed of two single-precision floating-point
| numbers.
|
| :Character code: ``'F'``
| :Canonical name: `numpy.csingle`
| :Alias on this platform (win32 AMD64): `numpy.complex64`: Complex number type composed of 2 32-bit-precision floating-point numbers.
|
| Method resolution order:
| complex64
| complexfloating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from complexfloating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class datetime64(generic)
| If created from a 64-bit integer, it represents an offset from
| ``1970-01-01T00:00:00``.
| If created from string, the string can be in ISO 8601 date
| or datetime format.
|
| When parsing a string to create a datetime object, if the string contains
| a trailing timezone (A 'Z' or a timezone offset), the timezone will be
| dropped and a User Warning is given.
|
| Datetime64 objects should be considered to be UTC and therefore have an
| offset of +0000.
|
| >>> np.datetime64(10, 'Y')
| np.datetime64('1980')
| >>> np.datetime64('1980', 'Y')
| np.datetime64('1980')
| >>> np.datetime64(10, 'D')
| np.datetime64('1970-01-11')
|
| See :ref:`arrays.datetime` for more information.
|
| :Character code: ``'M'``
|
| Method resolution order:
| datetime64
| generic
| builtins.object
|
| Methods defined here:
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __str__(self, /)
| Return str(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
double = class float64(floating, builtins.float)
| double(x=0, /)
|
| Double-precision floating-point number type, compatible with Python
| :class:`float` and C ``double``.
|
| :Character code: ``'d'``
| :Canonical name: `numpy.double`
| :Alias on this platform (win32 AMD64): `numpy.float64`: 64-bit precision floating-point number type: sign bit, 11 bits exponent, 52 bits mantissa.
|
| Method resolution order:
| float64
| floating
| inexact
| number
| generic
| builtins.float
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| double.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.double(10.0).as_integer_ratio()
| (10, 1)
| >>> np.double(0.0).as_integer_ratio()
| (0, 1)
| >>> np.double(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| double.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.double(-2.0).is_integer()
| True
| >>> np.double(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.float:
|
| __ceil__(self, /)
| Return the ceiling as an Integral.
|
| __floor__(self, /)
| Return the floor as an Integral.
|
| __getnewargs__(self, /)
|
| __trunc__(self, /)
| Return the Integral closest to x between 0 and x.
|
| hex(self, /)
| Return a hexadecimal representation of a floating-point number.
|
| >>> (-0.1).hex()
| '-0x1.999999999999ap-4'
| >>> 3.14159.hex()
| '0x1.921f9f01b866ep+1'
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.float:
|
| __getformat__(typestr, /)
| You probably don't want to use this function.
|
| typestr
| Must be 'double' or 'float'.
|
| It exists mainly to be used in Python's test suite.
|
| This function returns whichever of 'unknown', 'IEEE, big-endian' or 'IEEE,
| little-endian' best describes the format of floating-point numbers used by the
| C type named by typestr.
|
| fromhex(string, /)
| Create a floating-point number from a hexadecimal string.
|
| >>> float.fromhex('0x1.ffffp10')
| 2047.984375
| >>> float.fromhex('-0x1p-1074')
| -5e-324
class dtype(builtins.object)
| dtype(dtype, align=False, copy=False, [metadata])
|
| Create a data type object.
|
| A numpy array is homogeneous, and contains elements described by a
| dtype object. A dtype object can be constructed from different
| combinations of fundamental numeric types.
|
| Parameters
| ----------
| dtype
| Object to be converted to a data type object.
| align : bool, optional
| Add padding to the fields to match what a C compiler would output
| for a similar C-struct. Can be ``True`` only if `obj` is a dictionary
| or a comma-separated string. If a struct dtype is being created,
| this also sets a sticky alignment flag ``isalignedstruct``.
| copy : bool, optional
| Make a new copy of the data-type object. If ``False``, the result
| may just be a reference to a built-in data-type object.
| metadata : dict, optional
| An optional dictionary with dtype metadata.
|
| See also
| --------
| result_type
|
| Examples
| --------
| Using array-scalar type:
|
| >>> import numpy as np
| >>> np.dtype(np.int16)
| dtype('int16')
|
| Structured type, one field name 'f1', containing int16:
|
| >>> np.dtype([('f1', np.int16)])
| dtype([('f1', '<i2')])
|
| Structured type, one field named 'f1', in itself containing a structured
| type with one field:
|
| >>> np.dtype([('f1', [('f1', np.int16)])])
| dtype([('f1', [('f1', '<i2')])])
|
| Structured type, two fields: the first field contains an unsigned int, the
| second an int32:
|
| >>> np.dtype([('f1', np.uint64), ('f2', np.int32)])
| dtype([('f1', '<u8'), ('f2', '<i4')])
|
| Using array-protocol type strings:
|
| >>> np.dtype([('a','f8'),('b','S10')])
| dtype([('a', '<f8'), ('b', 'S10')])
|
| Using comma-separated field formats. The shape is (2,3):
|
| >>> np.dtype("i4, (2,3)f8")
| dtype([('f0', '<i4'), ('f1', '<f8', (2, 3))])
|
| Using tuples. ``int`` is a fixed type, 3 the field's shape. ``void``
| is a flexible type, here of size 10:
|
| >>> np.dtype([('hello',(np.int64,3)),('world',np.void,10)])
| dtype([('hello', '<i8', (3,)), ('world', 'V10')])
|
| Subdivide ``int16`` into 2 ``int8``'s, called x and y. 0 and 1 are
| the offsets in bytes:
|
| >>> np.dtype((np.int16, {'x':(np.int8,0), 'y':(np.int8,1)}))
| dtype((numpy.int16, [('x', 'i1'), ('y', 'i1')]))
|
| Using dictionaries. Two fields named 'gender' and 'age':
|
| >>> np.dtype({'names':['gender','age'], 'formats':['S1',np.uint8]})
| dtype([('gender', 'S1'), ('age', 'u1')])
|
| Offsets in bytes, here 0 and 25:
|
| >>> np.dtype({'surname':('S25',0),'age':(np.uint8,25)})
| dtype([('surname', 'S25'), ('age', 'u1')])
|
| Methods defined here:
|
| __bool__(self, /)
| True if self else False
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __reduce__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setstate__(...)
|
| __str__(self, /)
| Return str(self).
|
| newbyteorder(...)
| newbyteorder(new_order='S', /)
|
| Return a new dtype with a different byte order.
|
| Changes are also made in all fields and sub-arrays of the data type.
|
| Parameters
| ----------
| new_order : string, optional
| Byte order to force; a value from the byte order specifications
| below. The default value ('S') results in swapping the current
| byte order. `new_order` codes can be any of:
|
| * 'S' - swap dtype from current to opposite endian
| * {'<', 'little'} - little endian
| * {'>', 'big'} - big endian
| * {'=', 'native'} - native order
| * {'|', 'I'} - ignore (no change to byte order)
|
| Returns
| -------
| new_dtype : dtype
| New dtype object with the given change to the byte order.
|
| Notes
| -----
| Changes are also made in all fields and sub-arrays of the data type.
|
| Examples
| --------
| >>> import sys
| >>> sys_is_le = sys.byteorder == 'little'
| >>> native_code = '<' if sys_is_le else '>'
| >>> swapped_code = '>' if sys_is_le else '<'
| >>> import numpy as np
| >>> native_dt = np.dtype(native_code+'i2')
| >>> swapped_dt = np.dtype(swapped_code+'i2')
| >>> native_dt.newbyteorder('S') == swapped_dt
| True
| >>> native_dt.newbyteorder() == swapped_dt
| True
| >>> native_dt == swapped_dt.newbyteorder('S')
| True
| >>> native_dt == swapped_dt.newbyteorder('=')
| True
| >>> native_dt == swapped_dt.newbyteorder('N')
| True
| >>> native_dt == native_dt.newbyteorder('|')
| True
| >>> np.dtype('<i2') == native_dt.newbyteorder('<')
| True
| >>> np.dtype('<i2') == native_dt.newbyteorder('L')
| True
| >>> np.dtype('>i2') == native_dt.newbyteorder('>')
| True
| >>> np.dtype('>i2') == native_dt.newbyteorder('B')
| True
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.dtype` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.dtype` type.
|
| Examples
| --------
| >>> import numpy as np
|
| >>> np.dtype[np.int64]
| numpy.dtype[numpy.int64]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| alignment
| The required alignment (bytes) of this data-type according to the compiler.
|
| More information is available in the C-API section of the manual.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.dtype('i4')
| >>> x.alignment
| 4
|
| >>> x = np.dtype(float)
| >>> x.alignment
| 8
|
| base
| Returns dtype for the base element of the subarrays,
| regardless of their dimension or shape.
|
| See Also
| --------
| dtype.subdtype
|
| Examples
| --------
| >>> import numpy as np
| >>> x = numpy.dtype('8f')
| >>> x.base
| dtype('float32')
|
| >>> x = numpy.dtype('i2')
| >>> x.base
| dtype('int16')
|
| byteorder
| A character indicating the byte-order of this data-type object.
|
| One of:
|
| === ==============
| '=' native
| '<' little-endian
| '>' big-endian
| '|' not applicable
| === ==============
|
| All built-in data-type objects have byteorder either '=' or '|'.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype('i2')
| >>> dt.byteorder
| '='
| >>> # endian is not relevant for 8 bit numbers
| >>> np.dtype('i1').byteorder
| '|'
| >>> # or ASCII strings
| >>> np.dtype('S2').byteorder
| '|'
| >>> # Even if specific code is given, and it is native
| >>> # '=' is the byteorder
| >>> import sys
| >>> sys_is_le = sys.byteorder == 'little'
| >>> native_code = '<' if sys_is_le else '>'
| >>> swapped_code = '>' if sys_is_le else '<'
| >>> dt = np.dtype(native_code + 'i2')
| >>> dt.byteorder
| '='
| >>> # Swapped code shows up as itself
| >>> dt = np.dtype(swapped_code + 'i2')
| >>> dt.byteorder == swapped_code
| True
|
| char
| A unique character code for each of the 21 different built-in types.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.dtype(float)
| >>> x.char
| 'd'
|
| descr
| `__array_interface__` description of the data-type.
|
| The format is that required by the 'descr' key in the
| `__array_interface__` attribute.
|
| Warning: This attribute exists specifically for `__array_interface__`,
| and passing it directly to `numpy.dtype` will not accurately reconstruct
| some dtypes (e.g., scalar and subarray dtypes).
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.dtype(float)
| >>> x.descr
| [('', '<f8')]
|
| >>> dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
| >>> dt.descr
| [('name', '<U16'), ('grades', '<f8', (2,))]
|
| fields
| Dictionary of named fields defined for this data type, or ``None``.
|
| The dictionary is indexed by keys that are the names of the fields.
| Each entry in the dictionary is a tuple fully describing the field::
|
| (dtype, offset[, title])
|
| Offset is limited to C int, which is signed and usually 32 bits.
| If present, the optional title can be any object (if it is a string
| or unicode then it will also be a key in the fields dictionary,
| otherwise it's meta-data). Notice also that the first two elements
| of the tuple can be passed directly as arguments to the
| ``ndarray.getfield`` and ``ndarray.setfield`` methods.
|
| See Also
| --------
| ndarray.getfield, ndarray.setfield
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
| >>> print(dt.fields)
| {'grades': (dtype(('float64',(2,))), 16), 'name': (dtype('|S16'), 0)}
|
| flags
| Bit-flags describing how this data type is to be interpreted.
|
| Bit-masks are in ``numpy._core.multiarray`` as the constants
| `ITEM_HASOBJECT`, `LIST_PICKLE`, `ITEM_IS_POINTER`, `NEEDS_INIT`,
| `NEEDS_PYAPI`, `USE_GETITEM`, `USE_SETITEM`. A full explanation
| of these flags is in C-API documentation; they are largely useful
| for user-defined data-types.
|
| The following example demonstrates that operations on this particular
| dtype requires Python C-API.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.dtype([('a', np.int32, 8), ('b', np.float64, 6)])
| >>> x.flags
| 16
| >>> np._core.multiarray.NEEDS_PYAPI
| 16
|
| hasobject
| Boolean indicating whether this dtype contains any reference-counted
| objects in any fields or sub-dtypes.
|
| Recall that what is actually in the ndarray memory representing
| the Python object is the memory address of that object (a pointer).
| Special handling may be required, and this attribute is useful for
| distinguishing data types that may contain arbitrary Python objects
| and data-types that won't.
|
| isalignedstruct
| Boolean indicating whether the dtype is a struct which maintains
| field alignment. This flag is sticky, so when combining multiple
| structs together, it is preserved and produces new dtypes which
| are also aligned.
|
| isbuiltin
| Integer indicating how this dtype relates to the built-in dtypes.
|
| Read-only.
|
| = ========================================================================
| 0 if this is a structured array type, with fields
| 1 if this is a dtype compiled into numpy (such as ints, floats etc)
| 2 if the dtype is for a user-defined numpy type
| A user-defined type uses the numpy C-API machinery to extend
| numpy to handle a new array type. See
| :ref:`user.user-defined-data-types` in the NumPy manual.
| = ========================================================================
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype('i2')
| >>> dt.isbuiltin
| 1
| >>> dt = np.dtype('f8')
| >>> dt.isbuiltin
| 1
| >>> dt = np.dtype([('field1', 'f8')])
| >>> dt.isbuiltin
| 0
|
| isnative
| Boolean indicating whether the byte order of this dtype is native
| to the platform.
|
| itemsize
| The element size of this data-type object.
|
| For 18 of the 21 types this number is fixed by the data-type.
| For the flexible data-types, this number can be anything.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> arr = np.array([[1, 2], [3, 4]])
| >>> arr.dtype
| dtype('int64')
| >>> arr.itemsize
| 8
|
| >>> dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
| >>> dt.itemsize
| 80
|
| kind
| A character code (one of 'biufcmMOSUV') identifying the general kind of data.
|
| = ======================
| b boolean
| i signed integer
| u unsigned integer
| f floating-point
| c complex floating-point
| m timedelta
| M datetime
| O object
| S (byte-)string
| U Unicode
| V void
| = ======================
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype('i4')
| >>> dt.kind
| 'i'
| >>> dt = np.dtype('f8')
| >>> dt.kind
| 'f'
| >>> dt = np.dtype([('field1', 'f8')])
| >>> dt.kind
| 'V'
|
| metadata
| Either ``None`` or a readonly dictionary of metadata (mappingproxy).
|
| The metadata field can be set using any dictionary at data-type
| creation. NumPy currently has no uniform approach to propagating
| metadata; although some array operations preserve it, there is no
| guarantee that others will.
|
| .. warning::
|
| Although used in certain projects, this feature was long undocumented
| and is not well supported. Some aspects of metadata propagation
| are expected to change in the future.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype(float, metadata={"key": "value"})
| >>> dt.metadata["key"]
| 'value'
| >>> arr = np.array([1, 2, 3], dtype=dt)
| >>> arr.dtype.metadata
| mappingproxy({'key': 'value'})
|
| Adding arrays with identical datatypes currently preserves the metadata:
|
| >>> (arr + arr).dtype.metadata
| mappingproxy({'key': 'value'})
|
| But if the arrays have different dtype metadata, the metadata may be
| dropped:
|
| >>> dt2 = np.dtype(float, metadata={"key2": "value2"})
| >>> arr2 = np.array([3, 2, 1], dtype=dt2)
| >>> (arr + arr2).dtype.metadata is None
| True # The metadata field is cleared so None is returned
|
| name
| A bit-width name for this data-type.
|
| Un-sized flexible data-type objects do not have this attribute.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> x = np.dtype(float)
| >>> x.name
| 'float64'
| >>> x = np.dtype([('a', np.int32, 8), ('b', np.float64, 6)])
| >>> x.name
| 'void640'
|
| names
| Ordered list of field names, or ``None`` if there are no fields.
|
| The names are ordered according to increasing byte offset. This can be
| used, for example, to walk through all of the named fields in offset order.
|
| Examples
| --------
| >>> dt = np.dtype([('name', np.str_, 16), ('grades', np.float64, (2,))])
| >>> dt.names
| ('name', 'grades')
|
| ndim
| Number of dimensions of the sub-array if this data type describes a
| sub-array, and ``0`` otherwise.
|
| .. versionadded:: 1.13.0
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.dtype(float)
| >>> x.ndim
| 0
|
| >>> x = np.dtype((float, 8))
| >>> x.ndim
| 1
|
| >>> x = np.dtype(('i4', (3, 4)))
| >>> x.ndim
| 2
|
| num
| A unique number for each of the 21 different built-in types.
|
| These are roughly ordered from least-to-most precision.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype(str)
| >>> dt.num
| 19
|
| >>> dt = np.dtype(float)
| >>> dt.num
| 12
|
| shape
| Shape tuple of the sub-array if this data type describes a sub-array,
| and ``()`` otherwise.
|
| Examples
| --------
|
| >>> import numpy as np
| >>> dt = np.dtype(('i4', 4))
| >>> dt.shape
| (4,)
|
| >>> dt = np.dtype(('i4', (2, 3)))
| >>> dt.shape
| (2, 3)
|
| str
| The array-protocol typestring of this data-type object.
|
| subdtype
| Tuple ``(item_dtype, shape)`` if this `dtype` describes a sub-array, and
| None otherwise.
|
| The *shape* is the fixed shape of the sub-array described by this
| data type, and *item_dtype* the data type of the array.
|
| If a field whose dtype object has this attribute is retrieved,
| then the extra dimensions implied by *shape* are tacked on to
| the end of the retrieved array.
|
| See Also
| --------
| dtype.base
|
| Examples
| --------
| >>> import numpy as np
| >>> x = numpy.dtype('8f')
| >>> x.subdtype
| (dtype('float32'), (8,))
|
| >>> x = numpy.dtype('i2')
| >>> x.subdtype
| >>>
|
| type
class errstate(builtins.object)
| errstate(*, call=<numpy._core._ufunc_config._unspecified object at 0x000001BED9C44DD0>, all=None, divide=None, over=None, under=None, invalid=None)
|
| errstate(**kwargs)
|
| Context manager for floating-point error handling.
|
| Using an instance of `errstate` as a context manager allows statements in
| that context to execute with a known error handling behavior. Upon entering
| the context the error handling is set with `seterr` and `seterrcall`, and
| upon exiting it is reset to what it was before.
|
| .. versionchanged:: 1.17.0
| `errstate` is also usable as a function decorator, saving
| a level of indentation if an entire function is wrapped.
|
| .. versionchanged:: 2.0
| `errstate` is now fully thread and asyncio safe, but may not be
| entered more than once.
| It is not safe to decorate async functions using ``errstate``.
|
| Parameters
| ----------
| kwargs : {divide, over, under, invalid}
| Keyword arguments. The valid keywords are the possible floating-point
| exceptions. Each keyword should have a string value that defines the
| treatment for the particular error. Possible values are
| {'ignore', 'warn', 'raise', 'call', 'print', 'log'}.
|
| See Also
| --------
| seterr, geterr, seterrcall, geterrcall
|
| Notes
| -----
| For complete documentation of the types of floating-point exceptions and
| treatment options, see `seterr`.
|
| Examples
| --------
| >>> import numpy as np
| >>> olderr = np.seterr(all='ignore') # Set error handling to known state.
|
| >>> np.arange(3) / 0.
| array([nan, inf, inf])
| >>> with np.errstate(divide='ignore'):
| ... np.arange(3) / 0.
| array([nan, inf, inf])
|
| >>> np.sqrt(-1)
| np.float64(nan)
| >>> with np.errstate(invalid='raise'):
| ... np.sqrt(-1)
| Traceback (most recent call last):
| File "<stdin>", line 2, in <module>
| FloatingPointError: invalid value encountered in sqrt
|
| Outside the context the error handling behavior has not changed:
|
| >>> np.geterr()
| {'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
| >>> olderr = np.seterr(**olderr) # restore original state
|
| Methods defined here:
|
| __call__(self, func) from numpy._core._ufunc_config.errstate
| Call self as a function.
|
| __enter__(self) from numpy._core._ufunc_config.errstate
|
| __exit__(self, *exc_info) from numpy._core._ufunc_config.errstate
|
| __init__(self, *, call=<numpy._core._ufunc_config._unspecified object at 0x000001BED9C44DD0>, all=None, divide=None, over=None, under=None, invalid=None) from numpy._core._ufunc_config.errstate
| Initialize self. See help(type(self)) for accurate signature.
class finfo(builtins.object)
| finfo(dtype)
|
| finfo(dtype)
|
| Machine limits for floating point types.
|
| Attributes
| ----------
| bits : int
| The number of bits occupied by the type.
| dtype : dtype
| Returns the dtype for which `finfo` returns information. For complex
| input, the returned dtype is the associated ``float*`` dtype for its
| real and complex components.
| eps : float
| The difference between 1.0 and the next smallest representable float
| larger than 1.0. For example, for 64-bit binary floats in the IEEE-754
| standard, ``eps = 2**-52``, approximately 2.22e-16.
| epsneg : float
| The difference between 1.0 and the next smallest representable float
| less than 1.0. For example, for 64-bit binary floats in the IEEE-754
| standard, ``epsneg = 2**-53``, approximately 1.11e-16.
| iexp : int
| The number of bits in the exponent portion of the floating point
| representation.
| machep : int
| The exponent that yields `eps`.
| max : floating point number of the appropriate type
| The largest representable number.
| maxexp : int
| The smallest positive power of the base (2) that causes overflow.
| min : floating point number of the appropriate type
| The smallest representable number, typically ``-max``.
| minexp : int
| The most negative power of the base (2) consistent with there
| being no leading 0's in the mantissa.
| negep : int
| The exponent that yields `epsneg`.
| nexp : int
| The number of bits in the exponent including its sign and bias.
| nmant : int
| The number of bits in the mantissa.
| precision : int
| The approximate number of decimal digits to which this kind of
| float is precise.
| resolution : floating point number of the appropriate type
| The approximate decimal resolution of this type, i.e.,
| ``10**-precision``.
| tiny : float
| An alias for `smallest_normal`, kept for backwards compatibility.
| smallest_normal : float
| The smallest positive floating point number with 1 as leading bit in
| the mantissa following IEEE-754 (see Notes).
| smallest_subnormal : float
| The smallest positive floating point number with 0 as leading bit in
| the mantissa following IEEE-754.
|
| Parameters
| ----------
| dtype : float, dtype, or instance
| Kind of floating point or complex floating point
| data-type about which to get information.
|
| See Also
| --------
| iinfo : The equivalent for integer data types.
| spacing : The distance between a value and the nearest adjacent number
| nextafter : The next floating point value after x1 towards x2
|
| Notes
| -----
| For developers of NumPy: do not instantiate this at the module level.
| The initial calculation of these parameters is expensive and negatively
| impacts import times. These objects are cached, so calling ``finfo()``
| repeatedly inside your functions is not a problem.
|
| Note that ``smallest_normal`` is not actually the smallest positive
| representable value in a NumPy floating point type. As in the IEEE-754
| standard [1]_, NumPy floating point types make use of subnormal numbers to
| fill the gap between 0 and ``smallest_normal``. However, subnormal numbers
| may have significantly reduced precision [2]_.
|
| This function can also be used for complex data types as well. If used,
| the output will be the same as the corresponding real float type
| (e.g. numpy.finfo(numpy.csingle) is the same as numpy.finfo(numpy.single)).
| However, the output is true for the real and imaginary components.
|
| References
| ----------
| .. [1] IEEE Standard for Floating-Point Arithmetic, IEEE Std 754-2008,
| pp.1-70, 2008, https://doi.org/10.1109/IEEESTD.2008.4610935
| .. [2] Wikipedia, "Denormal Numbers",
| https://en.wikipedia.org/wiki/Denormal_number
|
| Examples
| --------
| >>> import numpy as np
| >>> np.finfo(np.float64).dtype
| dtype('float64')
| >>> np.finfo(np.complex64).dtype
| dtype('float32')
|
| Methods defined here:
|
| __repr__(self) from numpy._core.getlimits.finfo
| Return repr(self).
|
| __str__(self) from numpy._core.getlimits.finfo
| Return str(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(cls, dtype) from numpy._core.getlimits.finfo
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| smallest_normal
| Return the value for the smallest normal.
|
| Returns
| -------
| smallest_normal : float
| Value for the smallest normal.
|
| Warns
| -----
| UserWarning
| If the calculated value for the smallest normal is requested for
| double-double.
|
| tiny
| Return the value for tiny, alias of smallest_normal.
|
| Returns
| -------
| tiny : float
| Value for the smallest normal, alias of smallest_normal.
|
| Warns
| -----
| UserWarning
| If the calculated value for the smallest normal is requested for
| double-double.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class flatiter(builtins.object)
| Flat iterator object to iterate over arrays.
|
| A `flatiter` iterator is returned by ``x.flat`` for any array `x`.
| It allows iterating over the array as if it were a 1-D array,
| either in a for-loop or by calling its `next` method.
|
| Iteration is done in row-major, C-style order (the last
| index varying the fastest). The iterator can also be indexed using
| basic slicing or advanced indexing.
|
| See Also
| --------
| ndarray.flat : Return a flat iterator over an array.
| ndarray.flatten : Returns a flattened copy of an array.
|
| Notes
| -----
| A `flatiter` iterator can not be constructed directly from Python code
| by calling the `flatiter` constructor.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(6).reshape(2, 3)
| >>> fl = x.flat
| >>> type(fl)
| <class 'numpy.flatiter'>
| >>> for item in fl:
| ... print(item)
| ...
| 0
| 1
| 2
| 3
| 4
| 5
|
| >>> fl[2:4]
| array([2, 3])
|
| Methods defined here:
|
| __array__(...)
| __array__(type=None) Get array from iterator
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __next__(self, /)
| Implement next(self).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| copy(...)
| copy()
|
| Get a copy of the iterator as a 1-D array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(6).reshape(2, 3)
| >>> x
| array([[0, 1, 2],
| [3, 4, 5]])
| >>> fl = x.flat
| >>> fl.copy()
| array([0, 1, 2, 3, 4, 5])
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| base
| A reference to the array that is iterated over.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(5)
| >>> fl = x.flat
| >>> fl.base is x
| True
|
| coords
| An N-dimensional tuple of current coordinates.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(6).reshape(2, 3)
| >>> fl = x.flat
| >>> fl.coords
| (0, 0)
| >>> next(fl)
| 0
| >>> fl.coords
| (0, 1)
|
| index
| Current flat index into the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(6).reshape(2, 3)
| >>> fl = x.flat
| >>> fl.index
| 0
| >>> next(fl)
| 0
| >>> fl.index
| 1
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
class flexible(generic)
| Abstract base class of all scalar types without predefined length.
| The actual size of these types depends on the specific `numpy.dtype`
| instantiation.
|
| Method resolution order:
| flexible
| generic
| builtins.object
|
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
class float16(floating)
| Half-precision floating-point number type.
|
| :Character code: ``'e'``
| :Canonical name: `numpy.half`
| :Alias on this platform (win32 AMD64): `numpy.float16`: 16-bit-precision floating-point number type: sign bit, 5 bits exponent, 10 bits mantissa.
|
| Method resolution order:
| float16
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| half.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.half(10.0).as_integer_ratio()
| (10, 1)
| >>> np.half(0.0).as_integer_ratio()
| (0, 1)
| >>> np.half(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| half.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.half(-2.0).is_integer()
| True
| >>> np.half(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class float32(floating)
| Single-precision floating-point number type, compatible with C ``float``.
|
| :Character code: ``'f'``
| :Canonical name: `numpy.single`
| :Alias on this platform (win32 AMD64): `numpy.float32`: 32-bit-precision floating-point number type: sign bit, 8 bits exponent, 23 bits mantissa.
|
| Method resolution order:
| float32
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| single.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.single(10.0).as_integer_ratio()
| (10, 1)
| >>> np.single(0.0).as_integer_ratio()
| (0, 1)
| >>> np.single(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| single.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.single(-2.0).is_integer()
| True
| >>> np.single(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class float64(floating, builtins.float)
| float64(x=0, /)
|
| Double-precision floating-point number type, compatible with Python
| :class:`float` and C ``double``.
|
| :Character code: ``'d'``
| :Canonical name: `numpy.double`
| :Alias on this platform (win32 AMD64): `numpy.float64`: 64-bit precision floating-point number type: sign bit, 11 bits exponent, 52 bits mantissa.
|
| Method resolution order:
| float64
| floating
| inexact
| number
| generic
| builtins.float
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| double.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.double(10.0).as_integer_ratio()
| (10, 1)
| >>> np.double(0.0).as_integer_ratio()
| (0, 1)
| >>> np.double(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| double.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.double(-2.0).is_integer()
| True
| >>> np.double(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.float:
|
| __ceil__(self, /)
| Return the ceiling as an Integral.
|
| __floor__(self, /)
| Return the floor as an Integral.
|
| __getnewargs__(self, /)
|
| __trunc__(self, /)
| Return the Integral closest to x between 0 and x.
|
| hex(self, /)
| Return a hexadecimal representation of a floating-point number.
|
| >>> (-0.1).hex()
| '-0x1.999999999999ap-4'
| >>> 3.14159.hex()
| '0x1.921f9f01b866ep+1'
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.float:
|
| __getformat__(typestr, /)
| You probably don't want to use this function.
|
| typestr
| Must be 'double' or 'float'.
|
| It exists mainly to be used in Python's test suite.
|
| This function returns whichever of 'unknown', 'IEEE, big-endian' or 'IEEE,
| little-endian' best describes the format of floating-point numbers used by the
| C type named by typestr.
|
| fromhex(string, /)
| Create a floating-point number from a hexadecimal string.
|
| >>> float.fromhex('0x1.ffffp10')
| 2047.984375
| >>> float.fromhex('-0x1p-1074')
| -5e-324
class floating(inexact)
| Abstract base class of all floating-point scalar types.
|
| Method resolution order:
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
class generic(builtins.object)
| Base class for numpy scalar types.
|
| Class from which most (all?) numpy scalar types are derived. For
| consistency, exposes the same API as `ndarray`, despite many
| consequent attributes being either "get-only," or completely irrelevant.
| This is the class from which it is strongly suggested users should derive
| custom scalar types.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
half = class float16(floating)
| Half-precision floating-point number type.
|
| :Character code: ``'e'``
| :Canonical name: `numpy.half`
| :Alias on this platform (win32 AMD64): `numpy.float16`: 16-bit-precision floating-point number type: sign bit, 5 bits exponent, 10 bits mantissa.
|
| Method resolution order:
| float16
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| half.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.half(10.0).as_integer_ratio()
| (10, 1)
| >>> np.half(0.0).as_integer_ratio()
| (0, 1)
| >>> np.half(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| half.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.half(-2.0).is_integer()
| True
| >>> np.half(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class iinfo(builtins.object)
| iinfo(int_type)
|
| iinfo(type)
|
| Machine limits for integer types.
|
| Attributes
| ----------
| bits : int
| The number of bits occupied by the type.
| dtype : dtype
| Returns the dtype for which `iinfo` returns information.
| min : int
| The smallest integer expressible by the type.
| max : int
| The largest integer expressible by the type.
|
| Parameters
| ----------
| int_type : integer type, dtype, or instance
| The kind of integer data type to get information about.
|
| See Also
| --------
| finfo : The equivalent for floating point data types.
|
| Examples
| --------
| With types:
|
| >>> import numpy as np
| >>> ii16 = np.iinfo(np.int16)
| >>> ii16.min
| -32768
| >>> ii16.max
| 32767
| >>> ii32 = np.iinfo(np.int32)
| >>> ii32.min
| -2147483648
| >>> ii32.max
| 2147483647
|
| With instances:
|
| >>> ii32 = np.iinfo(np.int32(10))
| >>> ii32.min
| -2147483648
| >>> ii32.max
| 2147483647
|
| Methods defined here:
|
| __init__(self, int_type) from numpy._core.getlimits.iinfo
| Initialize self. See help(type(self)) for accurate signature.
|
| __repr__(self) from numpy._core.getlimits.iinfo
| Return repr(self).
|
| __str__(self) from numpy._core.getlimits.iinfo
| String representation.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| max
| Maximum value of given dtype.
|
| min
| Minimum value of given dtype.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class inexact(number)
| Abstract base class of all numeric scalar types with a (potentially)
| inexact representation of the values in its range, such as
| floating-point numbers.
|
| Method resolution order:
| inexact
| number
| generic
| builtins.object
|
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
class int16(signedinteger)
| Signed integer type, compatible with C ``short``.
|
| :Character code: ``'h'``
| :Canonical name: `numpy.short`
| :Alias on this platform (win32 AMD64): `numpy.int16`: 16-bit signed integer (``-32_768`` to ``32_767``).
|
| Method resolution order:
| int16
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int16.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int16(127).bit_count()
| 7
| >>> np.int16(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class int32(signedinteger)
| Method resolution order:
| int32
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int32.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int32(127).bit_count()
| 7
| >>> np.int32(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class int64(signedinteger)
| Default signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'q'``
| :Canonical name: `numpy.int_`
| :Alias on this platform (win32 AMD64): `numpy.int64`: 64-bit signed integer (``-9_223_372_036_854_775_808`` to ``9_223_372_036_854_775_807``).
| :Alias on this platform (win32 AMD64): `numpy.intp`: Signed integer large enough to fit pointer, compatible with C ``intptr_t``.
|
| Method resolution order:
| int64
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int64(127).bit_count()
| 7
| >>> np.int64(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class int8(signedinteger)
| Signed integer type, compatible with C ``char``.
|
| :Character code: ``'b'``
| :Canonical name: `numpy.byte`
| :Alias on this platform (win32 AMD64): `numpy.int8`: 8-bit signed integer (``-128`` to ``127``).
|
| Method resolution order:
| int8
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int8.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int8(127).bit_count()
| 7
| >>> np.int8(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
int_ = class int64(signedinteger)
| Default signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'q'``
| :Canonical name: `numpy.int_`
| :Alias on this platform (win32 AMD64): `numpy.int64`: 64-bit signed integer (``-9_223_372_036_854_775_808`` to ``9_223_372_036_854_775_807``).
| :Alias on this platform (win32 AMD64): `numpy.intp`: Signed integer large enough to fit pointer, compatible with C ``intptr_t``.
|
| Method resolution order:
| int64
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int64(127).bit_count()
| 7
| >>> np.int64(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class intc(signedinteger)
| Signed integer type, compatible with C ``int``.
|
| :Character code: ``'i'``
|
| Method resolution order:
| intc
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class integer(number)
| Abstract base class of all integer scalar types.
|
| Method resolution order:
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
intp = class int64(signedinteger)
| Default signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'q'``
| :Canonical name: `numpy.int_`
| :Alias on this platform (win32 AMD64): `numpy.int64`: 64-bit signed integer (``-9_223_372_036_854_775_808`` to ``9_223_372_036_854_775_807``).
| :Alias on this platform (win32 AMD64): `numpy.intp`: Signed integer large enough to fit pointer, compatible with C ``intptr_t``.
|
| Method resolution order:
| int64
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int64(127).bit_count()
| 7
| >>> np.int64(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
long = class int32(signedinteger)
| Method resolution order:
| int32
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int32.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int32(127).bit_count()
| 7
| >>> np.int32(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class longdouble(floating)
| Extended-precision floating-point number type, compatible with C
| ``long double`` but not necessarily with IEEE 754 quadruple-precision.
|
| :Character code: ``'g'``
|
| Method resolution order:
| longdouble
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| longdouble.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.longdouble(10.0).as_integer_ratio()
| (10, 1)
| >>> np.longdouble(0.0).as_integer_ratio()
| (0, 1)
| >>> np.longdouble(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| longdouble.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.longdouble(-2.0).is_integer()
| True
| >>> np.longdouble(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
longlong = class int64(signedinteger)
| Default signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'q'``
| :Canonical name: `numpy.int_`
| :Alias on this platform (win32 AMD64): `numpy.int64`: 64-bit signed integer (``-9_223_372_036_854_775_808`` to ``9_223_372_036_854_775_807``).
| :Alias on this platform (win32 AMD64): `numpy.intp`: Signed integer large enough to fit pointer, compatible with C ``intptr_t``.
|
| Method resolution order:
| int64
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int64(127).bit_count()
| 7
| >>> np.int64(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class matrix(ndarray)
| matrix(data, dtype=None, copy=True)
|
| matrix(data, dtype=None, copy=True)
|
| Returns a matrix from an array-like object, or from a string of data.
|
| A matrix is a specialized 2-D array that retains its 2-D nature
| through operations. It has certain special operators, such as ``*``
| (matrix multiplication) and ``**`` (matrix power).
|
| .. note:: It is no longer recommended to use this class, even for linear
| algebra. Instead use regular arrays. The class may be removed
| in the future.
|
| Parameters
| ----------
| data : array_like or string
| If `data` is a string, it is interpreted as a matrix with commas
| or spaces separating columns, and semicolons separating rows.
| dtype : data-type
| Data-type of the output matrix.
| copy : bool
| If `data` is already an `ndarray`, then this flag determines
| whether the data is copied (the default), or whether a view is
| constructed.
|
| See Also
| --------
| array
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.matrix('1 2; 3 4')
| >>> a
| matrix([[1, 2],
| [3, 4]])
|
| >>> np.matrix([[1, 2], [3, 4]])
| matrix([[1, 2],
| [3, 4]])
|
| Method resolution order:
| matrix
| ndarray
| builtins.object
|
| Methods defined here:
|
| __array_finalize__(self, obj) from numpy.matrixlib.defmatrix.matrix
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __getitem__(self, index) from numpy.matrixlib.defmatrix.matrix
| Return self[key].
|
| __imul__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return self*=value.
|
| __ipow__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return self**=value.
|
| __mul__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return self*value.
|
| __pow__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return pow(self, value, mod).
|
| __rmul__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return value*self.
|
| __rpow__(self, other) from numpy.matrixlib.defmatrix.matrix
| Return pow(value, self, mod).
|
| all(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Test whether all matrix elements along a given axis evaluate to True.
|
| Parameters
| ----------
| See `numpy.all` for complete descriptions
|
| See Also
| --------
| numpy.all
|
| Notes
| -----
| This is the same as `ndarray.all`, but it returns a `matrix` object.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> y = x[0]; y
| matrix([[0, 1, 2, 3]])
| >>> (x == y)
| matrix([[ True, True, True, True],
| [False, False, False, False],
| [False, False, False, False]])
| >>> (x == y).all()
| False
| >>> (x == y).all(0)
| matrix([[False, False, False, False]])
| >>> (x == y).all(1)
| matrix([[ True],
| [False],
| [False]])
|
| any(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Test whether any array element along a given axis evaluates to True.
|
| Refer to `numpy.any` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which logical OR is performed
| out : ndarray, optional
| Output to existing array instead of creating new one, must have
| same shape as expected output
|
| Returns
| -------
| any : bool, ndarray
| Returns a single bool if `axis` is ``None``; otherwise,
| returns `ndarray`
|
| argmax(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Indexes of the maximum values along an axis.
|
| Return the indexes of the first occurrences of the maximum values
| along the specified axis. If axis is None, the index is for the
| flattened matrix.
|
| Parameters
| ----------
| See `numpy.argmax` for complete descriptions
|
| See Also
| --------
| numpy.argmax
|
| Notes
| -----
| This is the same as `ndarray.argmax`, but returns a `matrix` object
| where `ndarray.argmax` would return an `ndarray`.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.argmax()
| 11
| >>> x.argmax(0)
| matrix([[2, 2, 2, 2]])
| >>> x.argmax(1)
| matrix([[3],
| [3],
| [3]])
|
| argmin(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Indexes of the minimum values along an axis.
|
| Return the indexes of the first occurrences of the minimum values
| along the specified axis. If axis is None, the index is for the
| flattened matrix.
|
| Parameters
| ----------
| See `numpy.argmin` for complete descriptions.
|
| See Also
| --------
| numpy.argmin
|
| Notes
| -----
| This is the same as `ndarray.argmin`, but returns a `matrix` object
| where `ndarray.argmin` would return an `ndarray`.
|
| Examples
| --------
| >>> x = -np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, -1, -2, -3],
| [ -4, -5, -6, -7],
| [ -8, -9, -10, -11]])
| >>> x.argmin()
| 11
| >>> x.argmin(0)
| matrix([[2, 2, 2, 2]])
| >>> x.argmin(1)
| matrix([[3],
| [3],
| [3]])
|
| flatten(self, order='C') from numpy.matrixlib.defmatrix.matrix
| Return a flattened copy of the matrix.
|
| All `N` elements of the matrix are placed into a single row.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order. 'F' means to
| flatten in column-major (Fortran-style) order. 'A' means to
| flatten in column-major order if `m` is Fortran *contiguous* in
| memory, row-major order otherwise. 'K' means to flatten `m` in
| the order the elements occur in memory. The default is 'C'.
|
| Returns
| -------
| y : matrix
| A copy of the matrix, flattened to a `(1, N)` matrix where `N`
| is the number of elements in the original matrix.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the matrix.
|
| Examples
| --------
| >>> m = np.matrix([[1,2], [3,4]])
| >>> m.flatten()
| matrix([[1, 2, 3, 4]])
| >>> m.flatten('F')
| matrix([[1, 3, 2, 4]])
|
| getA = A(self) from numpy.matrixlib.defmatrix.matrix
| Return `self` as an `ndarray` object.
|
| Equivalent to ``np.asarray(self)``.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : ndarray
| `self` as an `ndarray`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.getA()
| array([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
|
| getA1 = A1(self) from numpy.matrixlib.defmatrix.matrix
| Return `self` as a flattened `ndarray`.
|
| Equivalent to ``np.asarray(x).ravel()``
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : ndarray
| `self`, 1-D, as an `ndarray`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.getA1()
| array([ 0, 1, 2, ..., 9, 10, 11])
|
| getH = H(self) from numpy.matrixlib.defmatrix.matrix
| Returns the (complex) conjugate transpose of `self`.
|
| Equivalent to ``np.transpose(self)`` if `self` is real-valued.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| complex conjugate transpose of `self`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4)))
| >>> z = x - 1j*x; z
| matrix([[ 0. +0.j, 1. -1.j, 2. -2.j, 3. -3.j],
| [ 4. -4.j, 5. -5.j, 6. -6.j, 7. -7.j],
| [ 8. -8.j, 9. -9.j, 10.-10.j, 11.-11.j]])
| >>> z.getH()
| matrix([[ 0. -0.j, 4. +4.j, 8. +8.j],
| [ 1. +1.j, 5. +5.j, 9. +9.j],
| [ 2. +2.j, 6. +6.j, 10.+10.j],
| [ 3. +3.j, 7. +7.j, 11.+11.j]])
|
| getI = I(self) from numpy.matrixlib.defmatrix.matrix
| Returns the (multiplicative) inverse of invertible `self`.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| If `self` is non-singular, `ret` is such that ``ret * self`` ==
| ``self * ret`` == ``np.matrix(np.eye(self[0,:].size))`` all return
| ``True``.
|
| Raises
| ------
| numpy.linalg.LinAlgError: Singular matrix
| If `self` is singular.
|
| See Also
| --------
| linalg.inv
|
| Examples
| --------
| >>> m = np.matrix('[1, 2; 3, 4]'); m
| matrix([[1, 2],
| [3, 4]])
| >>> m.getI()
| matrix([[-2. , 1. ],
| [ 1.5, -0.5]])
| >>> m.getI() * m
| matrix([[ 1., 0.], # may vary
| [ 0., 1.]])
|
| getT = T(self) from numpy.matrixlib.defmatrix.matrix
| Returns the transpose of the matrix.
|
| Does *not* conjugate! For the complex conjugate transpose, use ``.H``.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| The (non-conjugated) transpose of the matrix.
|
| See Also
| --------
| transpose, getH
|
| Examples
| --------
| >>> m = np.matrix('[1, 2; 3, 4]')
| >>> m
| matrix([[1, 2],
| [3, 4]])
| >>> m.getT()
| matrix([[1, 3],
| [2, 4]])
|
| max(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Return the maximum value along an axis.
|
| Parameters
| ----------
| See `amax` for complete descriptions
|
| See Also
| --------
| amax, ndarray.max
|
| Notes
| -----
| This is the same as `ndarray.max`, but returns a `matrix` object
| where `ndarray.max` would return an ndarray.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.max()
| 11
| >>> x.max(0)
| matrix([[ 8, 9, 10, 11]])
| >>> x.max(1)
| matrix([[ 3],
| [ 7],
| [11]])
|
| mean(self, axis=None, dtype=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Returns the average of the matrix elements along the given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean
|
| Notes
| -----
| Same as `ndarray.mean` except that, where that returns an `ndarray`,
| this returns a `matrix` object.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3, 4)))
| >>> x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.mean()
| 5.5
| >>> x.mean(0)
| matrix([[4., 5., 6., 7.]])
| >>> x.mean(1)
| matrix([[ 1.5],
| [ 5.5],
| [ 9.5]])
|
| min(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Return the minimum value along an axis.
|
| Parameters
| ----------
| See `amin` for complete descriptions.
|
| See Also
| --------
| amin, ndarray.min
|
| Notes
| -----
| This is the same as `ndarray.min`, but returns a `matrix` object
| where `ndarray.min` would return an ndarray.
|
| Examples
| --------
| >>> x = -np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, -1, -2, -3],
| [ -4, -5, -6, -7],
| [ -8, -9, -10, -11]])
| >>> x.min()
| -11
| >>> x.min(0)
| matrix([[ -8, -9, -10, -11]])
| >>> x.min(1)
| matrix([[ -3],
| [ -7],
| [-11]])
|
| prod(self, axis=None, dtype=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Return the product of the array elements over the given axis.
|
| Refer to `prod` for full documentation.
|
| See Also
| --------
| prod, ndarray.prod
|
| Notes
| -----
| Same as `ndarray.prod`, except, where that returns an `ndarray`, this
| returns a `matrix` object instead.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.prod()
| 0
| >>> x.prod(0)
| matrix([[ 0, 45, 120, 231]])
| >>> x.prod(1)
| matrix([[ 0],
| [ 840],
| [7920]])
|
| ptp(self, axis=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Peak-to-peak (maximum - minimum) value along the given axis.
|
| Refer to `numpy.ptp` for full documentation.
|
| See Also
| --------
| numpy.ptp
|
| Notes
| -----
| Same as `ndarray.ptp`, except, where that would return an `ndarray` object,
| this returns a `matrix` object.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.ptp()
| 11
| >>> x.ptp(0)
| matrix([[8, 8, 8, 8]])
| >>> x.ptp(1)
| matrix([[3],
| [3],
| [3]])
|
| ravel(self, order='C') from numpy.matrixlib.defmatrix.matrix
| Return a flattened matrix.
|
| Refer to `numpy.ravel` for more documentation.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| The elements of `m` are read using this index order. 'C' means to
| index the elements in C-like order, with the last axis index
| changing fastest, back to the first axis index changing slowest.
| 'F' means to index the elements in Fortran-like index order, with
| the first index changing fastest, and the last index changing
| slowest. Note that the 'C' and 'F' options take no account of the
| memory layout of the underlying array, and only refer to the order
| of axis indexing. 'A' means to read the elements in Fortran-like
| index order if `m` is Fortran *contiguous* in memory, C-like order
| otherwise. 'K' means to read the elements in the order they occur
| in memory, except for reversing the data when strides are negative.
| By default, 'C' index order is used.
|
| Returns
| -------
| ret : matrix
| Return the matrix flattened to shape `(1, N)` where `N`
| is the number of elements in the original matrix.
| A copy is made only if necessary.
|
| See Also
| --------
| matrix.flatten : returns a similar output matrix but always a copy
| matrix.flat : a flat iterator on the array.
| numpy.ravel : related function which returns an ndarray
|
| squeeze(self, axis=None) from numpy.matrixlib.defmatrix.matrix
| Return a possibly reshaped matrix.
|
| Refer to `numpy.squeeze` for more documentation.
|
| Parameters
| ----------
| axis : None or int or tuple of ints, optional
| Selects a subset of the axes of length one in the shape.
| If an axis is selected with shape entry greater than one,
| an error is raised.
|
| Returns
| -------
| squeezed : matrix
| The matrix, but as a (1, N) matrix if it had shape (N, 1).
|
| See Also
| --------
| numpy.squeeze : related function
|
| Notes
| -----
| If `m` has a single column then that column is returned
| as the single row of a matrix. Otherwise `m` is returned.
| The returned matrix is always either `m` itself or a view into `m`.
| Supplying an axis keyword argument will not affect the returned matrix
| but it may cause an error to be raised.
|
| Examples
| --------
| >>> c = np.matrix([[1], [2]])
| >>> c
| matrix([[1],
| [2]])
| >>> c.squeeze()
| matrix([[1, 2]])
| >>> r = c.T
| >>> r
| matrix([[1, 2]])
| >>> r.squeeze()
| matrix([[1, 2]])
| >>> m = np.matrix([[1, 2], [3, 4]])
| >>> m.squeeze()
| matrix([[1, 2],
| [3, 4]])
|
| std(self, axis=None, dtype=None, out=None, ddof=0) from numpy.matrixlib.defmatrix.matrix
| Return the standard deviation of the array elements along the given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std
|
| Notes
| -----
| This is the same as `ndarray.std`, except that where an `ndarray` would
| be returned, a `matrix` object is returned instead.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3, 4)))
| >>> x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.std()
| 3.4520525295346629 # may vary
| >>> x.std(0)
| matrix([[ 3.26598632, 3.26598632, 3.26598632, 3.26598632]]) # may vary
| >>> x.std(1)
| matrix([[ 1.11803399],
| [ 1.11803399],
| [ 1.11803399]])
|
| sum(self, axis=None, dtype=None, out=None) from numpy.matrixlib.defmatrix.matrix
| Returns the sum of the matrix elements, along the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum
|
| Notes
| -----
| This is the same as `ndarray.sum`, except that where an `ndarray` would
| be returned, a `matrix` object is returned instead.
|
| Examples
| --------
| >>> x = np.matrix([[1, 2], [4, 3]])
| >>> x.sum()
| 10
| >>> x.sum(axis=1)
| matrix([[3],
| [7]])
| >>> x.sum(axis=1, dtype='float')
| matrix([[3.],
| [7.]])
| >>> out = np.zeros((2, 1), dtype='float')
| >>> x.sum(axis=1, dtype='float', out=np.asmatrix(out))
| matrix([[3.],
| [7.]])
|
| tolist(self) from numpy.matrixlib.defmatrix.matrix
| Return the matrix as a (possibly nested) list.
|
| See `ndarray.tolist` for full documentation.
|
| See Also
| --------
| ndarray.tolist
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.tolist()
| [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
|
| var(self, axis=None, dtype=None, out=None, ddof=0) from numpy.matrixlib.defmatrix.matrix
| Returns the variance of the matrix elements, along the given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var
|
| Notes
| -----
| This is the same as `ndarray.var`, except that where an `ndarray` would
| be returned, a `matrix` object is returned instead.
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3, 4)))
| >>> x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.var()
| 11.916666666666666
| >>> x.var(0)
| matrix([[ 10.66666667, 10.66666667, 10.66666667, 10.66666667]]) # may vary
| >>> x.var(1)
| matrix([[1.25],
| [1.25],
| [1.25]])
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(subtype, data, dtype=None, copy=True) from numpy.matrixlib.defmatrix.matrix
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| A
| Return `self` as an `ndarray` object.
|
| Equivalent to ``np.asarray(self)``.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : ndarray
| `self` as an `ndarray`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.getA()
| array([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
|
| A1
| Return `self` as a flattened `ndarray`.
|
| Equivalent to ``np.asarray(x).ravel()``
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : ndarray
| `self`, 1-D, as an `ndarray`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4))); x
| matrix([[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]])
| >>> x.getA1()
| array([ 0, 1, 2, ..., 9, 10, 11])
|
| H
| Returns the (complex) conjugate transpose of `self`.
|
| Equivalent to ``np.transpose(self)`` if `self` is real-valued.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| complex conjugate transpose of `self`
|
| Examples
| --------
| >>> x = np.matrix(np.arange(12).reshape((3,4)))
| >>> z = x - 1j*x; z
| matrix([[ 0. +0.j, 1. -1.j, 2. -2.j, 3. -3.j],
| [ 4. -4.j, 5. -5.j, 6. -6.j, 7. -7.j],
| [ 8. -8.j, 9. -9.j, 10.-10.j, 11.-11.j]])
| >>> z.getH()
| matrix([[ 0. -0.j, 4. +4.j, 8. +8.j],
| [ 1. +1.j, 5. +5.j, 9. +9.j],
| [ 2. +2.j, 6. +6.j, 10.+10.j],
| [ 3. +3.j, 7. +7.j, 11.+11.j]])
|
| I
| Returns the (multiplicative) inverse of invertible `self`.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| If `self` is non-singular, `ret` is such that ``ret * self`` ==
| ``self * ret`` == ``np.matrix(np.eye(self[0,:].size))`` all return
| ``True``.
|
| Raises
| ------
| numpy.linalg.LinAlgError: Singular matrix
| If `self` is singular.
|
| See Also
| --------
| linalg.inv
|
| Examples
| --------
| >>> m = np.matrix('[1, 2; 3, 4]'); m
| matrix([[1, 2],
| [3, 4]])
| >>> m.getI()
| matrix([[-2. , 1. ],
| [ 1.5, -0.5]])
| >>> m.getI() * m
| matrix([[ 1., 0.], # may vary
| [ 0., 1.]])
|
| T
| Returns the transpose of the matrix.
|
| Does *not* conjugate! For the complex conjugate transpose, use ``.H``.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| ret : matrix object
| The (non-conjugated) transpose of the matrix.
|
| See Also
| --------
| transpose, getH
|
| Examples
| --------
| >>> m = np.matrix('[1, 2; 3, 4]')
| >>> m
| matrix([[1, 2],
| [3, 4]])
| >>> m.getT()
| matrix([[1, 3],
| [2, 4]])
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __annotations__ = {}
|
| __array_priority__ = 10.0
|
| ----------------------------------------------------------------------
| Methods inherited from ndarray:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __array_wrap__(...)
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods inherited from ndarray:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from ndarray:
|
| __array_interface__
| Array protocol: Python side.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from ndarray:
|
| __hash__ = None
class memmap(ndarray)
| memmap(filename, dtype=<class 'numpy.uint8'>, mode='r+', offset=0, shape=None, order='C')
|
| Create a memory-map to an array stored in a *binary* file on disk.
|
| Memory-mapped files are used for accessing small segments of large files
| on disk, without reading the entire file into memory. NumPy's
| memmap's are array-like objects. This differs from Python's ``mmap``
| module, which uses file-like objects.
|
| This subclass of ndarray has some unpleasant interactions with
| some operations, because it doesn't quite fit properly as a subclass.
| An alternative to using this subclass is to create the ``mmap``
| object yourself, then create an ndarray with ndarray.__new__ directly,
| passing the object created in its 'buffer=' parameter.
|
| This class may at some point be turned into a factory function
| which returns a view into an mmap buffer.
|
| Flush the memmap instance to write the changes to the file. Currently there
| is no API to close the underlying ``mmap``. It is tricky to ensure the
| resource is actually closed, since it may be shared between different
| memmap instances.
|
|
| Parameters
| ----------
| filename : str, file-like object, or pathlib.Path instance
| The file name or file object to be used as the array data buffer.
| dtype : data-type, optional
| The data-type used to interpret the file contents.
| Default is `uint8`.
| mode : {'r+', 'r', 'w+', 'c'}, optional
| The file is opened in this mode:
|
| +------+-------------------------------------------------------------+
| | 'r' | Open existing file for reading only. |
| +------+-------------------------------------------------------------+
| | 'r+' | Open existing file for reading and writing. |
| +------+-------------------------------------------------------------+
| | 'w+' | Create or overwrite existing file for reading and writing. |
| | | If ``mode == 'w+'`` then `shape` must also be specified. |
| +------+-------------------------------------------------------------+
| | 'c' | Copy-on-write: assignments affect data in memory, but |
| | | changes are not saved to disk. The file on disk is |
| | | read-only. |
| +------+-------------------------------------------------------------+
|
| Default is 'r+'.
| offset : int, optional
| In the file, array data starts at this offset. Since `offset` is
| measured in bytes, it should normally be a multiple of the byte-size
| of `dtype`. When ``mode != 'r'``, even positive offsets beyond end of
| file are valid; The file will be extended to accommodate the
| additional data. By default, ``memmap`` will start at the beginning of
| the file, even if ``filename`` is a file pointer ``fp`` and
| ``fp.tell() != 0``.
| shape : int or sequence of ints, optional
| The desired shape of the array. If ``mode == 'r'`` and the number
| of remaining bytes after `offset` is not a multiple of the byte-size
| of `dtype`, you must specify `shape`. By default, the returned array
| will be 1-D with the number of elements determined by file size
| and data-type.
|
| .. versionchanged:: 2.0
| The shape parameter can now be any integer sequence type, previously
| types were limited to tuple and int.
|
| order : {'C', 'F'}, optional
| Specify the order of the ndarray memory layout:
| :term:`row-major`, C-style or :term:`column-major`,
| Fortran-style. This only has an effect if the shape is
| greater than 1-D. The default order is 'C'.
|
| Attributes
| ----------
| filename : str or pathlib.Path instance
| Path to the mapped file.
| offset : int
| Offset position in the file.
| mode : str
| File mode.
|
| Methods
| -------
| flush
| Flush any changes in memory to file on disk.
| When you delete a memmap object, flush is called first to write
| changes to disk.
|
|
| See also
| --------
| lib.format.open_memmap : Create or load a memory-mapped ``.npy`` file.
|
| Notes
| -----
| The memmap object can be used anywhere an ndarray is accepted.
| Given a memmap ``fp``, ``isinstance(fp, numpy.ndarray)`` returns
| ``True``.
|
| Memory-mapped files cannot be larger than 2GB on 32-bit systems.
|
| When a memmap causes a file to be created or extended beyond its
| current size in the filesystem, the contents of the new part are
| unspecified. On systems with POSIX filesystem semantics, the extended
| part will be filled with zero bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> data = np.arange(12, dtype='float32')
| >>> data.resize((3,4))
|
| This example uses a temporary file so that doctest doesn't write
| files to your directory. You would use a 'normal' filename.
|
| >>> from tempfile import mkdtemp
| >>> import os.path as path
| >>> filename = path.join(mkdtemp(), 'newfile.dat')
|
| Create a memmap with dtype and shape that matches our data:
|
| >>> fp = np.memmap(filename, dtype='float32', mode='w+', shape=(3,4))
| >>> fp
| memmap([[0., 0., 0., 0.],
| [0., 0., 0., 0.],
| [0., 0., 0., 0.]], dtype=float32)
|
| Write data to memmap array:
|
| >>> fp[:] = data[:]
| >>> fp
| memmap([[ 0., 1., 2., 3.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.]], dtype=float32)
|
| >>> fp.filename == path.abspath(filename)
| True
|
| Flushes memory changes to disk in order to read them back
|
| >>> fp.flush()
|
| Load the memmap and verify data was stored:
|
| >>> newfp = np.memmap(filename, dtype='float32', mode='r', shape=(3,4))
| >>> newfp
| memmap([[ 0., 1., 2., 3.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.]], dtype=float32)
|
| Read-only memmap:
|
| >>> fpr = np.memmap(filename, dtype='float32', mode='r', shape=(3,4))
| >>> fpr.flags.writeable
| False
|
| Copy-on-write memmap:
|
| >>> fpc = np.memmap(filename, dtype='float32', mode='c', shape=(3,4))
| >>> fpc.flags.writeable
| True
|
| It's possible to assign to copy-on-write array, but values are only
| written into the memory copy of the array, and not written to disk:
|
| >>> fpc
| memmap([[ 0., 1., 2., 3.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.]], dtype=float32)
| >>> fpc[0,:] = 0
| >>> fpc
| memmap([[ 0., 0., 0., 0.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.]], dtype=float32)
|
| File on disk is unchanged:
|
| >>> fpr
| memmap([[ 0., 1., 2., 3.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.]], dtype=float32)
|
| Offset into a memmap:
|
| >>> fpo = np.memmap(filename, dtype='float32', mode='r', offset=16)
| >>> fpo
| memmap([ 4., 5., 6., 7., 8., 9., 10., 11.], dtype=float32)
|
| Method resolution order:
| memmap
| ndarray
| builtins.object
|
| Methods defined here:
|
| __array_finalize__(self, obj) from numpy._core.memmap.memmap
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __array_wrap__(self, arr, context=None, return_scalar=False) from numpy._core.memmap.memmap
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __getitem__(self, index) from numpy._core.memmap.memmap
| Return self[key].
|
| flush(self) from numpy._core.memmap.memmap
| Write any changes in the array to the file on disk.
|
| For further information, see `memmap`.
|
| Parameters
| ----------
| None
|
| See Also
| --------
| memmap
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(subtype, filename, dtype=<class 'numpy.uint8'>, mode='r+', offset=0, shape=None, order='C') from numpy._core.memmap.memmap
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __array_priority__ = -100.0
|
| ----------------------------------------------------------------------
| Methods inherited from ndarray:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __imul__(self, value, /)
| Return self*=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __ipow__(self, value, /)
| Return self**=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| a.all(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if all elements evaluate to True.
|
| Refer to `numpy.all` for full documentation.
|
| See Also
| --------
| numpy.all : equivalent function
|
| any(...)
| a.any(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if any of the elements of `a` evaluate to True.
|
| Refer to `numpy.any` for full documentation.
|
| See Also
| --------
| numpy.any : equivalent function
|
| argmax(...)
| a.argmax(axis=None, out=None, *, keepdims=False)
|
| Return indices of the maximum values along the given axis.
|
| Refer to `numpy.argmax` for full documentation.
|
| See Also
| --------
| numpy.argmax : equivalent function
|
| argmin(...)
| a.argmin(axis=None, out=None, *, keepdims=False)
|
| Return indices of the minimum values along the given axis.
|
| Refer to `numpy.argmin` for detailed documentation.
|
| See Also
| --------
| numpy.argmin : equivalent function
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| flatten(...)
| a.flatten(order='C')
|
| Return a copy of the array collapsed into one dimension.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order.
| 'F' means to flatten in column-major (Fortran-
| style) order. 'A' means to flatten in column-major
| order if `a` is Fortran *contiguous* in memory,
| row-major order otherwise. 'K' means to flatten
| `a` in the order the elements occur in memory.
| The default is 'C'.
|
| Returns
| -------
| y : ndarray
| A copy of the input array, flattened to one dimension.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,2], [3,4]])
| >>> a.flatten()
| array([1, 2, 3, 4])
| >>> a.flatten('F')
| array([1, 3, 2, 4])
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| max(...)
| a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the maximum along a given axis.
|
| Refer to `numpy.amax` for full documentation.
|
| See Also
| --------
| numpy.amax : equivalent function
|
| mean(...)
| a.mean(axis=None, dtype=None, out=None, keepdims=False, *, where=True)
|
| Returns the average of the array elements along given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean : equivalent function
|
| min(...)
| a.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the minimum along a given axis.
|
| Refer to `numpy.amin` for full documentation.
|
| See Also
| --------
| numpy.amin : equivalent function
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| prod(...)
| a.prod(axis=None, dtype=None, out=None, keepdims=False,
| initial=1, where=True)
|
| Return the product of the array elements over the given axis
|
| Refer to `numpy.prod` for full documentation.
|
| See Also
| --------
| numpy.prod : equivalent function
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| ravel(...)
| a.ravel([order])
|
| Return a flattened array.
|
| Refer to `numpy.ravel` for full documentation.
|
| See Also
| --------
| numpy.ravel : equivalent function
|
| ndarray.flat : a flat iterator on the array.
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| squeeze(...)
| a.squeeze(axis=None)
|
| Remove axes of length one from `a`.
|
| Refer to `numpy.squeeze` for full documentation.
|
| See Also
| --------
| numpy.squeeze : equivalent function
|
| std(...)
| a.std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the standard deviation of the array elements along given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std : equivalent function
|
| sum(...)
| a.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
|
| Return the sum of the array elements over the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum : equivalent function
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tolist(...)
| a.tolist()
|
| Return the array as an ``a.ndim``-levels deep nested list of Python scalars.
|
| Return a copy of the array data as a (nested) Python list.
| Data items are converted to the nearest compatible builtin Python type, via
| the `~numpy.ndarray.item` function.
|
| If ``a.ndim`` is 0, then since the depth of the nested list is 0, it will
| not be a list at all, but a simple Python scalar.
|
| Parameters
| ----------
| none
|
| Returns
| -------
| y : object, or list of object, or list of list of object, or ...
| The possibly nested list of array elements.
|
| Notes
| -----
| The array may be recreated via ``a = np.array(a.tolist())``, although this
| may sometimes lose precision.
|
| Examples
| --------
| For a 1D array, ``a.tolist()`` is almost the same as ``list(a)``,
| except that ``tolist`` changes numpy scalars to Python scalars:
|
| >>> import numpy as np
| >>> a = np.uint32([1, 2])
| >>> a_list = list(a)
| >>> a_list
| [1, 2]
| >>> type(a_list[0])
| <class 'numpy.uint32'>
| >>> a_tolist = a.tolist()
| >>> a_tolist
| [1, 2]
| >>> type(a_tolist[0])
| <class 'int'>
|
| Additionally, for a 2D array, ``tolist`` applies recursively:
|
| >>> a = np.array([[1, 2], [3, 4]])
| >>> list(a)
| [array([1, 2]), array([3, 4])]
| >>> a.tolist()
| [[1, 2], [3, 4]]
|
| The base case for this recursion is a 0D array:
|
| >>> a = np.array(1)
| >>> list(a)
| Traceback (most recent call last):
| ...
| TypeError: iteration over a 0-d array
| >>> a.tolist()
| 1
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| var(...)
| a.var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the variance of the array elements, along given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var : equivalent function
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods inherited from ndarray:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from ndarray:
|
| T
| View of the transposed array.
|
| Same as ``self.transpose()``.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.T
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.T
| array([1, 2, 3, 4])
|
| See Also
| --------
| transpose
|
| __array_interface__
| Array protocol: Python side.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| ptp
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from ndarray:
|
| __hash__ = None
class ndarray(builtins.object)
| ndarray(shape, dtype=float, buffer=None, offset=0,
| strides=None, order=None)
|
| An array object represents a multidimensional, homogeneous array
| of fixed-size items. An associated data-type object describes the
| format of each element in the array (its byte-order, how many bytes it
| occupies in memory, whether it is an integer, a floating point number,
| or something else, etc.)
|
| Arrays should be constructed using `array`, `zeros` or `empty` (refer
| to the See Also section below). The parameters given here refer to
| a low-level method (`ndarray(...)`) for instantiating an array.
|
| For more information, refer to the `numpy` module and examine the
| methods and attributes of an array.
|
| Parameters
| ----------
| (for the __new__ method; see Notes below)
|
| shape : tuple of ints
| Shape of created array.
| dtype : data-type, optional
| Any object that can be interpreted as a numpy data type.
| buffer : object exposing buffer interface, optional
| Used to fill the array with data.
| offset : int, optional
| Offset of array data in buffer.
| strides : tuple of ints, optional
| Strides of data in memory.
| order : {'C', 'F'}, optional
| Row-major (C-style) or column-major (Fortran-style) order.
|
| Attributes
| ----------
| T : ndarray
| Transpose of the array.
| data : buffer
| The array's elements, in memory.
| dtype : dtype object
| Describes the format of the elements in the array.
| flags : dict
| Dictionary containing information related to memory use, e.g.,
| 'C_CONTIGUOUS', 'OWNDATA', 'WRITEABLE', etc.
| flat : numpy.flatiter object
| Flattened version of the array as an iterator. The iterator
| allows assignments, e.g., ``x.flat = 3`` (See `ndarray.flat` for
| assignment examples; TODO).
| imag : ndarray
| Imaginary part of the array.
| real : ndarray
| Real part of the array.
| size : int
| Number of elements in the array.
| itemsize : int
| The memory use of each array element in bytes.
| nbytes : int
| The total number of bytes required to store the array data,
| i.e., ``itemsize * size``.
| ndim : int
| The array's number of dimensions.
| shape : tuple of ints
| Shape of the array.
| strides : tuple of ints
| The step-size required to move from one element to the next in
| memory. For example, a contiguous ``(3, 4)`` array of type
| ``int16`` in C-order has strides ``(8, 2)``. This implies that
| to move from element to element in memory requires jumps of 2 bytes.
| To move from row-to-row, one needs to jump 8 bytes at a time
| (``2 * 4``).
| ctypes : ctypes object
| Class containing properties of the array needed for interaction
| with ctypes.
| base : ndarray
| If the array is a view into another array, that array is its `base`
| (unless that array is also a view). The `base` array is where the
| array data is actually stored.
|
| See Also
| --------
| array : Construct an array.
| zeros : Create an array, each element of which is zero.
| empty : Create an array, but leave its allocated memory unchanged (i.e.,
| it contains "garbage").
| dtype : Create a data-type.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| Notes
| -----
| There are two modes of creating an array using ``__new__``:
|
| 1. If `buffer` is None, then only `shape`, `dtype`, and `order`
| are used.
| 2. If `buffer` is an object exposing the buffer interface, then
| all keywords are interpreted.
|
| No ``__init__`` method is needed because the array is fully initialized
| after the ``__new__`` method.
|
| Examples
| --------
| These examples illustrate the low-level `ndarray` constructor. Refer
| to the `See Also` section above for easier ways of constructing an
| ndarray.
|
| First mode, `buffer` is None:
|
| >>> import numpy as np
| >>> np.ndarray(shape=(2,2), dtype=float, order='F')
| array([[0.0e+000, 0.0e+000], # random
| [ nan, 2.5e-323]])
|
| Second mode:
|
| >>> np.ndarray((2,), buffer=np.array([1,2,3]),
| ... offset=np.int_().itemsize,
| ... dtype=int) # offset = 1*itemsize, i.e. skip first element
| array([2, 3])
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_finalize__(...)
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __array_wrap__(...)
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __imul__(self, value, /)
| Return self*=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __ipow__(self, value, /)
| Return self**=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| a.all(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if all elements evaluate to True.
|
| Refer to `numpy.all` for full documentation.
|
| See Also
| --------
| numpy.all : equivalent function
|
| any(...)
| a.any(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if any of the elements of `a` evaluate to True.
|
| Refer to `numpy.any` for full documentation.
|
| See Also
| --------
| numpy.any : equivalent function
|
| argmax(...)
| a.argmax(axis=None, out=None, *, keepdims=False)
|
| Return indices of the maximum values along the given axis.
|
| Refer to `numpy.argmax` for full documentation.
|
| See Also
| --------
| numpy.argmax : equivalent function
|
| argmin(...)
| a.argmin(axis=None, out=None, *, keepdims=False)
|
| Return indices of the minimum values along the given axis.
|
| Refer to `numpy.argmin` for detailed documentation.
|
| See Also
| --------
| numpy.argmin : equivalent function
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| flatten(...)
| a.flatten(order='C')
|
| Return a copy of the array collapsed into one dimension.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order.
| 'F' means to flatten in column-major (Fortran-
| style) order. 'A' means to flatten in column-major
| order if `a` is Fortran *contiguous* in memory,
| row-major order otherwise. 'K' means to flatten
| `a` in the order the elements occur in memory.
| The default is 'C'.
|
| Returns
| -------
| y : ndarray
| A copy of the input array, flattened to one dimension.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,2], [3,4]])
| >>> a.flatten()
| array([1, 2, 3, 4])
| >>> a.flatten('F')
| array([1, 3, 2, 4])
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| max(...)
| a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the maximum along a given axis.
|
| Refer to `numpy.amax` for full documentation.
|
| See Also
| --------
| numpy.amax : equivalent function
|
| mean(...)
| a.mean(axis=None, dtype=None, out=None, keepdims=False, *, where=True)
|
| Returns the average of the array elements along given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean : equivalent function
|
| min(...)
| a.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the minimum along a given axis.
|
| Refer to `numpy.amin` for full documentation.
|
| See Also
| --------
| numpy.amin : equivalent function
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| prod(...)
| a.prod(axis=None, dtype=None, out=None, keepdims=False,
| initial=1, where=True)
|
| Return the product of the array elements over the given axis
|
| Refer to `numpy.prod` for full documentation.
|
| See Also
| --------
| numpy.prod : equivalent function
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| ravel(...)
| a.ravel([order])
|
| Return a flattened array.
|
| Refer to `numpy.ravel` for full documentation.
|
| See Also
| --------
| numpy.ravel : equivalent function
|
| ndarray.flat : a flat iterator on the array.
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| squeeze(...)
| a.squeeze(axis=None)
|
| Remove axes of length one from `a`.
|
| Refer to `numpy.squeeze` for full documentation.
|
| See Also
| --------
| numpy.squeeze : equivalent function
|
| std(...)
| a.std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the standard deviation of the array elements along given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std : equivalent function
|
| sum(...)
| a.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
|
| Return the sum of the array elements over the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum : equivalent function
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tolist(...)
| a.tolist()
|
| Return the array as an ``a.ndim``-levels deep nested list of Python scalars.
|
| Return a copy of the array data as a (nested) Python list.
| Data items are converted to the nearest compatible builtin Python type, via
| the `~numpy.ndarray.item` function.
|
| If ``a.ndim`` is 0, then since the depth of the nested list is 0, it will
| not be a list at all, but a simple Python scalar.
|
| Parameters
| ----------
| none
|
| Returns
| -------
| y : object, or list of object, or list of list of object, or ...
| The possibly nested list of array elements.
|
| Notes
| -----
| The array may be recreated via ``a = np.array(a.tolist())``, although this
| may sometimes lose precision.
|
| Examples
| --------
| For a 1D array, ``a.tolist()`` is almost the same as ``list(a)``,
| except that ``tolist`` changes numpy scalars to Python scalars:
|
| >>> import numpy as np
| >>> a = np.uint32([1, 2])
| >>> a_list = list(a)
| >>> a_list
| [1, 2]
| >>> type(a_list[0])
| <class 'numpy.uint32'>
| >>> a_tolist = a.tolist()
| >>> a_tolist
| [1, 2]
| >>> type(a_tolist[0])
| <class 'int'>
|
| Additionally, for a 2D array, ``tolist`` applies recursively:
|
| >>> a = np.array([[1, 2], [3, 4]])
| >>> list(a)
| [array([1, 2]), array([3, 4])]
| >>> a.tolist()
| [[1, 2], [3, 4]]
|
| The base case for this recursion is a 0D array:
|
| >>> a = np.array(1)
| >>> list(a)
| Traceback (most recent call last):
| ...
| TypeError: iteration over a 0-d array
| >>> a.tolist()
| 1
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| var(...)
| a.var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the variance of the array elements, along given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var : equivalent function
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| T
| View of the transposed array.
|
| Same as ``self.transpose()``.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.T
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.T
| array([1, 2, 3, 4])
|
| See Also
| --------
| transpose
|
| __array_interface__
| Array protocol: Python side.
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| ptp
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
class ndenumerate(builtins.object)
| ndenumerate(arr)
|
| Multidimensional index iterator.
|
| Return an iterator yielding pairs of array coordinates and values.
|
| Parameters
| ----------
| arr : ndarray
| Input array.
|
| See Also
| --------
| ndindex, flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> for index, x in np.ndenumerate(a):
| ... print(index, x)
| (0, 0) 1
| (0, 1) 2
| (1, 0) 3
| (1, 1) 4
|
| Methods defined here:
|
| __init__(self, arr) from numpy.lib._index_tricks_impl.ndenumerate
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self) from numpy.lib._index_tricks_impl.ndenumerate
|
| __next__(self) from numpy.lib._index_tricks_impl.ndenumerate
| Standard iterator method, returns the index tuple and array value.
|
| Returns
| -------
| coords : tuple of ints
| The indices of the current iteration.
| val : scalar
| The array element of the current iteration.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class ndindex(builtins.object)
| ndindex(*shape)
|
| An N-dimensional iterator object to index arrays.
|
| Given the shape of an array, an `ndindex` instance iterates over
| the N-dimensional index of the array. At each iteration a tuple
| of indices is returned, the last dimension is iterated over first.
|
| Parameters
| ----------
| shape : ints, or a single tuple of ints
| The size of each dimension of the array can be passed as
| individual parameters or as the elements of a tuple.
|
| See Also
| --------
| ndenumerate, flatiter
|
| Examples
| --------
| >>> import numpy as np
|
| Dimensions as individual arguments
|
| >>> for index in np.ndindex(3, 2, 1):
| ... print(index)
| (0, 0, 0)
| (0, 1, 0)
| (1, 0, 0)
| (1, 1, 0)
| (2, 0, 0)
| (2, 1, 0)
|
| Same dimensions - but in a tuple ``(3, 2, 1)``
|
| >>> for index in np.ndindex((3, 2, 1)):
| ... print(index)
| (0, 0, 0)
| (0, 1, 0)
| (1, 0, 0)
| (1, 1, 0)
| (2, 0, 0)
| (2, 1, 0)
|
| Methods defined here:
|
| __init__(self, *shape) from numpy.lib._index_tricks_impl.ndindex
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self) from numpy.lib._index_tricks_impl.ndindex
|
| __next__(self) from numpy.lib._index_tricks_impl.ndindex
| Standard iterator method, updates the index and returns the index
| tuple.
|
| Returns
| -------
| val : tuple of ints
| Returns a tuple containing the indices of the current
| iteration.
|
| ndincr(self) from numpy.lib._index_tricks_impl.ndindex
| Increment the multi-dimensional index by one.
|
| This method is for backward compatibility only: do not use.
|
| .. deprecated:: 1.20.0
| This method has been advised against since numpy 1.8.0, but only
| started emitting DeprecationWarning as of this version.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class nditer(builtins.object)
| nditer(op, flags=None, op_flags=None, op_dtypes=None, order='K',
| casting='safe', op_axes=None, itershape=None, buffersize=0)
|
| Efficient multi-dimensional iterator object to iterate over arrays.
| To get started using this object, see the
| :ref:`introductory guide to array iteration <arrays.nditer>`.
|
| Parameters
| ----------
| op : ndarray or sequence of array_like
| The array(s) to iterate over.
|
| flags : sequence of str, optional
| Flags to control the behavior of the iterator.
|
| * ``buffered`` enables buffering when required.
| * ``c_index`` causes a C-order index to be tracked.
| * ``f_index`` causes a Fortran-order index to be tracked.
| * ``multi_index`` causes a multi-index, or a tuple of indices
| with one per iteration dimension, to be tracked.
| * ``common_dtype`` causes all the operands to be converted to
| a common data type, with copying or buffering as necessary.
| * ``copy_if_overlap`` causes the iterator to determine if read
| operands have overlap with write operands, and make temporary
| copies as necessary to avoid overlap. False positives (needless
| copying) are possible in some cases.
| * ``delay_bufalloc`` delays allocation of the buffers until
| a reset() call is made. Allows ``allocate`` operands to
| be initialized before their values are copied into the buffers.
| * ``external_loop`` causes the ``values`` given to be
| one-dimensional arrays with multiple values instead of
| zero-dimensional arrays.
| * ``grow_inner`` allows the ``value`` array sizes to be made
| larger than the buffer size when both ``buffered`` and
| ``external_loop`` is used.
| * ``ranged`` allows the iterator to be restricted to a sub-range
| of the iterindex values.
| * ``refs_ok`` enables iteration of reference types, such as
| object arrays.
| * ``reduce_ok`` enables iteration of ``readwrite`` operands
| which are broadcasted, also known as reduction operands.
| * ``zerosize_ok`` allows `itersize` to be zero.
| op_flags : list of list of str, optional
| This is a list of flags for each operand. At minimum, one of
| ``readonly``, ``readwrite``, or ``writeonly`` must be specified.
|
| * ``readonly`` indicates the operand will only be read from.
| * ``readwrite`` indicates the operand will be read from and written to.
| * ``writeonly`` indicates the operand will only be written to.
| * ``no_broadcast`` prevents the operand from being broadcasted.
| * ``contig`` forces the operand data to be contiguous.
| * ``aligned`` forces the operand data to be aligned.
| * ``nbo`` forces the operand data to be in native byte order.
| * ``copy`` allows a temporary read-only copy if required.
| * ``updateifcopy`` allows a temporary read-write copy if required.
| * ``allocate`` causes the array to be allocated if it is None
| in the ``op`` parameter.
| * ``no_subtype`` prevents an ``allocate`` operand from using a subtype.
| * ``arraymask`` indicates that this operand is the mask to use
| for selecting elements when writing to operands with the
| 'writemasked' flag set. The iterator does not enforce this,
| but when writing from a buffer back to the array, it only
| copies those elements indicated by this mask.
| * ``writemasked`` indicates that only elements where the chosen
| ``arraymask`` operand is True will be written to.
| * ``overlap_assume_elementwise`` can be used to mark operands that are
| accessed only in the iterator order, to allow less conservative
| copying when ``copy_if_overlap`` is present.
| op_dtypes : dtype or tuple of dtype(s), optional
| The required data type(s) of the operands. If copying or buffering
| is enabled, the data will be converted to/from their original types.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the iteration order. 'C' means C order, 'F' means
| Fortran order, 'A' means 'F' order if all the arrays are Fortran
| contiguous, 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible. This also
| affects the element memory order of ``allocate`` operands, as they
| are allocated to be compatible with iteration order.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur when making a copy
| or buffering. Setting this to 'unsafe' is not recommended,
| as it can adversely affect accumulations.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| op_axes : list of list of ints, optional
| If provided, is a list of ints or None for each operands.
| The list of axes for an operand is a mapping from the dimensions
| of the iterator to the dimensions of the operand. A value of
| -1 can be placed for entries, causing that dimension to be
| treated as `newaxis`.
| itershape : tuple of ints, optional
| The desired shape of the iterator. This allows ``allocate`` operands
| with a dimension mapped by op_axes not corresponding to a dimension
| of a different operand to get a value not equal to 1 for that
| dimension.
| buffersize : int, optional
| When buffering is enabled, controls the size of the temporary
| buffers. Set to 0 for the default value.
|
| Attributes
| ----------
| dtypes : tuple of dtype(s)
| The data types of the values provided in `value`. This may be
| different from the operand data types if buffering is enabled.
| Valid only before the iterator is closed.
| finished : bool
| Whether the iteration over the operands is finished or not.
| has_delayed_bufalloc : bool
| If True, the iterator was created with the ``delay_bufalloc`` flag,
| and no reset() function was called on it yet.
| has_index : bool
| If True, the iterator was created with either the ``c_index`` or
| the ``f_index`` flag, and the property `index` can be used to
| retrieve it.
| has_multi_index : bool
| If True, the iterator was created with the ``multi_index`` flag,
| and the property `multi_index` can be used to retrieve it.
| index
| When the ``c_index`` or ``f_index`` flag was used, this property
| provides access to the index. Raises a ValueError if accessed
| and ``has_index`` is False.
| iterationneedsapi : bool
| Whether iteration requires access to the Python API, for example
| if one of the operands is an object array.
| iterindex : int
| An index which matches the order of iteration.
| itersize : int
| Size of the iterator.
| itviews
| Structured view(s) of `operands` in memory, matching the reordered
| and optimized iterator access pattern. Valid only before the iterator
| is closed.
| multi_index
| When the ``multi_index`` flag was used, this property
| provides access to the index. Raises a ValueError if accessed
| accessed and ``has_multi_index`` is False.
| ndim : int
| The dimensions of the iterator.
| nop : int
| The number of iterator operands.
| operands : tuple of operand(s)
| The array(s) to be iterated over. Valid only before the iterator is
| closed.
| shape : tuple of ints
| Shape tuple, the shape of the iterator.
| value
| Value of ``operands`` at current iteration. Normally, this is a
| tuple of array scalars, but if the flag ``external_loop`` is used,
| it is a tuple of one dimensional arrays.
|
| Notes
| -----
| `nditer` supersedes `flatiter`. The iterator implementation behind
| `nditer` is also exposed by the NumPy C API.
|
| The Python exposure supplies two iteration interfaces, one which follows
| the Python iterator protocol, and another which mirrors the C-style
| do-while pattern. The native Python approach is better in most cases, but
| if you need the coordinates or index of an iterator, use the C-style pattern.
|
| Examples
| --------
| Here is how we might write an ``iter_add`` function, using the
| Python iterator protocol:
|
| >>> import numpy as np
|
| >>> def iter_add_py(x, y, out=None):
| ... addop = np.add
| ... it = np.nditer([x, y, out], [],
| ... [['readonly'], ['readonly'], ['writeonly','allocate']])
| ... with it:
| ... for (a, b, c) in it:
| ... addop(a, b, out=c)
| ... return it.operands[2]
|
| Here is the same function, but following the C-style pattern:
|
| >>> def iter_add(x, y, out=None):
| ... addop = np.add
| ... it = np.nditer([x, y, out], [],
| ... [['readonly'], ['readonly'], ['writeonly','allocate']])
| ... with it:
| ... while not it.finished:
| ... addop(it[0], it[1], out=it[2])
| ... it.iternext()
| ... return it.operands[2]
|
| Here is an example outer product function:
|
| >>> def outer_it(x, y, out=None):
| ... mulop = np.multiply
| ... it = np.nditer([x, y, out], ['external_loop'],
| ... [['readonly'], ['readonly'], ['writeonly', 'allocate']],
| ... op_axes=[list(range(x.ndim)) + [-1] * y.ndim,
| ... [-1] * x.ndim + list(range(y.ndim)),
| ... None])
| ... with it:
| ... for (a, b, c) in it:
| ... mulop(a, b, out=c)
| ... return it.operands[2]
|
| >>> a = np.arange(2)+1
| >>> b = np.arange(3)+1
| >>> outer_it(a,b)
| array([[1, 2, 3],
| [2, 4, 6]])
|
| Here is an example function which operates like a "lambda" ufunc:
|
| >>> def luf(lamdaexpr, *args, **kwargs):
| ... '''luf(lambdaexpr, op1, ..., opn, out=None, order='K', casting='safe', buffersize=0)'''
| ... nargs = len(args)
| ... op = (kwargs.get('out',None),) + args
| ... it = np.nditer(op, ['buffered','external_loop'],
| ... [['writeonly','allocate','no_broadcast']] +
| ... [['readonly','nbo','aligned']]*nargs,
| ... order=kwargs.get('order','K'),
| ... casting=kwargs.get('casting','safe'),
| ... buffersize=kwargs.get('buffersize',0))
| ... while not it.finished:
| ... it[0] = lamdaexpr(*it[1:])
| ... it.iternext()
| ... return it.operands[0]
|
| >>> a = np.arange(5)
| >>> b = np.ones(5)
| >>> luf(lambda i,j:i*i + j/2, a, b)
| array([ 0.5, 1.5, 4.5, 9.5, 16.5])
|
| If operand flags ``"writeonly"`` or ``"readwrite"`` are used the
| operands may be views into the original data with the
| `WRITEBACKIFCOPY` flag. In this case `nditer` must be used as a
| context manager or the `nditer.close` method must be called before
| using the result. The temporary data will be written back to the
| original data when the :meth:`~object.__exit__` function is called
| but not before:
|
| >>> a = np.arange(6, dtype='i4')[::-2]
| >>> with np.nditer(a, [],
| ... [['writeonly', 'updateifcopy']],
| ... casting='unsafe',
| ... op_dtypes=[np.dtype('f4')]) as i:
| ... x = i.operands[0]
| ... x[:] = [-1, -2, -3]
| ... # a still unchanged here
| >>> a, x
| (array([-1, -2, -3], dtype=int32), array([-1., -2., -3.], dtype=float32))
|
| It is important to note that once the iterator is exited, dangling
| references (like `x` in the example) may or may not share data with
| the original data `a`. If writeback semantics were active, i.e. if
| `x.base.flags.writebackifcopy` is `True`, then exiting the iterator
| will sever the connection between `x` and `a`, writing to `x` will
| no longer write to `a`. If writeback semantics are not active, then
| `x.data` will still point at some part of `a.data`, and writing to
| one will affect the other.
|
| Context management and the `close` method appeared in version 1.15.0.
|
| Methods defined here:
|
| __copy__(...)
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __enter__(...)
|
| __exit__(...)
|
| __getitem__(self, key, /)
| Return self[key].
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __len__(self, /)
| Return len(self).
|
| __next__(self, /)
| Implement next(self).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| close(...)
| close()
|
| Resolve all writeback semantics in writeable operands.
|
| .. versionadded:: 1.15.0
|
| See Also
| --------
|
| :ref:`nditer-context-manager`
|
| copy(...)
| copy()
|
| Get a copy of the iterator in its current state.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(10)
| >>> y = x + 1
| >>> it = np.nditer([x, y])
| >>> next(it)
| (array(0), array(1))
| >>> it2 = it.copy()
| >>> next(it2)
| (array(1), array(2))
|
| debug_print(...)
| debug_print()
|
| Print the current state of the `nditer` instance and debug info to stdout.
|
| enable_external_loop(...)
| enable_external_loop()
|
| When the "external_loop" was not used during construction, but
| is desired, this modifies the iterator to behave as if the flag
| was specified.
|
| iternext(...)
| iternext()
|
| Check whether iterations are left, and perform a single internal iteration
| without returning the result. Used in the C-style pattern do-while
| pattern. For an example, see `nditer`.
|
| Returns
| -------
| iternext : bool
| Whether or not there are iterations left.
|
| remove_axis(...)
| remove_axis(i, /)
|
| Removes axis `i` from the iterator. Requires that the flag "multi_index"
| be enabled.
|
| remove_multi_index(...)
| remove_multi_index()
|
| When the "multi_index" flag was specified, this removes it, allowing
| the internal iteration structure to be optimized further.
|
| reset(...)
| reset()
|
| Reset the iterator to its initial state.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| dtypes
|
| finished
|
| has_delayed_bufalloc
|
| has_index
|
| has_multi_index
|
| index
|
| iterationneedsapi
|
| iterindex
|
| iterrange
|
| itersize
|
| itviews
|
| multi_index
|
| ndim
|
| nop
|
| operands
| operands[`Slice`]
|
| The array(s) to be iterated over. Valid only before the iterator is closed.
|
| shape
|
| value
class number(generic)
| Abstract base class of all numeric scalar types.
|
| Method resolution order:
| number
| generic
| builtins.object
|
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
class object_(generic)
| Any Python object.
|
| :Character code: ``'O'``
|
| Method resolution order:
| object_
| generic
| builtins.object
|
| Methods defined here:
|
| __add__(self, value, /)
| Return self+value.
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __call__(self, /, *args, **kwargs)
| Call self as a function.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __delattr__(self, name, /)
| Implement delattr(self, name).
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __release_buffer__(self, buffer, /)
| Release the buffer object that exposes the underlying memory of the object.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setattr__(self, name, value, /)
| Implement setattr(self, name, value).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class poly1d(builtins.object)
| poly1d(c_or_r, r=False, variable=None)
|
| A one-dimensional polynomial class.
|
| .. note::
| This forms part of the old polynomial API. Since version 1.4, the
| new polynomial API defined in `numpy.polynomial` is preferred.
| A summary of the differences can be found in the
| :doc:`transition guide </reference/routines.polynomials>`.
|
| A convenience class, used to encapsulate "natural" operations on
| polynomials so that said operations may take on their customary
| form in code (see Examples).
|
| Parameters
| ----------
| c_or_r : array_like
| The polynomial's coefficients, in decreasing powers, or if
| the value of the second parameter is True, the polynomial's
| roots (values where the polynomial evaluates to 0). For example,
| ``poly1d([1, 2, 3])`` returns an object that represents
| :math:`x^2 + 2x + 3`, whereas ``poly1d([1, 2, 3], True)`` returns
| one that represents :math:`(x-1)(x-2)(x-3) = x^3 - 6x^2 + 11x -6`.
| r : bool, optional
| If True, `c_or_r` specifies the polynomial's roots; the default
| is False.
| variable : str, optional
| Changes the variable used when printing `p` from `x` to `variable`
| (see Examples).
|
| Examples
| --------
| Construct the polynomial :math:`x^2 + 2x + 3`:
|
| >>> import numpy as np
|
| >>> p = np.poly1d([1, 2, 3])
| >>> print(np.poly1d(p))
| 2
| 1 x + 2 x + 3
|
| Evaluate the polynomial at :math:`x = 0.5`:
|
| >>> p(0.5)
| 4.25
|
| Find the roots:
|
| >>> p.r
| array([-1.+1.41421356j, -1.-1.41421356j])
| >>> p(p.r)
| array([ -4.44089210e-16+0.j, -4.44089210e-16+0.j]) # may vary
|
| These numbers in the previous line represent (0, 0) to machine precision
|
| Show the coefficients:
|
| >>> p.c
| array([1, 2, 3])
|
| Display the order (the leading zero-coefficients are removed):
|
| >>> p.order
| 2
|
| Show the coefficient of the k-th power in the polynomial
| (which is equivalent to ``p.c[-(i+1)]``):
|
| >>> p[1]
| 2
|
| Polynomials can be added, subtracted, multiplied, and divided
| (returns quotient and remainder):
|
| >>> p * p
| poly1d([ 1, 4, 10, 12, 9])
|
| >>> (p**3 + 4) / p
| (poly1d([ 1., 4., 10., 12., 9.]), poly1d([4.]))
|
| ``asarray(p)`` gives the coefficient array, so polynomials can be
| used in all functions that accept arrays:
|
| >>> p**2 # square of polynomial
| poly1d([ 1, 4, 10, 12, 9])
|
| >>> np.square(p) # square of individual coefficients
| array([1, 4, 9])
|
| The variable used in the string representation of `p` can be modified,
| using the `variable` parameter:
|
| >>> p = np.poly1d([1,2,3], variable='z')
| >>> print(p)
| 2
| 1 z + 2 z + 3
|
| Construct a polynomial from its roots:
|
| >>> np.poly1d([1, 2], True)
| poly1d([ 1., -3., 2.])
|
| This is the same polynomial as obtained by:
|
| >>> np.poly1d([1, -1]) * np.poly1d([1, -2])
| poly1d([ 1, -3, 2])
|
| Methods defined here:
|
| __add__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __array__(self, t=None, copy=None) from numpy.lib._polynomial_impl.poly1d
|
| __call__(self, val) from numpy.lib._polynomial_impl.poly1d
| Call self as a function.
|
| __div__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __eq__(self, other) from numpy.lib._polynomial_impl.poly1d
| Return self==value.
|
| __getitem__(self, val) from numpy.lib._polynomial_impl.poly1d
|
| __init__(self, c_or_r, r=False, variable=None) from numpy.lib._polynomial_impl.poly1d
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self) from numpy.lib._polynomial_impl.poly1d
|
| __len__(self) from numpy.lib._polynomial_impl.poly1d
|
| __mul__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __ne__(self, other) from numpy.lib._polynomial_impl.poly1d
| Return self!=value.
|
| __neg__(self) from numpy.lib._polynomial_impl.poly1d
|
| __pos__(self) from numpy.lib._polynomial_impl.poly1d
|
| __pow__(self, val) from numpy.lib._polynomial_impl.poly1d
|
| __radd__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __rdiv__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __repr__(self) from numpy.lib._polynomial_impl.poly1d
| Return repr(self).
|
| __rmul__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __rsub__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __rtruediv__ = __rdiv__(self, other)
|
| __setitem__(self, key, val) from numpy.lib._polynomial_impl.poly1d
|
| __str__(self) from numpy.lib._polynomial_impl.poly1d
| Return str(self).
|
| __sub__(self, other) from numpy.lib._polynomial_impl.poly1d
|
| __truediv__ = __div__(self, other)
|
| deriv(self, m=1) from numpy.lib._polynomial_impl.poly1d
| Return a derivative of this polynomial.
|
| Refer to `polyder` for full documentation.
|
| See Also
| --------
| polyder : equivalent function
|
| integ(self, m=1, k=0) from numpy.lib._polynomial_impl.poly1d
| Return an antiderivative (indefinite integral) of this polynomial.
|
| Refer to `polyint` for full documentation.
|
| See Also
| --------
| polyint : equivalent function
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| o
| The order or degree of the polynomial
|
| order
| The order or degree of the polynomial
|
| r
| The roots of the polynomial, where self(x) == 0
|
| roots
| The roots of the polynomial, where self(x) == 0
|
| variable
| The name of the polynomial variable
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| c
| The polynomial coefficients
|
| coef
| The polynomial coefficients
|
| coefficients
| The polynomial coefficients
|
| coeffs
| The polynomial coefficients
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
class recarray(numpy.ndarray)
| recarray(shape, dtype=None, buf=None, offset=0, strides=None, formats=None, names=None, titles=None, byteorder=None, aligned=False, order='C')
|
| Construct an ndarray that allows field access using attributes.
|
| Arrays may have a data-types containing fields, analogous
| to columns in a spread sheet. An example is ``[(x, int), (y, float)]``,
| where each entry in the array is a pair of ``(int, float)``. Normally,
| these attributes are accessed using dictionary lookups such as ``arr['x']``
| and ``arr['y']``. Record arrays allow the fields to be accessed as members
| of the array, using ``arr.x`` and ``arr.y``.
|
| Parameters
| ----------
| shape : tuple
| Shape of output array.
| dtype : data-type, optional
| The desired data-type. By default, the data-type is determined
| from `formats`, `names`, `titles`, `aligned` and `byteorder`.
| formats : list of data-types, optional
| A list containing the data-types for the different columns, e.g.
| ``['i4', 'f8', 'i4']``. `formats` does *not* support the new
| convention of using types directly, i.e. ``(int, float, int)``.
| Note that `formats` must be a list, not a tuple.
| Given that `formats` is somewhat limited, we recommend specifying
| `dtype` instead.
| names : tuple of str, optional
| The name of each column, e.g. ``('x', 'y', 'z')``.
| buf : buffer, optional
| By default, a new array is created of the given shape and data-type.
| If `buf` is specified and is an object exposing the buffer interface,
| the array will use the memory from the existing buffer. In this case,
| the `offset` and `strides` keywords are available.
|
| Other Parameters
| ----------------
| titles : tuple of str, optional
| Aliases for column names. For example, if `names` were
| ``('x', 'y', 'z')`` and `titles` is
| ``('x_coordinate', 'y_coordinate', 'z_coordinate')``, then
| ``arr['x']`` is equivalent to both ``arr.x`` and ``arr.x_coordinate``.
| byteorder : {'<', '>', '='}, optional
| Byte-order for all fields.
| aligned : bool, optional
| Align the fields in memory as the C-compiler would.
| strides : tuple of ints, optional
| Buffer (`buf`) is interpreted according to these strides (strides
| define how many bytes each array element, row, column, etc.
| occupy in memory).
| offset : int, optional
| Start reading buffer (`buf`) from this offset onwards.
| order : {'C', 'F'}, optional
| Row-major (C-style) or column-major (Fortran-style) order.
|
| Returns
| -------
| rec : recarray
| Empty array of the given shape and type.
|
| See Also
| --------
| numpy.rec.fromrecords : Construct a record array from data.
| numpy.record : fundamental data-type for `recarray`.
| numpy.rec.format_parser : determine data-type from formats, names, titles.
|
| Notes
| -----
| This constructor can be compared to ``empty``: it creates a new record
| array but does not fill it with data. To create a record array from data,
| use one of the following methods:
|
| 1. Create a standard ndarray and convert it to a record array,
| using ``arr.view(np.recarray)``
| 2. Use the `buf` keyword.
| 3. Use `np.rec.fromrecords`.
|
| Examples
| --------
| Create an array with two fields, ``x`` and ``y``:
|
| >>> import numpy as np
| >>> x = np.array([(1.0, 2), (3.0, 4)], dtype=[('x', '<f8'), ('y', '<i8')])
| >>> x
| array([(1., 2), (3., 4)], dtype=[('x', '<f8'), ('y', '<i8')])
|
| >>> x['x']
| array([1., 3.])
|
| View the array as a record array:
|
| >>> x = x.view(np.recarray)
|
| >>> x.x
| array([1., 3.])
|
| >>> x.y
| array([2, 4])
|
| Create a new, empty record array:
|
| >>> np.recarray((2,),
| ... dtype=[('x', int), ('y', float), ('z', int)]) #doctest: +SKIP
| rec.array([(-1073741821, 1.2249118382103472e-301, 24547520),
| (3471280, 1.2134086255804012e-316, 0)],
| dtype=[('x', '<i4'), ('y', '<f8'), ('z', '<i4')])
|
| Method resolution order:
| recarray
| numpy.ndarray
| builtins.object
|
| Methods defined here:
|
| __array_finalize__(self, obj) from numpy._core.records.recarray
| a.__array_finalize__(obj, /)
|
| Present so subclasses can call super. Does nothing.
|
| __getattribute__(self, attr) from numpy._core.records.recarray
| Return getattr(self, name).
|
| __getitem__(self, indx) from numpy._core.records.recarray
| Return self[key].
|
| __repr__(self) from numpy._core.records.recarray
| Return repr(self).
|
| __setattr__(self, attr, val) from numpy._core.records.recarray
| Implement setattr(self, name, value).
|
| field(self, attr, val=None) from numpy._core.records.recarray
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(subtype, shape, dtype=None, buf=None, offset=0, strides=None, formats=None, names=None, titles=None, byteorder=None, aligned=False, order='C') from numpy._core.records.recarray
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| ----------------------------------------------------------------------
| Methods inherited from numpy.ndarray:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| a.__array__([dtype], *, copy=None)
|
| For ``dtype`` parameter it returns a new reference to self if
| ``dtype`` is not given or it matches array's data type.
| A new array of provided data type is returned if ``dtype``
| is different from the current data type of the array.
| For ``copy`` parameter it returns a new reference to self if
| ``copy=False`` or ``copy=None`` and copying isn't enforced by ``dtype``
| parameter. The method returns a new array for ``copy=True``, regardless of
| ``dtype`` parameter.
|
| A more detailed explanation of the ``__array__`` interface
| can be found in :ref:`dunder_array.interface`.
|
| __array_function__(...)
|
| __array_namespace__(...)
|
| __array_ufunc__(...)
|
| __array_wrap__(...)
| a.__array_wrap__(array[, context], /)
|
| Returns a view of `array` with the same type as self.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __complex__(...)
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __copy__(...)
| a.__copy__()
|
| Used if :func:`copy.copy` is called on an array. Returns a copy of the array.
|
| Equivalent to ``a.copy(order='K')``.
|
| __deepcopy__(...)
| a.__deepcopy__(memo, /)
|
| Used if :func:`copy.deepcopy` is called on an array.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __dlpack__(...)
| a.__dlpack__(*, stream=None, max_version=None, dl_device=None, copy=None)
|
| DLPack Protocol: Part of the Array API.
|
| __dlpack_device__(...)
| a.__dlpack_device__()
|
| DLPack Protocol: Part of the Array API.
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| Default object formatter.
|
| Return str(self) if format_spec is empty. Raise TypeError otherwise.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Return self+=value.
|
| __iand__(self, value, /)
| Return self&=value.
|
| __ifloordiv__(self, value, /)
| Return self//=value.
|
| __ilshift__(self, value, /)
| Return self<<=value.
|
| __imatmul__(self, value, /)
| Return self@=value.
|
| __imod__(self, value, /)
| Return self%=value.
|
| __imul__(self, value, /)
| Return self*=value.
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __ior__(self, value, /)
| Return self|=value.
|
| __ipow__(self, value, /)
| Return self**=value.
|
| __irshift__(self, value, /)
| Return self>>=value.
|
| __isub__(self, value, /)
| Return self-=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __itruediv__(self, value, /)
| Return self/=value.
|
| __ixor__(self, value, /)
| Return self^=value.
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __matmul__(self, value, /)
| Return self@value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| a.__reduce__()
|
| For pickling.
|
| __reduce_ex__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmatmul__(self, value, /)
| Return value@self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __setstate__(...)
| a.__setstate__(state, /)
|
| For unpickling.
|
| The `state` argument must be a sequence that contains the following
| elements:
|
| Parameters
| ----------
| version : int
| optional pickle version. If omitted defaults to 0.
| shape : tuple
| dtype : data-type
| isFortran : bool
| rawdata : string or list
| a binary string with the data (or a list if 'a' is an object array)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| a.all(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if all elements evaluate to True.
|
| Refer to `numpy.all` for full documentation.
|
| See Also
| --------
| numpy.all : equivalent function
|
| any(...)
| a.any(axis=None, out=None, keepdims=False, *, where=True)
|
| Returns True if any of the elements of `a` evaluate to True.
|
| Refer to `numpy.any` for full documentation.
|
| See Also
| --------
| numpy.any : equivalent function
|
| argmax(...)
| a.argmax(axis=None, out=None, *, keepdims=False)
|
| Return indices of the maximum values along the given axis.
|
| Refer to `numpy.argmax` for full documentation.
|
| See Also
| --------
| numpy.argmax : equivalent function
|
| argmin(...)
| a.argmin(axis=None, out=None, *, keepdims=False)
|
| Return indices of the minimum values along the given axis.
|
| Refer to `numpy.argmin` for detailed documentation.
|
| See Also
| --------
| numpy.argmin : equivalent function
|
| argpartition(...)
| a.argpartition(kth, axis=-1, kind='introselect', order=None)
|
| Returns the indices that would partition this array.
|
| Refer to `numpy.argpartition` for full documentation.
|
| .. versionadded:: 1.8.0
|
| See Also
| --------
| numpy.argpartition : equivalent function
|
| argsort(...)
| a.argsort(axis=-1, kind=None, order=None)
|
| Returns the indices that would sort this array.
|
| Refer to `numpy.argsort` for full documentation.
|
| See Also
| --------
| numpy.argsort : equivalent function
|
| astype(...)
| a.astype(dtype, order='K', casting='unsafe', subok=True, copy=True)
|
| Copy of the array, cast to a specified type.
|
| Parameters
| ----------
| dtype : str or dtype
| Typecode or data-type to which the array is cast.
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout order of the result.
| 'C' means C order, 'F' means Fortran order, 'A'
| means 'F' order if all the arrays are Fortran contiguous,
| 'C' order otherwise, and 'K' means as close to the
| order the array elements appear in memory as possible.
| Default is 'K'.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| Controls what kind of data casting may occur. Defaults to 'unsafe'
| for backwards compatibility.
|
| * 'no' means the data types should not be cast at all.
| * 'equiv' means only byte-order changes are allowed.
| * 'safe' means only casts which can preserve values are allowed.
| * 'same_kind' means only safe casts or casts within a kind,
| like float64 to float32, are allowed.
| * 'unsafe' means any data conversions may be done.
| subok : bool, optional
| If True, then sub-classes will be passed-through (default), otherwise
| the returned array will be forced to be a base-class array.
| copy : bool, optional
| By default, astype always returns a newly allocated array. If this
| is set to false, and the `dtype`, `order`, and `subok`
| requirements are satisfied, the input array is returned instead
| of a copy.
|
| Returns
| -------
| arr_t : ndarray
| Unless `copy` is False and the other conditions for returning the input
| array are satisfied (see description for `copy` input parameter), `arr_t`
| is a new array of the same shape as the input array, with dtype, order
| given by `dtype`, `order`.
|
| Notes
| -----
| .. versionchanged:: 1.17.0
| Casting between a simple data type and a structured one is possible only
| for "unsafe" casting. Casting to multiple fields is allowed, but
| casting from multiple fields is not.
|
| .. versionchanged:: 1.9.0
| Casting from numeric to string types in 'safe' casting mode requires
| that the string dtype length is long enough to store the max
| integer/float value converted.
|
| Raises
| ------
| ComplexWarning
| When casting from complex to float or int. To avoid this,
| one should use ``a.real.astype(t)``.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 2.5])
| >>> x
| array([1. , 2. , 2.5])
|
| >>> x.astype(int)
| array([1, 2, 2])
|
| byteswap(...)
| a.byteswap(inplace=False)
|
| Swap the bytes of the array elements
|
| Toggle between low-endian and big-endian data representation by
| returning a byteswapped array, optionally swapped in-place.
| Arrays of byte-strings are not swapped. The real and imaginary
| parts of a complex number are swapped individually.
|
| Parameters
| ----------
| inplace : bool, optional
| If ``True``, swap bytes in-place, default is ``False``.
|
| Returns
| -------
| out : ndarray
| The byteswapped array. If `inplace` is ``True``, this is
| a view to self.
|
| Examples
| --------
| >>> import numpy as np
| >>> A = np.array([1, 256, 8755], dtype=np.int16)
| >>> list(map(hex, A))
| ['0x1', '0x100', '0x2233']
| >>> A.byteswap(inplace=True)
| array([ 256, 1, 13090], dtype=int16)
| >>> list(map(hex, A))
| ['0x100', '0x1', '0x3322']
|
| Arrays of byte-strings are not swapped
|
| >>> A = np.array([b'ceg', b'fac'])
| >>> A.byteswap()
| array([b'ceg', b'fac'], dtype='|S3')
|
| ``A.view(A.dtype.newbyteorder()).byteswap()`` produces an array with
| the same values but different representation in memory
|
| >>> A = np.array([1, 2, 3])
| >>> A.view(np.uint8)
| array([1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
| 0, 0], dtype=uint8)
| >>> A.view(A.dtype.newbyteorder()).byteswap(inplace=True)
| array([1, 2, 3])
| >>> A.view(np.uint8)
| array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
| 0, 3], dtype=uint8)
|
| choose(...)
| a.choose(choices, out=None, mode='raise')
|
| Use an index array to construct a new array from a set of choices.
|
| Refer to `numpy.choose` for full documentation.
|
| See Also
| --------
| numpy.choose : equivalent function
|
| clip(...)
| a.clip(min=None, max=None, out=None, **kwargs)
|
| Return an array whose values are limited to ``[min, max]``.
| One of max or min must be given.
|
| Refer to `numpy.clip` for full documentation.
|
| See Also
| --------
| numpy.clip : equivalent function
|
| compress(...)
| a.compress(condition, axis=None, out=None)
|
| Return selected slices of this array along given axis.
|
| Refer to `numpy.compress` for full documentation.
|
| See Also
| --------
| numpy.compress : equivalent function
|
| conj(...)
| a.conj()
|
| Complex-conjugate all elements.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| conjugate(...)
| a.conjugate()
|
| Return the complex conjugate, element-wise.
|
| Refer to `numpy.conjugate` for full documentation.
|
| See Also
| --------
| numpy.conjugate : equivalent function
|
| copy(...)
| a.copy(order='C')
|
| Return a copy of the array.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| Controls the memory layout of the copy. 'C' means C-order,
| 'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
| 'C' otherwise. 'K' means match the layout of `a` as closely
| as possible. (Note that this function and :func:`numpy.copy` are very
| similar but have different default values for their order=
| arguments, and this function always passes sub-classes through.)
|
| See also
| --------
| numpy.copy : Similar function with different default behavior
| numpy.copyto
|
| Notes
| -----
| This function is the preferred method for creating an array copy. The
| function :func:`numpy.copy` is similar, but it defaults to using order 'K',
| and will not pass sub-classes through by default.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[1,2,3],[4,5,6]], order='F')
|
| >>> y = x.copy()
|
| >>> x.fill(0)
|
| >>> x
| array([[0, 0, 0],
| [0, 0, 0]])
|
| >>> y
| array([[1, 2, 3],
| [4, 5, 6]])
|
| >>> y.flags['C_CONTIGUOUS']
| True
|
| For arrays containing Python objects (e.g. dtype=object),
| the copy is a shallow one. The new array will contain the
| same object which may lead to surprises if that object can
| be modified (is mutable):
|
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> b = a.copy()
| >>> b[2][0] = 10
| >>> a
| array([1, 'm', list([10, 3, 4])], dtype=object)
|
| To ensure all elements within an ``object`` array are copied,
| use `copy.deepcopy`:
|
| >>> import copy
| >>> a = np.array([1, 'm', [2, 3, 4]], dtype=object)
| >>> c = copy.deepcopy(a)
| >>> c[2][0] = 10
| >>> c
| array([1, 'm', list([10, 3, 4])], dtype=object)
| >>> a
| array([1, 'm', list([2, 3, 4])], dtype=object)
|
| cumprod(...)
| a.cumprod(axis=None, dtype=None, out=None)
|
| Return the cumulative product of the elements along the given axis.
|
| Refer to `numpy.cumprod` for full documentation.
|
| See Also
| --------
| numpy.cumprod : equivalent function
|
| cumsum(...)
| a.cumsum(axis=None, dtype=None, out=None)
|
| Return the cumulative sum of the elements along the given axis.
|
| Refer to `numpy.cumsum` for full documentation.
|
| See Also
| --------
| numpy.cumsum : equivalent function
|
| diagonal(...)
| a.diagonal(offset=0, axis1=0, axis2=1)
|
| Return specified diagonals. In NumPy 1.9 the returned array is a
| read-only view instead of a copy as in previous NumPy versions. In
| a future version the read-only restriction will be removed.
|
| Refer to :func:`numpy.diagonal` for full documentation.
|
| See Also
| --------
| numpy.diagonal : equivalent function
|
| dot(...)
|
| dump(...)
| a.dump(file)
|
| Dump a pickle of the array to the specified file.
| The array can be read back with pickle.load or numpy.load.
|
| Parameters
| ----------
| file : str or Path
| A string naming the dump file.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| dumps(...)
| a.dumps()
|
| Returns the pickle of the array as a string.
| pickle.loads will convert the string back to an array.
|
| Parameters
| ----------
| None
|
| fill(...)
| a.fill(value)
|
| Fill the array with a scalar value.
|
| Parameters
| ----------
| value : scalar
| All elements of `a` will be assigned this value.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([1, 2])
| >>> a.fill(0)
| >>> a
| array([0, 0])
| >>> a = np.empty(2)
| >>> a.fill(1)
| >>> a
| array([1., 1.])
|
| Fill expects a scalar value and always behaves the same as assigning
| to a single array element. The following is a rare example where this
| distinction is important:
|
| >>> a = np.array([None, None], dtype=object)
| >>> a[0] = np.array(3)
| >>> a
| array([array(3), None], dtype=object)
| >>> a.fill(np.array(3))
| >>> a
| array([array(3), array(3)], dtype=object)
|
| Where other forms of assignments will unpack the array being assigned:
|
| >>> a[...] = np.array(3)
| >>> a
| array([3, 3], dtype=object)
|
| flatten(...)
| a.flatten(order='C')
|
| Return a copy of the array collapsed into one dimension.
|
| Parameters
| ----------
| order : {'C', 'F', 'A', 'K'}, optional
| 'C' means to flatten in row-major (C-style) order.
| 'F' means to flatten in column-major (Fortran-
| style) order. 'A' means to flatten in column-major
| order if `a` is Fortran *contiguous* in memory,
| row-major order otherwise. 'K' means to flatten
| `a` in the order the elements occur in memory.
| The default is 'C'.
|
| Returns
| -------
| y : ndarray
| A copy of the input array, flattened to one dimension.
|
| See Also
| --------
| ravel : Return a flattened array.
| flat : A 1-D flat iterator over the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,2], [3,4]])
| >>> a.flatten()
| array([1, 2, 3, 4])
| >>> a.flatten('F')
| array([1, 3, 2, 4])
|
| getfield(...)
| a.getfield(dtype, offset=0)
|
| Returns a field of the given array as a certain type.
|
| A field is a view of the array data with a given data-type. The values in
| the view are determined by the given type and the offset into the current
| array in bytes. The offset needs to be such that the view dtype fits in the
| array dtype; for example an array of dtype complex128 has 16-byte elements.
| If taking a view with a 32-bit integer (4 bytes), the offset needs to be
| between 0 and 12 bytes.
|
| Parameters
| ----------
| dtype : str or dtype
| The data type of the view. The dtype size of the view can not be larger
| than that of the array itself.
| offset : int
| Number of bytes to skip before beginning the element view.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.diag([1.+1.j]*2)
| >>> x[1, 1] = 2 + 4.j
| >>> x
| array([[1.+1.j, 0.+0.j],
| [0.+0.j, 2.+4.j]])
| >>> x.getfield(np.float64)
| array([[1., 0.],
| [0., 2.]])
|
| By choosing an offset of 8 bytes we can select the complex part of the
| array for our view:
|
| >>> x.getfield(np.float64, offset=8)
| array([[1., 0.],
| [0., 4.]])
|
| item(...)
| a.item(*args)
|
| Copy an element of an array to a standard Python scalar and return it.
|
| Parameters
| ----------
| \*args : Arguments (variable number and type)
|
| * none: in this case, the method only works for arrays
| with one element (`a.size == 1`), which element is
| copied into a standard Python scalar object and returned.
|
| * int_type: this argument is interpreted as a flat index into
| the array, specifying which element to copy and return.
|
| * tuple of int_types: functions as does a single int_type argument,
| except that the argument is interpreted as an nd-index into the
| array.
|
| Returns
| -------
| z : Standard Python scalar object
| A copy of the specified element of the array as a suitable
| Python scalar
|
| Notes
| -----
| When the data type of `a` is longdouble or clongdouble, item() returns
| a scalar array object because there is no available Python scalar that
| would not lose information. Void arrays return a buffer object for item(),
| unless fields are defined, in which case a tuple is returned.
|
| `item` is very similar to a[args], except, instead of an array scalar,
| a standard Python scalar is returned. This can be useful for speeding up
| access to elements of the array and doing arithmetic on elements of the
| array using Python's optimized math.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.random.seed(123)
| >>> x = np.random.randint(9, size=(3, 3))
| >>> x
| array([[2, 2, 6],
| [1, 3, 6],
| [1, 0, 1]])
| >>> x.item(3)
| 1
| >>> x.item(7)
| 0
| >>> x.item((0, 1))
| 2
| >>> x.item((2, 2))
| 1
|
| For an array with object dtype, elements are returned as-is.
|
| >>> a = np.array([np.int64(1)], dtype=object)
| >>> a.item() #return np.int64
| np.int64(1)
|
| max(...)
| a.max(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the maximum along a given axis.
|
| Refer to `numpy.amax` for full documentation.
|
| See Also
| --------
| numpy.amax : equivalent function
|
| mean(...)
| a.mean(axis=None, dtype=None, out=None, keepdims=False, *, where=True)
|
| Returns the average of the array elements along given axis.
|
| Refer to `numpy.mean` for full documentation.
|
| See Also
| --------
| numpy.mean : equivalent function
|
| min(...)
| a.min(axis=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Return the minimum along a given axis.
|
| Refer to `numpy.amin` for full documentation.
|
| See Also
| --------
| numpy.amin : equivalent function
|
| nonzero(...)
| a.nonzero()
|
| Return the indices of the elements that are non-zero.
|
| Refer to `numpy.nonzero` for full documentation.
|
| See Also
| --------
| numpy.nonzero : equivalent function
|
| partition(...)
| a.partition(kth, axis=-1, kind='introselect', order=None)
|
| Partially sorts the elements in the array in such a way that the value of
| the element in k-th position is in the position it would be in a sorted
| array. In the output array, all elements smaller than the k-th element
| are located to the left of this element and all equal or greater are
| located to its right. The ordering of the elements in the two partitions
| on the either side of the k-th element in the output array is undefined.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| kth : int or sequence of ints
| Element index to partition by. The kth element value will be in its
| final sorted position and all smaller elements will be moved before it
| and all equal or greater elements behind it.
| The order of all elements in the partitions is undefined.
| If provided with a sequence of kth it will partition all elements
| indexed by kth of them into their sorted position at once.
|
| .. deprecated:: 1.22.0
| Passing booleans as index is deprecated.
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'introselect'}, optional
| Selection algorithm. Default is 'introselect'.
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need to be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.partition : Return a partitioned copy of an array.
| argpartition : Indirect partition.
| sort : Full sort.
|
| Notes
| -----
| See ``np.partition`` for notes on the different algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([3, 4, 2, 1])
| >>> a.partition(3)
| >>> a
| array([2, 1, 3, 4]) # may vary
|
| >>> a.partition((1, 3))
| >>> a
| array([1, 2, 3, 4])
|
| prod(...)
| a.prod(axis=None, dtype=None, out=None, keepdims=False,
| initial=1, where=True)
|
| Return the product of the array elements over the given axis
|
| Refer to `numpy.prod` for full documentation.
|
| See Also
| --------
| numpy.prod : equivalent function
|
| put(...)
| a.put(indices, values, mode='raise')
|
| Set ``a.flat[n] = values[n]`` for all `n` in indices.
|
| Refer to `numpy.put` for full documentation.
|
| See Also
| --------
| numpy.put : equivalent function
|
| ravel(...)
| a.ravel([order])
|
| Return a flattened array.
|
| Refer to `numpy.ravel` for full documentation.
|
| See Also
| --------
| numpy.ravel : equivalent function
|
| ndarray.flat : a flat iterator on the array.
|
| repeat(...)
| a.repeat(repeats, axis=None)
|
| Repeat elements of an array.
|
| Refer to `numpy.repeat` for full documentation.
|
| See Also
| --------
| numpy.repeat : equivalent function
|
| reshape(...)
| a.reshape(shape, /, *, order='C', copy=None)
|
| Returns an array containing the same data with a new shape.
|
| Refer to `numpy.reshape` for full documentation.
|
| See Also
| --------
| numpy.reshape : equivalent function
|
| Notes
| -----
| Unlike the free function `numpy.reshape`, this method on `ndarray` allows
| the elements of the shape parameter to be passed in as separate arguments.
| For example, ``a.reshape(10, 11)`` is equivalent to
| ``a.reshape((10, 11))``.
|
| resize(...)
| a.resize(new_shape, refcheck=True)
|
| Change shape and size of array in-place.
|
| Parameters
| ----------
| new_shape : tuple of ints, or `n` ints
| Shape of resized array.
| refcheck : bool, optional
| If False, reference count will not be checked. Default is True.
|
| Returns
| -------
| None
|
| Raises
| ------
| ValueError
| If `a` does not own its own data or references or views to it exist,
| and the data memory must be changed.
| PyPy only: will always raise if the data memory must be changed, since
| there is no reliable way to determine if references or views to it
| exist.
|
| SystemError
| If the `order` keyword argument is specified. This behaviour is a
| bug in NumPy.
|
| See Also
| --------
| resize : Return a new array with the specified shape.
|
| Notes
| -----
| This reallocates space for the data area if necessary.
|
| Only contiguous arrays (data elements consecutive in memory) can be
| resized.
|
| The purpose of the reference count check is to make sure you
| do not use this array as a buffer for another Python object and then
| reallocate the memory. However, reference counts can increase in
| other ways so if you are sure that you have not shared the memory
| for this array with another Python object, then you may safely set
| `refcheck` to False.
|
| Examples
| --------
| Shrinking an array: array is flattened (in the order that the data are
| stored in memory), resized, and reshaped:
|
| >>> import numpy as np
|
| >>> a = np.array([[0, 1], [2, 3]], order='C')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [1]])
|
| >>> a = np.array([[0, 1], [2, 3]], order='F')
| >>> a.resize((2, 1))
| >>> a
| array([[0],
| [2]])
|
| Enlarging an array: as above, but missing entries are filled with zeros:
|
| >>> b = np.array([[0, 1], [2, 3]])
| >>> b.resize(2, 3) # new_shape parameter doesn't have to be a tuple
| >>> b
| array([[0, 1, 2],
| [3, 0, 0]])
|
| Referencing an array prevents resizing...
|
| >>> c = a
| >>> a.resize((1, 1))
| Traceback (most recent call last):
| ...
| ValueError: cannot resize an array that references or is referenced ...
|
| Unless `refcheck` is False:
|
| >>> a.resize((1, 1), refcheck=False)
| >>> a
| array([[0]])
| >>> c
| array([[0]])
|
| round(...)
| a.round(decimals=0, out=None)
|
| Return `a` with each element rounded to the given number of decimals.
|
| Refer to `numpy.around` for full documentation.
|
| See Also
| --------
| numpy.around : equivalent function
|
| searchsorted(...)
| a.searchsorted(v, side='left', sorter=None)
|
| Find indices where elements of v should be inserted in a to maintain order.
|
| For full documentation, see `numpy.searchsorted`
|
| See Also
| --------
| numpy.searchsorted : equivalent function
|
| setfield(...)
| a.setfield(val, dtype, offset=0)
|
| Put a value into a specified place in a field defined by a data-type.
|
| Place `val` into `a`'s field defined by `dtype` and beginning `offset`
| bytes into the field.
|
| Parameters
| ----------
| val : object
| Value to be placed in field.
| dtype : dtype object
| Data-type of the field in which to place `val`.
| offset : int, optional
| The number of bytes into the field at which to place `val`.
|
| Returns
| -------
| None
|
| See Also
| --------
| getfield
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.eye(3)
| >>> x.getfield(np.float64)
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
| >>> x.setfield(3, np.int32)
| >>> x.getfield(np.int32)
| array([[3, 3, 3],
| [3, 3, 3],
| [3, 3, 3]], dtype=int32)
| >>> x
| array([[1.0e+000, 1.5e-323, 1.5e-323],
| [1.5e-323, 1.0e+000, 1.5e-323],
| [1.5e-323, 1.5e-323, 1.0e+000]])
| >>> x.setfield(np.eye(3), np.int32)
| >>> x
| array([[1., 0., 0.],
| [0., 1., 0.],
| [0., 0., 1.]])
|
| setflags(...)
| a.setflags(write=None, align=None, uic=None)
|
| Set array flags WRITEABLE, ALIGNED, WRITEBACKIFCOPY,
| respectively.
|
| These Boolean-valued flags affect how numpy interprets the memory
| area used by `a` (see Notes below). The ALIGNED flag can only
| be set to True if the data is actually aligned according to the type.
| The WRITEBACKIFCOPY flag can never be set
| to True. The flag WRITEABLE can only be set to True if the array owns its
| own memory, or the ultimate owner of the memory exposes a writeable buffer
| interface, or is a string. (The exception for string is made so that
| unpickling can be done without copying memory.)
|
| Parameters
| ----------
| write : bool, optional
| Describes whether or not `a` can be written to.
| align : bool, optional
| Describes whether or not `a` is aligned properly for its type.
| uic : bool, optional
| Describes whether or not `a` is a copy of another "base" array.
|
| Notes
| -----
| Array flags provide information about how the memory area used
| for the array is to be interpreted. There are 7 Boolean flags
| in use, only three of which can be changed by the user:
| WRITEBACKIFCOPY, WRITEABLE, and ALIGNED.
|
| WRITEABLE (W) the data area can be written to;
|
| ALIGNED (A) the data and strides are aligned appropriately for the hardware
| (as determined by the compiler);
|
| WRITEBACKIFCOPY (X) this array is a copy of some other array (referenced
| by .base). When the C-API function PyArray_ResolveWritebackIfCopy is
| called, the base array will be updated with the contents of this array.
|
| All flags can be accessed using the single (upper case) letter as well
| as the full name.
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.array([[3, 1, 7],
| ... [2, 0, 0],
| ... [8, 5, 9]])
| >>> y
| array([[3, 1, 7],
| [2, 0, 0],
| [8, 5, 9]])
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : True
| ALIGNED : True
| WRITEBACKIFCOPY : False
| >>> y.setflags(write=0, align=0)
| >>> y.flags
| C_CONTIGUOUS : True
| F_CONTIGUOUS : False
| OWNDATA : True
| WRITEABLE : False
| ALIGNED : False
| WRITEBACKIFCOPY : False
| >>> y.setflags(uic=1)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: cannot set WRITEBACKIFCOPY flag to True
|
| sort(...)
| a.sort(axis=-1, kind=None, order=None)
|
| Sort an array in-place. Refer to `numpy.sort` for full documentation.
|
| Parameters
| ----------
| axis : int, optional
| Axis along which to sort. Default is -1, which means sort along the
| last axis.
| kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
| Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
| and 'mergesort' use timsort under the covers and, in general, the
| actual implementation will vary with datatype. The 'mergesort' option
| is retained for backwards compatibility.
|
| .. versionchanged:: 1.15.0
| The 'stable' option was added.
|
| order : str or list of str, optional
| When `a` is an array with fields defined, this argument specifies
| which fields to compare first, second, etc. A single field can
| be specified as a string, and not all fields need be specified,
| but unspecified fields will still be used, in the order in which
| they come up in the dtype, to break ties.
|
| See Also
| --------
| numpy.sort : Return a sorted copy of an array.
| numpy.argsort : Indirect sort.
| numpy.lexsort : Indirect stable sort on multiple keys.
| numpy.searchsorted : Find elements in sorted array.
| numpy.partition: Partial sort.
|
| Notes
| -----
| See `numpy.sort` for notes on the different sorting algorithms.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1,4], [3,1]])
| >>> a.sort(axis=1)
| >>> a
| array([[1, 4],
| [1, 3]])
| >>> a.sort(axis=0)
| >>> a
| array([[1, 3],
| [1, 4]])
|
| Use the `order` keyword to specify a field to use when sorting a
| structured array:
|
| >>> a = np.array([('a', 2), ('c', 1)], dtype=[('x', 'S1'), ('y', int)])
| >>> a.sort(order='y')
| >>> a
| array([(b'c', 1), (b'a', 2)],
| dtype=[('x', 'S1'), ('y', '<i8')])
|
| squeeze(...)
| a.squeeze(axis=None)
|
| Remove axes of length one from `a`.
|
| Refer to `numpy.squeeze` for full documentation.
|
| See Also
| --------
| numpy.squeeze : equivalent function
|
| std(...)
| a.std(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the standard deviation of the array elements along given axis.
|
| Refer to `numpy.std` for full documentation.
|
| See Also
| --------
| numpy.std : equivalent function
|
| sum(...)
| a.sum(axis=None, dtype=None, out=None, keepdims=False, initial=0, where=True)
|
| Return the sum of the array elements over the given axis.
|
| Refer to `numpy.sum` for full documentation.
|
| See Also
| --------
| numpy.sum : equivalent function
|
| swapaxes(...)
| a.swapaxes(axis1, axis2)
|
| Return a view of the array with `axis1` and `axis2` interchanged.
|
| Refer to `numpy.swapaxes` for full documentation.
|
| See Also
| --------
| numpy.swapaxes : equivalent function
|
| take(...)
| a.take(indices, axis=None, out=None, mode='raise')
|
| Return an array formed from the elements of `a` at the given indices.
|
| Refer to `numpy.take` for full documentation.
|
| See Also
| --------
| numpy.take : equivalent function
|
| to_device(...)
|
| tobytes(...)
| a.tobytes(order='C')
|
| Construct Python bytes containing the raw data bytes in the array.
|
| Constructs Python bytes showing a copy of the raw contents of
| data memory. The bytes object is produced in C-order by default.
| This behavior is controlled by the ``order`` parameter.
|
| .. versionadded:: 1.9.0
|
| Parameters
| ----------
| order : {'C', 'F', 'A'}, optional
| Controls the memory layout of the bytes object. 'C' means C-order,
| 'F' means F-order, 'A' (short for *Any*) means 'F' if `a` is
| Fortran contiguous, 'C' otherwise. Default is 'C'.
|
| Returns
| -------
| s : bytes
| Python bytes exhibiting a copy of `a`'s raw data.
|
| See also
| --------
| frombuffer
| Inverse of this operation, construct a 1-dimensional array from Python
| bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([[0, 1], [2, 3]], dtype='<u2')
| >>> x.tobytes()
| b'\x00\x00\x01\x00\x02\x00\x03\x00'
| >>> x.tobytes('C') == x.tobytes()
| True
| >>> x.tobytes('F')
| b'\x00\x00\x02\x00\x01\x00\x03\x00'
|
| tofile(...)
| a.tofile(fid, sep="", format="%s")
|
| Write array to a file as text or binary (default).
|
| Data is always written in 'C' order, independent of the order of `a`.
| The data produced by this method can be recovered using the function
| fromfile().
|
| Parameters
| ----------
| fid : file or str or Path
| An open file object, or a string containing a filename.
|
| .. versionchanged:: 1.17.0
| `pathlib.Path` objects are now accepted.
|
| sep : str
| Separator between array items for text output.
| If "" (empty), a binary file is written, equivalent to
| ``file.write(a.tobytes())``.
| format : str
| Format string for text file output.
| Each entry in the array is formatted to text by first converting
| it to the closest Python type, and then using "format" % item.
|
| Notes
| -----
| This is a convenience function for quick storage of array data.
| Information on endianness and precision is lost, so this method is not a
| good choice for files intended to archive data or transport data between
| machines with different endianness. Some of these problems can be overcome
| by outputting the data as text files, at the expense of speed and file
| size.
|
| When fid is a file object, array contents are directly written to the
| file, bypassing the file object's ``write`` method. As a result, tofile
| cannot be used with files objects supporting compression (e.g., GzipFile)
| or file-like objects that do not support ``fileno()`` (e.g., BytesIO).
|
| tolist(...)
| a.tolist()
|
| Return the array as an ``a.ndim``-levels deep nested list of Python scalars.
|
| Return a copy of the array data as a (nested) Python list.
| Data items are converted to the nearest compatible builtin Python type, via
| the `~numpy.ndarray.item` function.
|
| If ``a.ndim`` is 0, then since the depth of the nested list is 0, it will
| not be a list at all, but a simple Python scalar.
|
| Parameters
| ----------
| none
|
| Returns
| -------
| y : object, or list of object, or list of list of object, or ...
| The possibly nested list of array elements.
|
| Notes
| -----
| The array may be recreated via ``a = np.array(a.tolist())``, although this
| may sometimes lose precision.
|
| Examples
| --------
| For a 1D array, ``a.tolist()`` is almost the same as ``list(a)``,
| except that ``tolist`` changes numpy scalars to Python scalars:
|
| >>> import numpy as np
| >>> a = np.uint32([1, 2])
| >>> a_list = list(a)
| >>> a_list
| [1, 2]
| >>> type(a_list[0])
| <class 'numpy.uint32'>
| >>> a_tolist = a.tolist()
| >>> a_tolist
| [1, 2]
| >>> type(a_tolist[0])
| <class 'int'>
|
| Additionally, for a 2D array, ``tolist`` applies recursively:
|
| >>> a = np.array([[1, 2], [3, 4]])
| >>> list(a)
| [array([1, 2]), array([3, 4])]
| >>> a.tolist()
| [[1, 2], [3, 4]]
|
| The base case for this recursion is a 0D array:
|
| >>> a = np.array(1)
| >>> list(a)
| Traceback (most recent call last):
| ...
| TypeError: iteration over a 0-d array
| >>> a.tolist()
| 1
|
| tostring(...)
| a.tostring(order='C')
|
| A compatibility alias for `~ndarray.tobytes`, with exactly the same
| behavior.
|
| Despite its name, it returns :class:`bytes` not :class:`str`\ s.
|
| .. deprecated:: 1.19.0
|
| trace(...)
| a.trace(offset=0, axis1=0, axis2=1, dtype=None, out=None)
|
| Return the sum along diagonals of the array.
|
| Refer to `numpy.trace` for full documentation.
|
| See Also
| --------
| numpy.trace : equivalent function
|
| transpose(...)
| a.transpose(*axes)
|
| Returns a view of the array with axes transposed.
|
| Refer to `numpy.transpose` for full documentation.
|
| Parameters
| ----------
| axes : None, tuple of ints, or `n` ints
|
| * None or no argument: reverses the order of the axes.
|
| * tuple of ints: `i` in the `j`-th place in the tuple means that the
| array's `i`-th axis becomes the transposed array's `j`-th axis.
|
| * `n` ints: same as an n-tuple of the same ints (this form is
| intended simply as a "convenience" alternative to the tuple form).
|
| Returns
| -------
| p : ndarray
| View of the array with its axes suitably permuted.
|
| See Also
| --------
| transpose : Equivalent function.
| ndarray.T : Array property returning the array transposed.
| ndarray.reshape : Give a new shape to an array without changing its data.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.transpose()
| array([[1, 3],
| [2, 4]])
| >>> a.transpose((1, 0))
| array([[1, 3],
| [2, 4]])
| >>> a.transpose(1, 0)
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.transpose()
| array([1, 2, 3, 4])
|
| var(...)
| a.var(axis=None, dtype=None, out=None, ddof=0, keepdims=False, *, where=True)
|
| Returns the variance of the array elements, along given axis.
|
| Refer to `numpy.var` for full documentation.
|
| See Also
| --------
| numpy.var : equivalent function
|
| view(...)
| a.view([dtype][, type])
|
| New view of array with the same data.
|
| .. note::
| Passing None for ``dtype`` is different from omitting the parameter,
| since the former invokes ``dtype(None)`` which is an alias for
| ``dtype('float64')``.
|
| Parameters
| ----------
| dtype : data-type or ndarray sub-class, optional
| Data-type descriptor of the returned view, e.g., float32 or int16.
| Omitting it results in the view having the same data-type as `a`.
| This argument can also be specified as an ndarray sub-class, which
| then specifies the type of the returned object (this is equivalent to
| setting the ``type`` parameter).
| type : Python type, optional
| Type of the returned view, e.g., ndarray or matrix. Again, omission
| of the parameter results in type preservation.
|
| Notes
| -----
| ``a.view()`` is used two different ways:
|
| ``a.view(some_dtype)`` or ``a.view(dtype=some_dtype)`` constructs a view
| of the array's memory with a different data-type. This can cause a
| reinterpretation of the bytes of memory.
|
| ``a.view(ndarray_subclass)`` or ``a.view(type=ndarray_subclass)`` just
| returns an instance of `ndarray_subclass` that looks at the same array
| (same shape, dtype, etc.) This does not cause a reinterpretation of the
| memory.
|
| For ``a.view(some_dtype)``, if ``some_dtype`` has a different number of
| bytes per entry than the previous dtype (for example, converting a regular
| array to a structured array), then the last axis of ``a`` must be
| contiguous. This axis will be resized in the result.
|
| .. versionchanged:: 1.23.0
| Only the last axis needs to be contiguous. Previously, the entire array
| had to be C-contiguous.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([(-1, 2)], dtype=[('a', np.int8), ('b', np.int8)])
|
| Viewing array data using a different type and dtype:
|
| >>> nonneg = np.dtype([("a", np.uint8), ("b", np.uint8)])
| >>> y = x.view(dtype=nonneg, type=np.recarray)
| >>> x["a"]
| array([-1], dtype=int8)
| >>> y.a
| array([255], dtype=uint8)
|
| Creating a view on a structured array so it can be used in calculations
|
| >>> x = np.array([(1, 2),(3,4)], dtype=[('a', np.int8), ('b', np.int8)])
| >>> xv = x.view(dtype=np.int8).reshape(-1,2)
| >>> xv
| array([[1, 2],
| [3, 4]], dtype=int8)
| >>> xv.mean(0)
| array([2., 3.])
|
| Making changes to the view changes the underlying array
|
| >>> xv[0,1] = 20
| >>> x
| array([(1, 20), (3, 4)], dtype=[('a', 'i1'), ('b', 'i1')])
|
| Using a view to convert an array to a recarray:
|
| >>> z = x.view(np.recarray)
| >>> z.a
| array([1, 3], dtype=int8)
|
| Views share data:
|
| >>> x[0] = (9, 10)
| >>> z[0]
| np.record((9, 10), dtype=[('a', 'i1'), ('b', 'i1')])
|
| Views that change the dtype size (bytes per entry) should normally be
| avoided on arrays defined by slices, transposes, fortran-ordering, etc.:
|
| >>> x = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.int16)
| >>> y = x[:, ::2]
| >>> y
| array([[1, 3],
| [4, 6]], dtype=int16)
| >>> y.view(dtype=[('width', np.int16), ('length', np.int16)])
| Traceback (most recent call last):
| ...
| ValueError: To change to a dtype of a different size, the last axis must be contiguous
| >>> z = y.copy()
| >>> z.view(dtype=[('width', np.int16), ('length', np.int16)])
| array([[(1, 3)],
| [(4, 6)]], dtype=[('width', '<i2'), ('length', '<i2')])
|
| However, views that change dtype are totally fine for arrays with a
| contiguous last axis, even if the rest of the axes are not C-contiguous:
|
| >>> x = np.arange(2 * 3 * 4, dtype=np.int8).reshape(2, 3, 4)
| >>> x.transpose(1, 0, 2).view(np.int16)
| array([[[ 256, 770],
| [3340, 3854]],
| <BLANKLINE>
| [[1284, 1798],
| [4368, 4882]],
| <BLANKLINE>
| [[2312, 2826],
| [5396, 5910]]], dtype=int16)
|
| ----------------------------------------------------------------------
| Class methods inherited from numpy.ndarray:
|
| __class_getitem__(...)
| a.__class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.ndarray` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.ndarray` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.ndarray[Any, np.dtype[Any]]
| numpy.ndarray[typing.Any, numpy.dtype[typing.Any]]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
| numpy.typing.NDArray : An ndarray alias :term:`generic <generic type>`
| w.r.t. its `dtype.type <numpy.dtype.type>`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from numpy.ndarray:
|
| T
| View of the transposed array.
|
| Same as ``self.transpose()``.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.T
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.array([1, 2, 3, 4])
| >>> a
| array([1, 2, 3, 4])
| >>> a.T
| array([1, 2, 3, 4])
|
| See Also
| --------
| transpose
|
| __array_interface__
| Array protocol: Python side.
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: C-struct side.
|
| base
| Base object if memory is from some other object.
|
| Examples
| --------
| The base of an array that owns its memory is None:
|
| >>> import numpy as np
| >>> x = np.array([1,2,3,4])
| >>> x.base is None
| True
|
| Slicing creates a view, whose memory is shared with x:
|
| >>> y = x[2:]
| >>> y.base is x
| True
|
| ctypes
| An object to simplify the interaction of the array with the ctypes
| module.
|
| This attribute creates an object that makes it easier to use arrays
| when calling shared libraries with the ctypes module. The returned
| object has, among others, data, shape, and strides attributes (see
| Notes below) which themselves return ctypes objects that can be used
| as arguments to a shared library.
|
| Parameters
| ----------
| None
|
| Returns
| -------
| c : Python object
| Possessing attributes data, shape, strides, etc.
|
| See Also
| --------
| numpy.ctypeslib
|
| Notes
| -----
| Below are the public attributes of this object which were documented
| in "Guide to NumPy" (we have omitted undocumented public attributes,
| as well as documented private attributes):
|
| .. autoattribute:: numpy._core._internal._ctypes.data
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.shape
| :noindex:
|
| .. autoattribute:: numpy._core._internal._ctypes.strides
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.data_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.shape_as
| :noindex:
|
| .. automethod:: numpy._core._internal._ctypes.strides_as
| :noindex:
|
| If the ctypes module is not available, then the ctypes attribute
| of array objects still returns something useful, but ctypes objects
| are not returned and errors may be raised instead. In particular,
| the object will still have the ``as_parameter`` attribute which will
| return an integer equal to the data attribute.
|
| Examples
| --------
| >>> import numpy as np
| >>> import ctypes
| >>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
| >>> x
| array([[0, 1],
| [2, 3]], dtype=int32)
| >>> x.ctypes.data
| 31962608 # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
| <__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
| c_uint(0)
| >>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
| c_ulong(4294967296)
| >>> x.ctypes.shape
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
| >>> x.ctypes.strides
| <numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary
|
| data
| Python buffer object pointing to the start of the array's data.
|
| device
|
| dtype
| Data-type of the array's elements.
|
| .. warning::
|
| Setting ``arr.dtype`` is discouraged and may be deprecated in the
| future. Setting will replace the ``dtype`` without modifying the
| memory (see also `ndarray.view` and `ndarray.astype`).
|
| Parameters
| ----------
| None
|
| Returns
| -------
| d : numpy dtype object
|
| See Also
| --------
| ndarray.astype : Cast the values contained in the array to a new data-type.
| ndarray.view : Create a view of the same data but a different data-type.
| numpy.dtype
|
| Examples
| --------
| >>> x
| array([[0, 1],
| [2, 3]])
| >>> x.dtype
| dtype('int32')
| >>> type(x.dtype)
| <type 'numpy.dtype'>
|
| flags
| Information about the memory layout of the array.
|
| Attributes
| ----------
| C_CONTIGUOUS (C)
| The data is in a single, C-style contiguous segment.
| F_CONTIGUOUS (F)
| The data is in a single, Fortran-style contiguous segment.
| OWNDATA (O)
| The array owns the memory it uses or borrows it from another object.
| WRITEABLE (W)
| The data area can be written to. Setting this to False locks
| the data, making it read-only. A view (slice, etc.) inherits WRITEABLE
| from its base array at creation time, but a view of a writeable
| array may be subsequently locked while the base array remains writeable.
| (The opposite is not true, in that a view of a locked array may not
| be made writeable. However, currently, locking a base object does not
| lock any views that already reference it, so under that circumstance it
| is possible to alter the contents of a locked array via a previously
| created writeable view onto it.) Attempting to change a non-writeable
| array raises a RuntimeError exception.
| ALIGNED (A)
| The data and all elements are aligned appropriately for the hardware.
| WRITEBACKIFCOPY (X)
| This array is a copy of some other array. The C-API function
| PyArray_ResolveWritebackIfCopy must be called before deallocating
| to the base array will be updated with the contents of this array.
| FNC
| F_CONTIGUOUS and not C_CONTIGUOUS.
| FORC
| F_CONTIGUOUS or C_CONTIGUOUS (one-segment test).
| BEHAVED (B)
| ALIGNED and WRITEABLE.
| CARRAY (CA)
| BEHAVED and C_CONTIGUOUS.
| FARRAY (FA)
| BEHAVED and F_CONTIGUOUS and not C_CONTIGUOUS.
|
| Notes
| -----
| The `flags` object can be accessed dictionary-like (as in ``a.flags['WRITEABLE']``),
| or by using lowercased attribute names (as in ``a.flags.writeable``). Short flag
| names are only supported in dictionary access.
|
| Only the WRITEBACKIFCOPY, WRITEABLE, and ALIGNED flags can be
| changed by the user, via direct assignment to the attribute or dictionary
| entry, or by calling `ndarray.setflags`.
|
| The array flags cannot be set arbitrarily:
|
| - WRITEBACKIFCOPY can only be set ``False``.
| - ALIGNED can only be set ``True`` if the data is truly aligned.
| - WRITEABLE can only be set ``True`` if the array owns its own memory
| or the ultimate owner of the memory exposes a writeable buffer
| interface or is a string.
|
| Arrays can be both C-style and Fortran-style contiguous simultaneously.
| This is clear for 1-dimensional arrays, but can also be true for higher
| dimensional arrays.
|
| Even for contiguous arrays a stride for a given dimension
| ``arr.strides[dim]`` may be *arbitrary* if ``arr.shape[dim] == 1``
| or the array has no elements.
| It does *not* generally hold that ``self.strides[-1] == self.itemsize``
| for C-style contiguous arrays or ``self.strides[0] == self.itemsize`` for
| Fortran-style contiguous arrays is true.
|
| flat
| A 1-D iterator over the array.
|
| This is a `numpy.flatiter` instance, which acts similarly to, but is not
| a subclass of, Python's built-in iterator object.
|
| See Also
| --------
| flatten : Return a copy of the array collapsed into one dimension.
|
| flatiter
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.arange(1, 7).reshape(2, 3)
| >>> x
| array([[1, 2, 3],
| [4, 5, 6]])
| >>> x.flat[3]
| 4
| >>> x.T
| array([[1, 4],
| [2, 5],
| [3, 6]])
| >>> x.T.flat[3]
| 5
| >>> type(x.flat)
| <class 'numpy.flatiter'>
|
| An assignment example:
|
| >>> x.flat = 3; x
| array([[3, 3, 3],
| [3, 3, 3]])
| >>> x.flat[[1,4]] = 1; x
| array([[3, 1, 3],
| [3, 1, 3]])
|
| imag
| The imaginary part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.imag
| array([ 0. , 0.70710678])
| >>> x.imag.dtype
| dtype('float64')
|
| itemset
|
| itemsize
| Length of one array element in bytes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1,2,3], dtype=np.float64)
| >>> x.itemsize
| 8
| >>> x = np.array([1,2,3], dtype=np.complex128)
| >>> x.itemsize
| 16
|
| mT
| View of the matrix transposed array.
|
| The matrix transpose is the transpose of the last two dimensions, even
| if the array is of higher dimension.
|
| .. versionadded:: 2.0
|
| Raises
| ------
| ValueError
| If the array is of dimension less than 2.
|
| Examples
| --------
| >>> import numpy as np
| >>> a = np.array([[1, 2], [3, 4]])
| >>> a
| array([[1, 2],
| [3, 4]])
| >>> a.mT
| array([[1, 3],
| [2, 4]])
|
| >>> a = np.arange(8).reshape((2, 2, 2))
| >>> a
| array([[[0, 1],
| [2, 3]],
| <BLANKLINE>
| [[4, 5],
| [6, 7]]])
| >>> a.mT
| array([[[0, 2],
| [1, 3]],
| <BLANKLINE>
| [[4, 6],
| [5, 7]]])
|
| nbytes
| Total bytes consumed by the elements of the array.
|
| Notes
| -----
| Does not include memory consumed by non-element attributes of the
| array object.
|
| See Also
| --------
| sys.getsizeof
| Memory consumed by the object itself without parents in case view.
| This does include memory consumed by non-element attributes.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3,5,2), dtype=np.complex128)
| >>> x.nbytes
| 480
| >>> np.prod(x.shape) * x.itemsize
| 480
|
| ndim
| Number of array dimensions.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3])
| >>> x.ndim
| 1
| >>> y = np.zeros((2, 3, 4))
| >>> y.ndim
| 3
|
| newbyteorder
|
| ptp
|
| real
| The real part of the array.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.sqrt([1+0j, 0+1j])
| >>> x.real
| array([ 1. , 0.70710678])
| >>> x.real.dtype
| dtype('float64')
|
| See Also
| --------
| numpy.real : equivalent function
|
| shape
| Tuple of array dimensions.
|
| The shape property is usually used to get the current shape of an array,
| but may also be used to reshape the array in-place by assigning a tuple of
| array dimensions to it. As with `numpy.reshape`, one of the new shape
| dimensions can be -1, in which case its value is inferred from the size of
| the array and the remaining dimensions. Reshaping an array in-place will
| fail if a copy is required.
|
| .. warning::
|
| Setting ``arr.shape`` is discouraged and may be deprecated in the
| future. Using `ndarray.reshape` is the preferred approach.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.array([1, 2, 3, 4])
| >>> x.shape
| (4,)
| >>> y = np.zeros((2, 3, 4))
| >>> y.shape
| (2, 3, 4)
| >>> y.shape = (3, 8)
| >>> y
| array([[ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.],
| [ 0., 0., 0., 0., 0., 0., 0., 0.]])
| >>> y.shape = (3, 6)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| ValueError: total size of new array must be unchanged
| >>> np.zeros((4,2))[::2].shape = (-1,)
| Traceback (most recent call last):
| File "<stdin>", line 1, in <module>
| AttributeError: Incompatible shape for in-place modification. Use
| `.reshape()` to make a copy with the desired shape.
|
| See Also
| --------
| numpy.shape : Equivalent getter function.
| numpy.reshape : Function similar to setting ``shape``.
| ndarray.reshape : Method similar to setting ``shape``.
|
| size
| Number of elements in the array.
|
| Equal to ``np.prod(a.shape)``, i.e., the product of the array's
| dimensions.
|
| Notes
| -----
| `a.size` returns a standard arbitrary precision Python integer. This
| may not be the case with other methods of obtaining the same value
| (like the suggested ``np.prod(a.shape)``, which returns an instance
| of ``np.int_``), and may be relevant if the value is used further in
| calculations that may overflow a fixed size integer type.
|
| Examples
| --------
| >>> import numpy as np
| >>> x = np.zeros((3, 5, 2), dtype=np.complex128)
| >>> x.size
| 30
| >>> np.prod(x.shape)
| 30
|
| strides
| Tuple of bytes to step in each dimension when traversing an array.
|
| The byte offset of element ``(i[0], i[1], ..., i[n])`` in an array `a`
| is::
|
| offset = sum(np.array(i) * a.strides)
|
| A more detailed explanation of strides can be found in
| :ref:`arrays.ndarray`.
|
| .. warning::
|
| Setting ``arr.strides`` is discouraged and may be deprecated in the
| future. `numpy.lib.stride_tricks.as_strided` should be preferred
| to create a new view of the same data in a safer way.
|
| Notes
| -----
| Imagine an array of 32-bit integers (each 4 bytes)::
|
| x = np.array([[0, 1, 2, 3, 4],
| [5, 6, 7, 8, 9]], dtype=np.int32)
|
| This array is stored in memory as 40 bytes, one after the other
| (known as a contiguous block of memory). The strides of an array tell
| us how many bytes we have to skip in memory to move to the next position
| along a certain axis. For example, we have to skip 4 bytes (1 value) to
| move to the next column, but 20 bytes (5 values) to get to the same
| position in the next row. As such, the strides for the array `x` will be
| ``(20, 4)``.
|
| See Also
| --------
| numpy.lib.stride_tricks.as_strided
|
| Examples
| --------
| >>> import numpy as np
| >>> y = np.reshape(np.arange(2*3*4), (2,3,4))
| >>> y
| array([[[ 0, 1, 2, 3],
| [ 4, 5, 6, 7],
| [ 8, 9, 10, 11]],
| [[12, 13, 14, 15],
| [16, 17, 18, 19],
| [20, 21, 22, 23]]])
| >>> y.strides
| (48, 16, 4)
| >>> y[1,1,1]
| 17
| >>> offset=sum(y.strides * np.array((1,1,1)))
| >>> offset/y.itemsize
| 17
|
| >>> x = np.reshape(np.arange(5*6*7*8), (5,6,7,8)).transpose(2,3,1,0)
| >>> x.strides
| (32, 4, 224, 1344)
| >>> i = np.array([3,5,2,2])
| >>> offset = sum(i * x.strides)
| >>> x[3,5,2,2]
| 813
| >>> offset / x.itemsize
| 813
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from numpy.ndarray:
|
| __hash__ = None
class record(void)
| A data-type scalar that allows field access as attribute lookup.
|
| Method resolution order:
| record
| void
| flexible
| generic
| builtins.object
|
| Methods defined here:
|
| __getattribute__(self, attr) from numpy._core.records.record
| Return getattr(self, name).
|
| __getitem__(self, indx) from numpy._core.records.record
| Return self[key].
|
| __repr__(self) from numpy._core.records.record
| Return repr(self).
|
| __setattr__(self, attr, val) from numpy._core.records.record
| Implement setattr(self, name, value).
|
| __str__(self) from numpy._core.records.record
| Return str(self).
|
| pprint(self) from numpy._core.records.record
| Pretty-print all fields.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from void:
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| ----------------------------------------------------------------------
| Static methods inherited from void:
|
| __new__(*args, **kwargs) class method of void
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from void:
|
| base
| base object
|
| dtype
| dtype object
|
| flags
| integer value of flags
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| data
| Pointer to start of data.
|
| device
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
short = class int16(signedinteger)
| Signed integer type, compatible with C ``short``.
|
| :Character code: ``'h'``
| :Canonical name: `numpy.short`
| :Alias on this platform (win32 AMD64): `numpy.int16`: 16-bit signed integer (``-32_768`` to ``32_767``).
|
| Method resolution order:
| int16
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| int16.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.int16(127).bit_count()
| 7
| >>> np.int16(-127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class signedinteger(integer)
| Abstract base class of all signed integer scalar types.
|
| Method resolution order:
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
single = class float32(floating)
| Single-precision floating-point number type, compatible with C ``float``.
|
| :Character code: ``'f'``
| :Canonical name: `numpy.single`
| :Alias on this platform (win32 AMD64): `numpy.float32`: 32-bit-precision floating-point number type: sign bit, 8 bits exponent, 23 bits mantissa.
|
| Method resolution order:
| float32
| floating
| inexact
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __int__(self, /)
| int(self)
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| as_integer_ratio(...)
| single.as_integer_ratio() -> (int, int)
|
| Return a pair of integers, whose ratio is exactly equal to the original
| floating point number, and with a positive denominator.
| Raise `OverflowError` on infinities and a `ValueError` on NaNs.
|
| >>> np.single(10.0).as_integer_ratio()
| (10, 1)
| >>> np.single(0.0).as_integer_ratio()
| (0, 1)
| >>> np.single(-.25).as_integer_ratio()
| (-1, 4)
|
| is_integer(...)
| single.is_integer() -> bool
|
| Return ``True`` if the floating point number is finite with integral
| value, and ``False`` otherwise.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> np.single(-2.0).is_integer()
| True
| >>> np.single(3.2).is_integer()
| False
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from floating:
|
| __round__(...)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __or__(self, value, /)
| Return self|value.
|
| __rand__(self, value, /)
| Return value&self.
|
| __reduce__(...)
| Helper for pickle.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class str_(builtins.str, character)
| A unicode string.
|
| This type strips trailing null codepoints.
|
| >>> s = np.str_("abc\x00")
| >>> s
| 'abc'
|
| Unlike the builtin :class:`str`, this supports the
| :ref:`python:bufferobjects`, exposing its contents as UCS4:
|
| >>> m = memoryview(np.str_("abc"))
| >>> m.format
| '3w'
| >>> m.tobytes()
| b'a\x00\x00\x00b\x00\x00\x00c\x00\x00\x00'
|
| :Character code: ``'U'``
|
| Method resolution order:
| str_
| builtins.str
| character
| flexible
| generic
| builtins.object
|
| Methods defined here:
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __str__(self, /)
| Return str(self).
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.str:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __format__(self, format_spec, /)
| Return a formatted version of the string as described by format_spec.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __getnewargs__(...)
|
| __iter__(self, /)
| Implement iter(self).
|
| __len__(self, /)
| Return len(self).
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __sizeof__(self, /)
| Return the size of the string in memory, in bytes.
|
| capitalize(self, /)
| Return a capitalized version of the string.
|
| More specifically, make the first character have upper case and the rest lower
| case.
|
| casefold(self, /)
| Return a version of the string suitable for caseless comparisons.
|
| center(self, width, fillchar=' ', /)
| Return a centered string of length width.
|
| Padding is done using the specified fill character (default is a space).
|
| count(...)
| S.count(sub[, start[, end]]) -> int
|
| Return the number of non-overlapping occurrences of substring sub in
| string S[start:end]. Optional arguments start and end are
| interpreted as in slice notation.
|
| encode(self, /, encoding='utf-8', errors='strict')
| Encode the string using the codec registered for encoding.
|
| encoding
| The encoding in which to encode the string.
| errors
| The error handling scheme to use for encoding errors.
| The default is 'strict' meaning that encoding errors raise a
| UnicodeEncodeError. Other possible values are 'ignore', 'replace' and
| 'xmlcharrefreplace' as well as any other name registered with
| codecs.register_error that can handle UnicodeEncodeErrors.
|
| endswith(...)
| S.endswith(suffix[, start[, end]]) -> bool
|
| Return True if S ends with the specified suffix, False otherwise.
| With optional start, test S beginning at that position.
| With optional end, stop comparing S at that position.
| suffix can also be a tuple of strings to try.
|
| expandtabs(self, /, tabsize=8)
| Return a copy where all tab characters are expanded using spaces.
|
| If tabsize is not given, a tab size of 8 characters is assumed.
|
| find(...)
| S.find(sub[, start[, end]]) -> int
|
| Return the lowest index in S where substring sub is found,
| such that sub is contained within S[start:end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Return -1 on failure.
|
| format(...)
| S.format(*args, **kwargs) -> str
|
| Return a formatted version of S, using substitutions from args and kwargs.
| The substitutions are identified by braces ('{' and '}').
|
| format_map(...)
| S.format_map(mapping) -> str
|
| Return a formatted version of S, using substitutions from mapping.
| The substitutions are identified by braces ('{' and '}').
|
| index(...)
| S.index(sub[, start[, end]]) -> int
|
| Return the lowest index in S where substring sub is found,
| such that sub is contained within S[start:end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Raises ValueError when the substring is not found.
|
| isalnum(self, /)
| Return True if the string is an alpha-numeric string, False otherwise.
|
| A string is alpha-numeric if all characters in the string are alpha-numeric and
| there is at least one character in the string.
|
| isalpha(self, /)
| Return True if the string is an alphabetic string, False otherwise.
|
| A string is alphabetic if all characters in the string are alphabetic and there
| is at least one character in the string.
|
| isascii(self, /)
| Return True if all characters in the string are ASCII, False otherwise.
|
| ASCII characters have code points in the range U+0000-U+007F.
| Empty string is ASCII too.
|
| isdecimal(self, /)
| Return True if the string is a decimal string, False otherwise.
|
| A string is a decimal string if all characters in the string are decimal and
| there is at least one character in the string.
|
| isdigit(self, /)
| Return True if the string is a digit string, False otherwise.
|
| A string is a digit string if all characters in the string are digits and there
| is at least one character in the string.
|
| isidentifier(self, /)
| Return True if the string is a valid Python identifier, False otherwise.
|
| Call keyword.iskeyword(s) to test whether string s is a reserved identifier,
| such as "def" or "class".
|
| islower(self, /)
| Return True if the string is a lowercase string, False otherwise.
|
| A string is lowercase if all cased characters in the string are lowercase and
| there is at least one cased character in the string.
|
| isnumeric(self, /)
| Return True if the string is a numeric string, False otherwise.
|
| A string is numeric if all characters in the string are numeric and there is at
| least one character in the string.
|
| isprintable(self, /)
| Return True if the string is printable, False otherwise.
|
| A string is printable if all of its characters are considered printable in
| repr() or if it is empty.
|
| isspace(self, /)
| Return True if the string is a whitespace string, False otherwise.
|
| A string is whitespace if all characters in the string are whitespace and there
| is at least one character in the string.
|
| istitle(self, /)
| Return True if the string is a title-cased string, False otherwise.
|
| In a title-cased string, upper- and title-case characters may only
| follow uncased characters and lowercase characters only cased ones.
|
| isupper(self, /)
| Return True if the string is an uppercase string, False otherwise.
|
| A string is uppercase if all cased characters in the string are uppercase and
| there is at least one cased character in the string.
|
| join(self, iterable, /)
| Concatenate any number of strings.
|
| The string whose method is called is inserted in between each given string.
| The result is returned as a new string.
|
| Example: '.'.join(['ab', 'pq', 'rs']) -> 'ab.pq.rs'
|
| ljust(self, width, fillchar=' ', /)
| Return a left-justified string of length width.
|
| Padding is done using the specified fill character (default is a space).
|
| lower(self, /)
| Return a copy of the string converted to lowercase.
|
| lstrip(self, chars=None, /)
| Return a copy of the string with leading whitespace removed.
|
| If chars is given and not None, remove characters in chars instead.
|
| partition(self, sep, /)
| Partition the string into three parts using the given separator.
|
| This will search for the separator in the string. If the separator is found,
| returns a 3-tuple containing the part before the separator, the separator
| itself, and the part after it.
|
| If the separator is not found, returns a 3-tuple containing the original string
| and two empty strings.
|
| removeprefix(self, prefix, /)
| Return a str with the given prefix string removed if present.
|
| If the string starts with the prefix string, return string[len(prefix):].
| Otherwise, return a copy of the original string.
|
| removesuffix(self, suffix, /)
| Return a str with the given suffix string removed if present.
|
| If the string ends with the suffix string and that suffix is not empty,
| return string[:-len(suffix)]. Otherwise, return a copy of the original
| string.
|
| replace(self, old, new, count=-1, /)
| Return a copy with all occurrences of substring old replaced by new.
|
| count
| Maximum number of occurrences to replace.
| -1 (the default value) means replace all occurrences.
|
| If the optional argument count is given, only the first count occurrences are
| replaced.
|
| rfind(...)
| S.rfind(sub[, start[, end]]) -> int
|
| Return the highest index in S where substring sub is found,
| such that sub is contained within S[start:end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Return -1 on failure.
|
| rindex(...)
| S.rindex(sub[, start[, end]]) -> int
|
| Return the highest index in S where substring sub is found,
| such that sub is contained within S[start:end]. Optional
| arguments start and end are interpreted as in slice notation.
|
| Raises ValueError when the substring is not found.
|
| rjust(self, width, fillchar=' ', /)
| Return a right-justified string of length width.
|
| Padding is done using the specified fill character (default is a space).
|
| rpartition(self, sep, /)
| Partition the string into three parts using the given separator.
|
| This will search for the separator in the string, starting at the end. If
| the separator is found, returns a 3-tuple containing the part before the
| separator, the separator itself, and the part after it.
|
| If the separator is not found, returns a 3-tuple containing two empty strings
| and the original string.
|
| rsplit(self, /, sep=None, maxsplit=-1)
| Return a list of the substrings in the string, using sep as the separator string.
|
| sep
| The separator used to split the string.
|
| When set to None (the default value), will split on any whitespace
| character (including \n \r \t \f and spaces) and will discard
| empty strings from the result.
| maxsplit
| Maximum number of splits.
| -1 (the default value) means no limit.
|
| Splitting starts at the end of the string and works to the front.
|
| rstrip(self, chars=None, /)
| Return a copy of the string with trailing whitespace removed.
|
| If chars is given and not None, remove characters in chars instead.
|
| split(self, /, sep=None, maxsplit=-1)
| Return a list of the substrings in the string, using sep as the separator string.
|
| sep
| The separator used to split the string.
|
| When set to None (the default value), will split on any whitespace
| character (including \n \r \t \f and spaces) and will discard
| empty strings from the result.
| maxsplit
| Maximum number of splits.
| -1 (the default value) means no limit.
|
| Splitting starts at the front of the string and works to the end.
|
| Note, str.split() is mainly useful for data that has been intentionally
| delimited. With natural text that includes punctuation, consider using
| the regular expression module.
|
| splitlines(self, /, keepends=False)
| Return a list of the lines in the string, breaking at line boundaries.
|
| Line breaks are not included in the resulting list unless keepends is given and
| true.
|
| startswith(...)
| S.startswith(prefix[, start[, end]]) -> bool
|
| Return True if S starts with the specified prefix, False otherwise.
| With optional start, test S beginning at that position.
| With optional end, stop comparing S at that position.
| prefix can also be a tuple of strings to try.
|
| strip(self, chars=None, /)
| Return a copy of the string with leading and trailing whitespace removed.
|
| If chars is given and not None, remove characters in chars instead.
|
| swapcase(self, /)
| Convert uppercase characters to lowercase and lowercase characters to uppercase.
|
| title(self, /)
| Return a version of the string where each word is titlecased.
|
| More specifically, words start with uppercased characters and all remaining
| cased characters have lower case.
|
| translate(self, table, /)
| Replace each character in the string using the given translation table.
|
| table
| Translation table, which must be a mapping of Unicode ordinals to
| Unicode ordinals, strings, or None.
|
| The table must implement lookup/indexing via __getitem__, for instance a
| dictionary or list. If this operation raises LookupError, the character is
| left untouched. Characters mapped to None are deleted.
|
| upper(self, /)
| Return a copy of the string converted to uppercase.
|
| zfill(self, width, /)
| Pad a numeric string with zeros on the left, to fill a field of the given width.
|
| The string is never truncated.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.str:
|
| maketrans(...)
| Return a translation table usable for str.translate().
|
| If there is only one argument, it must be a dictionary mapping Unicode
| ordinals (integers) or characters to Unicode ordinals, strings or None.
| Character keys will be then converted to ordinals.
| If there are two arguments, they must be strings of equal length, and
| in the resulting dictionary, each character in x will be mapped to the
| character at the same position in y. If there is a third argument, it
| must be a string, whose characters will be mapped to None in the result.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class timedelta64(signedinteger)
| A timedelta stored as a 64-bit integer.
|
| See :ref:`arrays.datetime` for more information.
|
| :Character code: ``'m'``
|
| Method resolution order:
| timedelta64
| signedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __str__(self, /)
| Return str(self).
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
ubyte = class uint8(unsignedinteger)
| Unsigned integer type, compatible with C ``unsigned char``.
|
| :Character code: ``'B'``
| :Canonical name: `numpy.ubyte`
| :Alias on this platform (win32 AMD64): `numpy.uint8`: 8-bit unsigned integer (``0`` to ``255``).
|
| Method resolution order:
| uint8
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint8.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint8(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class ufunc(builtins.object)
| Functions that operate element by element on whole arrays.
|
| To see the documentation for a specific ufunc, use `info`. For
| example, ``np.info(np.sin)``. Because ufuncs are written in C
| (for speed) and linked into Python with NumPy's ufunc facility,
| Python's help() function finds this page whenever help() is called
| on a ufunc.
|
| A detailed explanation of ufuncs can be found in the docs for :ref:`ufuncs`.
|
| **Calling ufuncs:** ``op(*x[, out], where=True, **kwargs)``
|
| Apply `op` to the arguments `*x` elementwise, broadcasting the arguments.
|
| The broadcasting rules are:
|
| * Dimensions of length 1 may be prepended to either array.
| * Arrays may be repeated along dimensions of length 1.
|
| Parameters
| ----------
| *x : array_like
| Input arrays.
| out : ndarray, None, or tuple of ndarray and None, optional
| Alternate array object(s) in which to put the result; if provided, it
| must have a shape that the inputs broadcast to. A tuple of arrays
| (possible only as a keyword argument) must have length equal to the
| number of outputs; use None for uninitialized outputs to be
| allocated by the ufunc.
| where : array_like, optional
| This condition is broadcast over the input. At locations where the
| condition is True, the `out` array will be set to the ufunc result.
| Elsewhere, the `out` array will retain its original value.
| Note that if an uninitialized `out` array is created via the default
| ``out=None``, locations within it where the condition is False will
| remain uninitialized.
| **kwargs
| For other keyword-only arguments, see the :ref:`ufunc docs <ufuncs.kwargs>`.
|
| Returns
| -------
| r : ndarray or tuple of ndarray
| `r` will have the shape that the arrays in `x` broadcast to; if `out` is
| provided, it will be returned. If not, `r` will be allocated and
| may contain uninitialized values. If the function has more than one
| output, then the result will be a tuple of arrays.
|
| Methods defined here:
|
| __call__(self, /, *args, **kwargs)
| Call self as a function.
|
| __repr__(self, /)
| Return repr(self).
|
| __str__(self, /)
| Return str(self).
|
| accumulate(...)
| accumulate(array, axis=0, dtype=None, out=None)
|
| Accumulate the result of applying the operator to all elements.
|
| For a one-dimensional array, accumulate produces results equivalent to::
|
| r = np.empty(len(A))
| t = op.identity # op = the ufunc being applied to A's elements
| for i in range(len(A)):
| t = op(t, A[i])
| r[i] = t
| return r
|
| For example, add.accumulate() is equivalent to np.cumsum().
|
| For a multi-dimensional array, accumulate is applied along only one
| axis (axis zero by default; see Examples below) so repeated use is
| necessary if one wants to accumulate over multiple axes.
|
| Parameters
| ----------
| array : array_like
| The array to act on.
| axis : int, optional
| The axis along which to apply the accumulation; default is zero.
| dtype : data-type code, optional
| The data-type used to represent the intermediate results. Defaults
| to the data-type of the output array if such is provided, or the
| data-type of the input array if no output array is provided.
| out : ndarray, None, or tuple of ndarray and None, optional
| A location into which the result is stored. If not provided or None,
| a freshly-allocated array is returned. For consistency with
| ``ufunc.__call__``, if given as a keyword, this may be wrapped in a
| 1-element tuple.
|
| .. versionchanged:: 1.13.0
| Tuples are allowed for keyword argument.
|
| Returns
| -------
| r : ndarray
| The accumulated values. If `out` was supplied, `r` is a reference to
| `out`.
|
| Examples
| --------
| 1-D array examples:
|
| >>> import numpy as np
| >>> np.add.accumulate([2, 3, 5])
| array([ 2, 5, 10])
| >>> np.multiply.accumulate([2, 3, 5])
| array([ 2, 6, 30])
|
| 2-D array examples:
|
| >>> I = np.eye(2)
| >>> I
| array([[1., 0.],
| [0., 1.]])
|
| Accumulate along axis 0 (rows), down columns:
|
| >>> np.add.accumulate(I, 0)
| array([[1., 0.],
| [1., 1.]])
| >>> np.add.accumulate(I) # no axis specified = axis zero
| array([[1., 0.],
| [1., 1.]])
|
| Accumulate along axis 1 (columns), through rows:
|
| >>> np.add.accumulate(I, 1)
| array([[1., 1.],
| [0., 1.]])
|
| at(...)
| at(a, indices, b=None, /)
|
| Performs unbuffered in place operation on operand 'a' for elements
| specified by 'indices'. For addition ufunc, this method is equivalent to
| ``a[indices] += b``, except that results are accumulated for elements that
| are indexed more than once. For example, ``a[[0,0]] += 1`` will only
| increment the first element once because of buffering, whereas
| ``add.at(a, [0,0], 1)`` will increment the first element twice.
|
| .. versionadded:: 1.8.0
|
| Parameters
| ----------
| a : array_like
| The array to perform in place operation on.
| indices : array_like or tuple
| Array like index object or slice object for indexing into first
| operand. If first operand has multiple dimensions, indices can be a
| tuple of array like index objects or slice objects.
| b : array_like
| Second operand for ufuncs requiring two operands. Operand must be
| broadcastable over first operand after indexing or slicing.
|
| Examples
| --------
| Set items 0 and 1 to their negative values:
|
| >>> import numpy as np
| >>> a = np.array([1, 2, 3, 4])
| >>> np.negative.at(a, [0, 1])
| >>> a
| array([-1, -2, 3, 4])
|
| Increment items 0 and 1, and increment item 2 twice:
|
| >>> a = np.array([1, 2, 3, 4])
| >>> np.add.at(a, [0, 1, 2, 2], 1)
| >>> a
| array([2, 3, 5, 4])
|
| Add items 0 and 1 in first array to second array,
| and store results in first array:
|
| >>> a = np.array([1, 2, 3, 4])
| >>> b = np.array([1, 2])
| >>> np.add.at(a, [0, 1], b)
| >>> a
| array([2, 4, 3, 4])
|
| outer(...)
| outer(A, B, /, **kwargs)
|
| Apply the ufunc `op` to all pairs (a, b) with a in `A` and b in `B`.
|
| Let ``M = A.ndim``, ``N = B.ndim``. Then the result, `C`, of
| ``op.outer(A, B)`` is an array of dimension M + N such that:
|
| .. math:: C[i_0, ..., i_{M-1}, j_0, ..., j_{N-1}] =
| op(A[i_0, ..., i_{M-1}], B[j_0, ..., j_{N-1}])
|
| For `A` and `B` one-dimensional, this is equivalent to::
|
| r = empty(len(A),len(B))
| for i in range(len(A)):
| for j in range(len(B)):
| r[i,j] = op(A[i], B[j]) # op = ufunc in question
|
| Parameters
| ----------
| A : array_like
| First array
| B : array_like
| Second array
| kwargs : any
| Arguments to pass on to the ufunc. Typically `dtype` or `out`.
| See `ufunc` for a comprehensive overview of all available arguments.
|
| Returns
| -------
| r : ndarray
| Output array
|
| See Also
| --------
| numpy.outer : A less powerful version of ``np.multiply.outer``
| that `ravel`\ s all inputs to 1D. This exists
| primarily for compatibility with old code.
|
| tensordot : ``np.tensordot(a, b, axes=((), ()))`` and
| ``np.multiply.outer(a, b)`` behave same for all
| dimensions of a and b.
|
| Examples
| --------
| >>> np.multiply.outer([1, 2, 3], [4, 5, 6])
| array([[ 4, 5, 6],
| [ 8, 10, 12],
| [12, 15, 18]])
|
| A multi-dimensional example:
|
| >>> A = np.array([[1, 2, 3], [4, 5, 6]])
| >>> A.shape
| (2, 3)
| >>> B = np.array([[1, 2, 3, 4]])
| >>> B.shape
| (1, 4)
| >>> C = np.multiply.outer(A, B)
| >>> C.shape; C
| (2, 3, 1, 4)
| array([[[[ 1, 2, 3, 4]],
| [[ 2, 4, 6, 8]],
| [[ 3, 6, 9, 12]]],
| [[[ 4, 8, 12, 16]],
| [[ 5, 10, 15, 20]],
| [[ 6, 12, 18, 24]]]])
|
| reduce(...)
| reduce(array, axis=0, dtype=None, out=None, keepdims=False, initial=<no value>, where=True)
|
| Reduces `array`'s dimension by one, by applying ufunc along one axis.
|
| Let :math:`array.shape = (N_0, ..., N_i, ..., N_{M-1})`. Then
| :math:`ufunc.reduce(array, axis=i)[k_0, ..,k_{i-1}, k_{i+1}, .., k_{M-1}]` =
| the result of iterating `j` over :math:`range(N_i)`, cumulatively applying
| ufunc to each :math:`array[k_0, ..,k_{i-1}, j, k_{i+1}, .., k_{M-1}]`.
| For a one-dimensional array, reduce produces results equivalent to:
| ::
|
| r = op.identity # op = ufunc
| for i in range(len(A)):
| r = op(r, A[i])
| return r
|
| For example, add.reduce() is equivalent to sum().
|
| Parameters
| ----------
| array : array_like
| The array to act on.
| axis : None or int or tuple of ints, optional
| Axis or axes along which a reduction is performed.
| The default (`axis` = 0) is perform a reduction over the first
| dimension of the input array. `axis` may be negative, in
| which case it counts from the last to the first axis.
|
| .. versionadded:: 1.7.0
|
| If this is None, a reduction is performed over all the axes.
| If this is a tuple of ints, a reduction is performed on multiple
| axes, instead of a single axis or all the axes as before.
|
| For operations which are either not commutative or not associative,
| doing a reduction over multiple axes is not well-defined. The
| ufuncs do not currently raise an exception in this case, but will
| likely do so in the future.
| dtype : data-type code, optional
| The data type used to perform the operation. Defaults to that of
| ``out`` if given, and the data type of ``array`` otherwise (though
| upcast to conserve precision for some cases, such as
| ``numpy.add.reduce`` for integer or boolean input).
| out : ndarray, None, or tuple of ndarray and None, optional
| A location into which the result is stored. If not provided or None,
| a freshly-allocated array is returned. For consistency with
| ``ufunc.__call__``, if given as a keyword, this may be wrapped in a
| 1-element tuple.
|
| .. versionchanged:: 1.13.0
| Tuples are allowed for keyword argument.
| keepdims : bool, optional
| If this is set to True, the axes which are reduced are left
| in the result as dimensions with size one. With this option,
| the result will broadcast correctly against the original `array`.
|
| .. versionadded:: 1.7.0
| initial : scalar, optional
| The value with which to start the reduction.
| If the ufunc has no identity or the dtype is object, this defaults
| to None - otherwise it defaults to ufunc.identity.
| If ``None`` is given, the first element of the reduction is used,
| and an error is thrown if the reduction is empty.
|
| .. versionadded:: 1.15.0
|
| where : array_like of bool, optional
| A boolean array which is broadcasted to match the dimensions
| of `array`, and selects elements to include in the reduction. Note
| that for ufuncs like ``minimum`` that do not have an identity
| defined, one has to pass in also ``initial``.
|
| .. versionadded:: 1.17.0
|
| Returns
| -------
| r : ndarray
| The reduced array. If `out` was supplied, `r` is a reference to it.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.multiply.reduce([2,3,5])
| 30
|
| A multi-dimensional array example:
|
| >>> X = np.arange(8).reshape((2,2,2))
| >>> X
| array([[[0, 1],
| [2, 3]],
| [[4, 5],
| [6, 7]]])
| >>> np.add.reduce(X, 0)
| array([[ 4, 6],
| [ 8, 10]])
| >>> np.add.reduce(X) # confirm: default axis value is 0
| array([[ 4, 6],
| [ 8, 10]])
| >>> np.add.reduce(X, 1)
| array([[ 2, 4],
| [10, 12]])
| >>> np.add.reduce(X, 2)
| array([[ 1, 5],
| [ 9, 13]])
|
| You can use the ``initial`` keyword argument to initialize the reduction
| with a different value, and ``where`` to select specific elements to include:
|
| >>> np.add.reduce([10], initial=5)
| 15
| >>> np.add.reduce(np.ones((2, 2, 2)), axis=(0, 2), initial=10)
| array([14., 14.])
| >>> a = np.array([10., np.nan, 10])
| >>> np.add.reduce(a, where=~np.isnan(a))
| 20.0
|
| Allows reductions of empty arrays where they would normally fail, i.e.
| for ufuncs without an identity.
|
| >>> np.minimum.reduce([], initial=np.inf)
| inf
| >>> np.minimum.reduce([[1., 2.], [3., 4.]], initial=10., where=[True, False])
| array([ 1., 10.])
| >>> np.minimum.reduce([])
| Traceback (most recent call last):
| ...
| ValueError: zero-size array to reduction operation minimum which has no identity
|
| reduceat(...)
| reduceat(array, indices, axis=0, dtype=None, out=None)
|
| Performs a (local) reduce with specified slices over a single axis.
|
| For i in ``range(len(indices))``, `reduceat` computes
| ``ufunc.reduce(array[indices[i]:indices[i+1]])``, which becomes the i-th
| generalized "row" parallel to `axis` in the final result (i.e., in a
| 2-D array, for example, if `axis = 0`, it becomes the i-th row, but if
| `axis = 1`, it becomes the i-th column). There are three exceptions to this:
|
| * when ``i = len(indices) - 1`` (so for the last index),
| ``indices[i+1] = array.shape[axis]``.
| * if ``indices[i] >= indices[i + 1]``, the i-th generalized "row" is
| simply ``array[indices[i]]``.
| * if ``indices[i] >= len(array)`` or ``indices[i] < 0``, an error is raised.
|
| The shape of the output depends on the size of `indices`, and may be
| larger than `array` (this happens if ``len(indices) > array.shape[axis]``).
|
| Parameters
| ----------
| array : array_like
| The array to act on.
| indices : array_like
| Paired indices, comma separated (not colon), specifying slices to
| reduce.
| axis : int, optional
| The axis along which to apply the reduceat.
| dtype : data-type code, optional
| The data type used to perform the operation. Defaults to that of
| ``out`` if given, and the data type of ``array`` otherwise (though
| upcast to conserve precision for some cases, such as
| ``numpy.add.reduce`` for integer or boolean input).
| out : ndarray, None, or tuple of ndarray and None, optional
| A location into which the result is stored. If not provided or None,
| a freshly-allocated array is returned. For consistency with
| ``ufunc.__call__``, if given as a keyword, this may be wrapped in a
| 1-element tuple.
|
| .. versionchanged:: 1.13.0
| Tuples are allowed for keyword argument.
|
| Returns
| -------
| r : ndarray
| The reduced values. If `out` was supplied, `r` is a reference to
| `out`.
|
| Notes
| -----
| A descriptive example:
|
| If `array` is 1-D, the function `ufunc.accumulate(array)` is the same as
| ``ufunc.reduceat(array, indices)[::2]`` where `indices` is
| ``range(len(array) - 1)`` with a zero placed
| in every other element:
| ``indices = zeros(2 * len(array) - 1)``,
| ``indices[1::2] = range(1, len(array))``.
|
| Don't be fooled by this attribute's name: `reduceat(array)` is not
| necessarily smaller than `array`.
|
| Examples
| --------
| To take the running sum of four successive values:
|
| >>> import numpy as np
| >>> np.add.reduceat(np.arange(8),[0,4, 1,5, 2,6, 3,7])[::2]
| array([ 6, 10, 14, 18])
|
| A 2-D example:
|
| >>> x = np.linspace(0, 15, 16).reshape(4,4)
| >>> x
| array([[ 0., 1., 2., 3.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.],
| [12., 13., 14., 15.]])
|
| ::
|
| # reduce such that the result has the following five rows:
| # [row1 + row2 + row3]
| # [row4]
| # [row2]
| # [row3]
| # [row1 + row2 + row3 + row4]
|
| >>> np.add.reduceat(x, [0, 3, 1, 2, 0])
| array([[12., 15., 18., 21.],
| [12., 13., 14., 15.],
| [ 4., 5., 6., 7.],
| [ 8., 9., 10., 11.],
| [24., 28., 32., 36.]])
|
| ::
|
| # reduce such that result has the following two columns:
| # [col1 * col2 * col3, col4]
|
| >>> np.multiply.reduceat(x, [0, 3], 1)
| array([[ 0., 3.],
| [ 120., 7.],
| [ 720., 11.],
| [2184., 15.]])
|
| resolve_dtypes(...)
| resolve_dtypes(dtypes, *, signature=None, casting=None, reduction=False)
|
| Find the dtypes NumPy will use for the operation. Both input and
| output dtypes are returned and may differ from those provided.
|
| .. note::
|
| This function always applies NEP 50 rules since it is not provided
| any actual values. The Python types ``int``, ``float``, and
| ``complex`` thus behave weak and should be passed for "untyped"
| Python input.
|
| Parameters
| ----------
| dtypes : tuple of dtypes, None, or literal int, float, complex
| The input dtypes for each operand. Output operands can be
| None, indicating that the dtype must be found.
| signature : tuple of DTypes or None, optional
| If given, enforces exact DType (classes) of the specific operand.
| The ufunc ``dtype`` argument is equivalent to passing a tuple with
| only output dtypes set.
| casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
| The casting mode when casting is necessary. This is identical to
| the ufunc call casting modes.
| reduction : boolean
| If given, the resolution assumes a reduce operation is happening
| which slightly changes the promotion and type resolution rules.
| `dtypes` is usually something like ``(None, np.dtype("i2"), None)``
| for reductions (first input is also the output).
|
| .. note::
|
| The default casting mode is "same_kind", however, as of
| NumPy 1.24, NumPy uses "unsafe" for reductions.
|
| Returns
| -------
| dtypes : tuple of dtypes
| The dtypes which NumPy would use for the calculation. Note that
| dtypes may not match the passed in ones (casting is necessary).
|
|
| Examples
| --------
| This API requires passing dtypes, define them for convenience:
|
| >>> import numpy as np
| >>> int32 = np.dtype("int32")
| >>> float32 = np.dtype("float32")
|
| The typical ufunc call does not pass an output dtype. `numpy.add` has two
| inputs and one output, so leave the output as ``None`` (not provided):
|
| >>> np.add.resolve_dtypes((int32, float32, None))
| (dtype('float64'), dtype('float64'), dtype('float64'))
|
| The loop found uses "float64" for all operands (including the output), the
| first input would be cast.
|
| ``resolve_dtypes`` supports "weak" handling for Python scalars by passing
| ``int``, ``float``, or ``complex``:
|
| >>> np.add.resolve_dtypes((float32, float, None))
| (dtype('float32'), dtype('float32'), dtype('float32'))
|
| Where the Python ``float`` behaves samilar to a Python value ``0.0``
| in a ufunc call. (See :ref:`NEP 50 <NEP50>` for details.)
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| identity
| The identity value.
|
| Data attribute containing the identity element for the ufunc,
| if it has one. If it does not, the attribute value is None.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.identity
| 0
| >>> np.multiply.identity
| 1
| >>> np.power.identity
| 1
| >>> print(np.exp.identity)
| None
|
| nargs
| The number of arguments.
|
| Data attribute containing the number of arguments the ufunc takes, including
| optional ones.
|
| Notes
| -----
| Typically this value will be one more than what you might expect
| because all ufuncs take the optional "out" argument.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.nargs
| 3
| >>> np.multiply.nargs
| 3
| >>> np.power.nargs
| 3
| >>> np.exp.nargs
| 2
|
| nin
| The number of inputs.
|
| Data attribute containing the number of arguments the ufunc treats as input.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.nin
| 2
| >>> np.multiply.nin
| 2
| >>> np.power.nin
| 2
| >>> np.exp.nin
| 1
|
| nout
| The number of outputs.
|
| Data attribute containing the number of arguments the ufunc treats as output.
|
| Notes
| -----
| Since all ufuncs can take output arguments, this will always be at least 1.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.nout
| 1
| >>> np.multiply.nout
| 1
| >>> np.power.nout
| 1
| >>> np.exp.nout
| 1
|
| ntypes
| The number of types.
|
| The number of numerical NumPy types - of which there are 18 total - on which
| the ufunc can operate.
|
| See Also
| --------
| numpy.ufunc.types
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.ntypes
| 18
| >>> np.multiply.ntypes
| 18
| >>> np.power.ntypes
| 17
| >>> np.exp.ntypes
| 7
| >>> np.remainder.ntypes
| 14
|
| signature
| Definition of the core elements a generalized ufunc operates on.
|
| The signature determines how the dimensions of each input/output array
| are split into core and loop dimensions:
|
| 1. Each dimension in the signature is matched to a dimension of the
| corresponding passed-in array, starting from the end of the shape tuple.
| 2. Core dimensions assigned to the same label in the signature must have
| exactly matching sizes, no broadcasting is performed.
| 3. The core dimensions are removed from all inputs and the remaining
| dimensions are broadcast together, defining the loop dimensions.
|
| Notes
| -----
| Generalized ufuncs are used internally in many linalg functions, and in
| the testing suite; the examples below are taken from these.
| For ufuncs that operate on scalars, the signature is None, which is
| equivalent to '()' for every argument.
|
| Examples
| --------
| >>> import numpy as np
| >>> np.linalg._umath_linalg.det.signature
| '(m,m)->()'
| >>> np.matmul.signature
| '(n?,k),(k,m?)->(n?,m?)'
| >>> np.add.signature is None
| True # equivalent to '(),()->()'
|
| types
| Returns a list with types grouped input->output.
|
| Data attribute listing the data-type "Domain-Range" groupings the ufunc can
| deliver. The data-types are given using the character codes.
|
| See Also
| --------
| numpy.ufunc.ntypes
|
| Examples
| --------
| >>> import numpy as np
| >>> np.add.types
| ['??->?', 'bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l',
| 'LL->L', 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D',
| 'GG->G', 'OO->O']
|
| >>> np.multiply.types
| ['??->?', 'bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l',
| 'LL->L', 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D',
| 'GG->G', 'OO->O']
|
| >>> np.power.types
| ['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L',
| 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'FF->F', 'DD->D', 'GG->G',
| 'OO->O']
|
| >>> np.exp.types
| ['f->f', 'd->d', 'g->g', 'F->F', 'D->D', 'G->G', 'O->O']
|
| >>> np.remainder.types
| ['bb->b', 'BB->B', 'hh->h', 'HH->H', 'ii->i', 'II->I', 'll->l', 'LL->L',
| 'qq->q', 'QQ->Q', 'ff->f', 'dd->d', 'gg->g', 'OO->O']
uint = class uint64(unsignedinteger)
| Unsigned signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'Q'``
| :Canonical name: `numpy.uint`
| :Alias on this platform (win32 AMD64): `numpy.uint64`: 64-bit unsigned integer (``0`` to ``18_446_744_073_709_551_615``).
| :Alias on this platform (win32 AMD64): `numpy.uintp`: Unsigned integer large enough to fit pointer, compatible with C ``uintptr_t``.
|
| Method resolution order:
| uint64
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint64(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class uint16(unsignedinteger)
| Unsigned integer type, compatible with C ``unsigned short``.
|
| :Character code: ``'H'``
| :Canonical name: `numpy.ushort`
| :Alias on this platform (win32 AMD64): `numpy.uint16`: 16-bit unsigned integer (``0`` to ``65_535``).
|
| Method resolution order:
| uint16
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint16.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint16(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class uint32(unsignedinteger)
| Method resolution order:
| uint32
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint32.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint32(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class uint64(unsignedinteger)
| Unsigned signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'Q'``
| :Canonical name: `numpy.uint`
| :Alias on this platform (win32 AMD64): `numpy.uint64`: 64-bit unsigned integer (``0`` to ``18_446_744_073_709_551_615``).
| :Alias on this platform (win32 AMD64): `numpy.uintp`: Unsigned integer large enough to fit pointer, compatible with C ``uintptr_t``.
|
| Method resolution order:
| uint64
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint64(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class uint8(unsignedinteger)
| Unsigned integer type, compatible with C ``unsigned char``.
|
| :Character code: ``'B'``
| :Canonical name: `numpy.ubyte`
| :Alias on this platform (win32 AMD64): `numpy.uint8`: 8-bit unsigned integer (``0`` to ``255``).
|
| Method resolution order:
| uint8
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint8.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint8(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class uintc(unsignedinteger)
| Unsigned integer type, compatible with C ``unsigned int``.
|
| :Character code: ``'I'``
|
| Method resolution order:
| uintc
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
uintp = class uint64(unsignedinteger)
| Unsigned signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'Q'``
| :Canonical name: `numpy.uint`
| :Alias on this platform (win32 AMD64): `numpy.uint64`: 64-bit unsigned integer (``0`` to ``18_446_744_073_709_551_615``).
| :Alias on this platform (win32 AMD64): `numpy.uintp`: Unsigned integer large enough to fit pointer, compatible with C ``uintptr_t``.
|
| Method resolution order:
| uint64
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint64(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
ulong = class uint32(unsignedinteger)
| Method resolution order:
| uint32
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint32.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint32(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
ulonglong = class uint64(unsignedinteger)
| Unsigned signed integer type, 64bit on 64bit systems and 32bit on 32bit
| systems.
|
| :Character code: ``'Q'``
| :Canonical name: `numpy.uint`
| :Alias on this platform (win32 AMD64): `numpy.uint64`: 64-bit unsigned integer (``0`` to ``18_446_744_073_709_551_615``).
| :Alias on this platform (win32 AMD64): `numpy.uintp`: Unsigned integer large enough to fit pointer, compatible with C ``uintptr_t``.
|
| Method resolution order:
| uint64
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint64.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint64(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class unsignedinteger(integer)
| Abstract base class of all unsigned integer scalar types.
|
| Method resolution order:
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Class methods inherited from number:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from generic:
|
| __hash__ = None
ushort = class uint16(unsignedinteger)
| Unsigned integer type, compatible with C ``unsigned short``.
|
| :Character code: ``'H'``
| :Canonical name: `numpy.ushort`
| :Alias on this platform (win32 AMD64): `numpy.uint16`: 16-bit unsigned integer (``0`` to ``65_535``).
|
| Method resolution order:
| uint16
| unsignedinteger
| integer
| number
| generic
| builtins.object
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __bool__(self, /)
| True if self else False
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __index__(self, /)
| Return self converted to an integer, if self is suitable for use as an index into a list.
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __le__(self, value, /)
| Return self<=value.
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| bit_count(...)
| uint16.bit_count() -> int
|
| Computes the number of 1-bits in the absolute value of the input.
| Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
|
| Examples
| --------
| >>> np.uint16(127).bit_count()
| 7
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| __class_getitem__(item, /)
|
| Return a parametrized wrapper around the `~numpy.number` type.
|
| .. versionadded:: 1.22
|
| Returns
| -------
| alias : types.GenericAlias
| A parametrized `~numpy.number` type.
|
| Examples
| --------
| >>> from typing import Any
| >>> import numpy as np
|
| >>> np.signedinteger[Any]
| numpy.signedinteger[typing.Any]
|
| See Also
| --------
| :pep:`585` : Type hinting generics in standard collections.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Methods inherited from integer:
|
| __round__(...)
|
| is_integer(...)
| integer.is_integer() -> bool
|
| Return ``True`` if the number is finite with integral value.
|
| .. versionadded:: 1.22
|
| Examples
| --------
| >>> import numpy as np
| >>> np.int64(-2).is_integer()
| True
| >>> np.uint32(5).is_integer()
| True
|
| ----------------------------------------------------------------------
| Data descriptors inherited from integer:
|
| denominator
| denominator of value (1)
|
| numerator
| numerator of value (the value itself)
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __format__(...)
| NumPy array scalar formatter
|
| __getitem__(self, key, /)
| Return self[key].
|
| __reduce__(...)
| Helper for pickle.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| base
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.base`.
|
| data
| Pointer to start of data.
|
| device
|
| dtype
| Get array data-descriptor.
|
| flags
| The integer value of flags.
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
class vectorize(builtins.object)
| vectorize(pyfunc=<no value>, otypes=None, doc=None, excluded=None, cache=False, signature=None)
|
| vectorize(pyfunc=np._NoValue, otypes=None, doc=None, excluded=None,
| cache=False, signature=None)
|
| Returns an object that acts like pyfunc, but takes arrays as input.
|
| Define a vectorized function which takes a nested sequence of objects or
| numpy arrays as inputs and returns a single numpy array or a tuple of numpy
| arrays. The vectorized function evaluates `pyfunc` over successive tuples
| of the input arrays like the python map function, except it uses the
| broadcasting rules of numpy.
|
| The data type of the output of `vectorized` is determined by calling
| the function with the first element of the input. This can be avoided
| by specifying the `otypes` argument.
|
| Parameters
| ----------
| pyfunc : callable, optional
| A python function or method.
| Can be omitted to produce a decorator with keyword arguments.
| otypes : str or list of dtypes, optional
| The output data type. It must be specified as either a string of
| typecode characters or a list of data type specifiers. There should
| be one data type specifier for each output.
| doc : str, optional
| The docstring for the function. If None, the docstring will be the
| ``pyfunc.__doc__``.
| excluded : set, optional
| Set of strings or integers representing the positional or keyword
| arguments for which the function will not be vectorized. These will be
| passed directly to `pyfunc` unmodified.
|
| .. versionadded:: 1.7.0
|
| cache : bool, optional
| If `True`, then cache the first function call that determines the number
| of outputs if `otypes` is not provided.
|
| .. versionadded:: 1.7.0
|
| signature : string, optional
| Generalized universal function signature, e.g., ``(m,n),(n)->(m)`` for
| vectorized matrix-vector multiplication. If provided, ``pyfunc`` will
| be called with (and expected to return) arrays with shapes given by the
| size of corresponding core dimensions. By default, ``pyfunc`` is
| assumed to take scalars as input and output.
|
| .. versionadded:: 1.12.0
|
| Returns
| -------
| out : callable
| A vectorized function if ``pyfunc`` was provided,
| a decorator otherwise.
|
| See Also
| --------
| frompyfunc : Takes an arbitrary Python function and returns a ufunc
|
| Notes
| -----
| The `vectorize` function is provided primarily for convenience, not for
| performance. The implementation is essentially a for loop.
|
| If `otypes` is not specified, then a call to the function with the
| first argument will be used to determine the number of outputs. The
| results of this call will be cached if `cache` is `True` to prevent
| calling the function twice. However, to implement the cache, the
| original function must be wrapped which will slow down subsequent
| calls, so only do this if your function is expensive.
|
| The new keyword argument interface and `excluded` argument support
| further degrades performance.
|
| References
| ----------
| .. [1] :doc:`/reference/c-api/generalized-ufuncs`
|
| Examples
| --------
| >>> import numpy as np
| >>> def myfunc(a, b):
| ... "Return a-b if a>b, otherwise return a+b"
| ... if a > b:
| ... return a - b
| ... else:
| ... return a + b
|
| >>> vfunc = np.vectorize(myfunc)
| >>> vfunc([1, 2, 3, 4], 2)
| array([3, 4, 1, 2])
|
| The docstring is taken from the input function to `vectorize` unless it
| is specified:
|
| >>> vfunc.__doc__
| 'Return a-b if a>b, otherwise return a+b'
| >>> vfunc = np.vectorize(myfunc, doc='Vectorized `myfunc`')
| >>> vfunc.__doc__
| 'Vectorized `myfunc`'
|
| The output type is determined by evaluating the first element of the input,
| unless it is specified:
|
| >>> out = vfunc([1, 2, 3, 4], 2)
| >>> type(out[0])
| <class 'numpy.int64'>
| >>> vfunc = np.vectorize(myfunc, otypes=[float])
| >>> out = vfunc([1, 2, 3, 4], 2)
| >>> type(out[0])
| <class 'numpy.float64'>
|
| The `excluded` argument can be used to prevent vectorizing over certain
| arguments. This can be useful for array-like arguments of a fixed length
| such as the coefficients for a polynomial as in `polyval`:
|
| >>> def mypolyval(p, x):
| ... _p = list(p)
| ... res = _p.pop(0)
| ... while _p:
| ... res = res*x + _p.pop(0)
| ... return res
| >>> vpolyval = np.vectorize(mypolyval, excluded=['p'])
| >>> vpolyval(p=[1, 2, 3], x=[0, 1])
| array([3, 6])
|
| Positional arguments may also be excluded by specifying their position:
|
| >>> vpolyval.excluded.add(0)
| >>> vpolyval([1, 2, 3], x=[0, 1])
| array([3, 6])
|
| The `signature` argument allows for vectorizing functions that act on
| non-scalar arrays of fixed length. For example, you can use it for a
| vectorized calculation of Pearson correlation coefficient and its p-value:
|
| >>> import scipy.stats
| >>> pearsonr = np.vectorize(scipy.stats.pearsonr,
| ... signature='(n),(n)->(),()')
| >>> pearsonr([[0, 1, 2, 3]], [[1, 2, 3, 4], [4, 3, 2, 1]])
| (array([ 1., -1.]), array([ 0., 0.]))
|
| Or for a vectorized convolution:
|
| >>> convolve = np.vectorize(np.convolve, signature='(n),(m)->(k)')
| >>> convolve(np.eye(4), [1, 2, 1])
| array([[1., 2., 1., 0., 0., 0.],
| [0., 1., 2., 1., 0., 0.],
| [0., 0., 1., 2., 1., 0.],
| [0., 0., 0., 1., 2., 1.]])
|
| Decorator syntax is supported. The decorator can be called as
| a function to provide keyword arguments:
|
| >>> @np.vectorize
| ... def identity(x):
| ... return x
| ...
| >>> identity([0, 1, 2])
| array([0, 1, 2])
| >>> @np.vectorize(otypes=[float])
| ... def as_float(x):
| ... return x
| ...
| >>> as_float([0, 1, 2])
| array([0., 1., 2.])
|
| Methods defined here:
|
| __call__(self, *args, **kwargs) from numpy.lib._function_base_impl.vectorize
| Call self as a function.
|
| __init__(self, pyfunc=<no value>, otypes=None, doc=None, excluded=None, cache=False, signature=None) from numpy.lib._function_base_impl.vectorize
| Initialize self. See help(type(self)) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class void(flexible)
| np.void(length_or_data, /, dtype=None)
|
| Create a new structured or unstructured void scalar.
|
| Parameters
| ----------
| length_or_data : int, array-like, bytes-like, object
| One of multiple meanings (see notes). The length or
| bytes data of an unstructured void. Or alternatively,
| the data to be stored in the new scalar when `dtype`
| is provided.
| This can be an array-like, in which case an array may
| be returned.
| dtype : dtype, optional
| If provided the dtype of the new scalar. This dtype must
| be "void" dtype (i.e. a structured or unstructured void,
| see also :ref:`defining-structured-types`).
|
| .. versionadded:: 1.24
|
| Notes
| -----
| For historical reasons and because void scalars can represent both
| arbitrary byte data and structured dtypes, the void constructor
| has three calling conventions:
|
| 1. ``np.void(5)`` creates a ``dtype="V5"`` scalar filled with five
| ``\0`` bytes. The 5 can be a Python or NumPy integer.
| 2. ``np.void(b"bytes-like")`` creates a void scalar from the byte string.
| The dtype itemsize will match the byte string length, here ``"V10"``.
| 3. When a ``dtype=`` is passed the call is roughly the same as an
| array creation. However, a void scalar rather than array is returned.
|
| Please see the examples which show all three different conventions.
|
| Examples
| --------
| >>> np.void(5)
| np.void(b'\x00\x00\x00\x00\x00')
| >>> np.void(b'abcd')
| np.void(b'\x61\x62\x63\x64')
| >>> np.void((3.2, b'eggs'), dtype="d,S5")
| np.void((3.2, b'eggs'), dtype=[('f0', '<f8'), ('f1', 'S5')])
| >>> np.void(3, dtype=[('x', np.int8), ('y', np.int8)])
| np.void((3, 3), dtype=[('x', 'i1'), ('y', 'i1')])
|
| :Character code: ``'V'``
|
| Method resolution order:
| void
| flexible
| generic
| builtins.object
|
| Methods defined here:
|
| __buffer__(self, flags, /)
| Return a buffer object that exposes the underlying memory of the object.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __str__(self, /)
| Return str(self).
|
| getfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.getfield`.
|
| setfield(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setfield`.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| base
| base object
|
| dtype
| dtype object
|
| flags
| integer value of flags
|
| ----------------------------------------------------------------------
| Methods inherited from generic:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __and__(self, value, /)
| Return self&value.
|
| __array__(...)
| sc.__array__(dtype) return 0-dim array from scalar with specified dtype
|
| __array_namespace__(...)
|
| __array_wrap__(...)
| sc.__array_wrap__(obj) return scalar from array
|
| __bool__(self, /)
| True if self else False
|
| __copy__(...)
|
| __deepcopy__(...)
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __float__(self, /)
| float(self)
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __format__(...)
| NumPy array scalar formatter
|
| __int__(self, /)
| int(self)
|
| __invert__(self, /)
| ~self
|
| __lshift__(self, value, /)
| Return self<<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __neg__(self, /)
| -self
|
| __or__(self, value, /)
| Return self|value.
|
| __pos__(self, /)
| +self
|
| __pow__(self, value, mod=None, /)
| Return pow(self, value, mod).
|
| __radd__(self, value, /)
| Return value+self.
|
| __rand__(self, value, /)
| Return value&self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| Helper for pickle.
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rlshift__(self, value, /)
| Return value<<self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __ror__(self, value, /)
| Return value|self.
|
| __rpow__(self, value, mod=None, /)
| Return pow(value, self, mod).
|
| __rrshift__(self, value, /)
| Return value>>self.
|
| __rshift__(self, value, /)
| Return self>>value.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __rxor__(self, value, /)
| Return value^self.
|
| __setstate__(...)
|
| __sizeof__(...)
| Size of object in memory, in bytes.
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| __xor__(self, value, /)
| Return self^value.
|
| all(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.all`.
|
| any(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.any`.
|
| argmax(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmax`.
|
| argmin(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argmin`.
|
| argsort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.argsort`.
|
| astype(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.astype`.
|
| byteswap(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.byteswap`.
|
| choose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.choose`.
|
| clip(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.clip`.
|
| compress(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.compress`.
|
| conj(...)
|
| conjugate(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.conjugate`.
|
| copy(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.copy`.
|
| cumprod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumprod`.
|
| cumsum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.cumsum`.
|
| diagonal(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.diagonal`.
|
| dump(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dump`.
|
| dumps(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.dumps`.
|
| fill(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.fill`.
|
| flatten(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.flatten`.
|
| item(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.item`.
|
| max(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.max`.
|
| mean(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.mean`.
|
| min(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.min`.
|
| nonzero(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.nonzero`.
|
| prod(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.prod`.
|
| put(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.put`.
|
| ravel(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.ravel`.
|
| repeat(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.repeat`.
|
| reshape(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.reshape`.
|
| resize(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.resize`.
|
| round(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.round`.
|
| searchsorted(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.searchsorted`.
|
| setflags(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.setflags`.
|
| sort(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sort`.
|
| squeeze(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.squeeze`.
|
| std(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.std`.
|
| sum(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.sum`.
|
| swapaxes(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.swapaxes`.
|
| take(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.take`.
|
| to_device(...)
|
| tobytes(...)
|
| tofile(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tofile`.
|
| tolist(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tolist`.
|
| tostring(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.tostring`.
|
| trace(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.trace`.
|
| transpose(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.transpose`.
|
| var(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.var`.
|
| view(...)
| Scalar method identical to the corresponding array attribute.
|
| Please see `ndarray.view`.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from generic:
|
| T
| Scalar attribute identical to the corresponding array attribute.
|
| Please see `ndarray.T`.
|
| __array_interface__
| Array protocol: Python side
|
| __array_priority__
| Array priority.
|
| __array_struct__
| Array protocol: struct
|
| data
| Pointer to start of data.
|
| device
|
| flat
| A 1-D view of the scalar.
|
| imag
| The imaginary part of the scalar.
|
| itemset
|
| itemsize
| The length of one element in bytes.
|
| nbytes
|
| ndim
| The number of array dimensions.
|
| newbyteorder
|
| ptp
|
| real
| The real part of the scalar.
|
| shape
| Tuple of array dimensions.
|
| size
| The number of elements in the gentype.
|
| strides
| Tuple of bytes steps in each dimension.
FUNCTIONS
__dir__()
__getattr__(attr)
_get_promotion_state(...)
Get the current NEP 50 promotion state.
_no_nep50_warning()
Context manager to disable NEP 50 warnings. This context manager is
only relevant if the NEP 50 warnings are enabled globally (which is not
thread/context safe).
This warning context manager itself is fully safe, however.
_set_promotion_state(...)
Set the NEP 50 promotion state. This is not thread-safe.
The optional warnings can be safely silenced using the
`np._no_nep50_warning()` context manager.
all(a, axis=None, out=None, keepdims=<no value>, *, where=<no value>)
Test whether all array elements along a given axis evaluate to True.
Parameters
----------
a : array_like
Input array or object that can be converted to an array.
axis : None or int or tuple of ints, optional
Axis or axes along which a logical AND reduction is performed.
The default (``axis=None``) is to perform a logical AND over all
the dimensions of the input array. `axis` may be negative, in
which case it counts from the last to the first axis.
.. versionadded:: 1.7.0
If this is a tuple of ints, a reduction is performed on multiple
axes, instead of a single axis or all the axes as before.
out : ndarray, optional
Alternate output array in which to place the result.
It must have the same shape as the expected output and its
type is preserved (e.g., if ``dtype(out)`` is float, the result
will consist of 0.0's and 1.0's). See :ref:`ufuncs-output-type`
for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `all` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
where : array_like of bool, optional
Elements to include in checking for all `True` values.
See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.20.0
Returns
-------
all : ndarray, bool
A new boolean or array is returned unless `out` is specified,
in which case a reference to `out` is returned.
See Also
--------
ndarray.all : equivalent method
any : Test whether any element along a given axis evaluates to True.
Notes
-----
Not a Number (NaN), positive infinity and negative infinity
evaluate to `True` because these are not equal to zero.
.. versionchanged:: 2.0
Before NumPy 2.0, ``all`` did not return booleans for object dtype
input arrays.
This behavior is still available via ``np.logical_and.reduce``.
Examples
--------
>>> import numpy as np
>>> np.all([[True,False],[True,True]])
False
>>> np.all([[True,False],[True,True]], axis=0)
array([ True, False])
>>> np.all([-1, 4, 5])
True
>>> np.all([1.0, np.nan])
True
>>> np.all([[True, True], [False, True]], where=[[True], [False]])
True
>>> o=np.array(False)
>>> z=np.all([-1, 4, 5], out=o)
>>> id(z), id(o), z
(28293632, 28293632, array(True)) # may vary
allclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
Returns True if two arrays are element-wise equal within a tolerance.
The tolerance values are positive, typically very small numbers. The
relative difference (`rtol` * abs(`b`)) and the absolute difference
`atol` are added together to compare against the absolute difference
between `a` and `b`.
.. warning:: The default `atol` is not appropriate for comparing numbers
with magnitudes much smaller than one (see Notes).
NaNs are treated as equal if they are in the same place and if
``equal_nan=True``. Infs are treated as equal if they are in the same
place and of the same sign in both arrays.
Parameters
----------
a, b : array_like
Input arrays to compare.
rtol : array_like
The relative tolerance parameter (see Notes).
atol : array_like
The absolute tolerance parameter (see Notes).
equal_nan : bool
Whether to compare NaN's as equal. If True, NaN's in `a` will be
considered equal to NaN's in `b` in the output array.
.. versionadded:: 1.10.0
Returns
-------
allclose : bool
Returns True if the two arrays are equal within the given
tolerance; False otherwise.
See Also
--------
isclose, all, any, equal
Notes
-----
If the following equation is element-wise True, then allclose returns
True.::
absolute(a - b) <= (atol + rtol * absolute(b))
The above equation is not symmetric in `a` and `b`, so that
``allclose(a, b)`` might be different from ``allclose(b, a)`` in
some rare cases.
The default value of `atol` is not appropriate when the reference value
`b` has magnitude smaller than one. For example, it is unlikely that
``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet
``allclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure
to select `atol` for the use case at hand, especially for defining the
threshold below which a non-zero value in `a` will be considered "close"
to a very small or zero value in `b`.
The comparison of `a` and `b` uses standard broadcasting, which
means that `a` and `b` need not have the same shape in order for
``allclose(a, b)`` to evaluate to True. The same is true for
`equal` but not `array_equal`.
`allclose` is not defined for non-numeric data types.
`bool` is considered a numeric data-type for this purpose.
Examples
--------
>>> import numpy as np
>>> np.allclose([1e10,1e-7], [1.00001e10,1e-8])
False
>>> np.allclose([1e10,1e-8], [1.00001e10,1e-9])
True
>>> np.allclose([1e10,1e-8], [1.0001e10,1e-9])
False
>>> np.allclose([1.0, np.nan], [1.0, np.nan])
False
>>> np.allclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
True
amax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the maximum of an array or maximum along an axis.
`amax` is an alias of `~numpy.max`.
See Also
--------
max : alias of this function
ndarray.max : equivalent method
amin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the minimum of an array or minimum along an axis.
`amin` is an alias of `~numpy.min`.
See Also
--------
min : alias of this function
ndarray.min : equivalent method
angle(z, deg=False)
Return the angle of the complex argument.
Parameters
----------
z : array_like
A complex number or sequence of complex numbers.
deg : bool, optional
Return angle in degrees if True, radians if False (default).
Returns
-------
angle : ndarray or scalar
The counterclockwise angle from the positive real axis on the complex
plane in the range ``(-pi, pi]``, with dtype as numpy.float64.
.. versionchanged:: 1.16.0
This function works on subclasses of ndarray like `ma.array`.
See Also
--------
arctan2
absolute
Notes
-----
This function passes the imaginary and real parts of the argument to
`arctan2` to compute the result; consequently, it follows the convention
of `arctan2` when the magnitude of the argument is zero. See example.
Examples
--------
>>> import numpy as np
>>> np.angle([1.0, 1.0j, 1+1j]) # in radians
array([ 0. , 1.57079633, 0.78539816]) # may vary
>>> np.angle(1+1j, deg=True) # in degrees
45.0
>>> np.angle([0., -0., complex(0., -0.), complex(-0., -0.)]) # convention
array([ 0. , 3.14159265, -0. , -3.14159265])
any(a, axis=None, out=None, keepdims=<no value>, *, where=<no value>)
Test whether any array element along a given axis evaluates to True.
Returns single boolean if `axis` is ``None``
Parameters
----------
a : array_like
Input array or object that can be converted to an array.
axis : None or int or tuple of ints, optional
Axis or axes along which a logical OR reduction is performed.
The default (``axis=None``) is to perform a logical OR over all
the dimensions of the input array. `axis` may be negative, in
which case it counts from the last to the first axis.
.. versionadded:: 1.7.0
If this is a tuple of ints, a reduction is performed on multiple
axes, instead of a single axis or all the axes as before.
out : ndarray, optional
Alternate output array in which to place the result. It must have
the same shape as the expected output and its type is preserved
(e.g., if it is of type float, then it will remain so, returning
1.0 for True and 0.0 for False, regardless of the type of `a`).
See :ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `any` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
where : array_like of bool, optional
Elements to include in checking for any `True` values.
See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.20.0
Returns
-------
any : bool or ndarray
A new boolean or `ndarray` is returned unless `out` is specified,
in which case a reference to `out` is returned.
See Also
--------
ndarray.any : equivalent method
all : Test whether all elements along a given axis evaluate to True.
Notes
-----
Not a Number (NaN), positive infinity and negative infinity evaluate
to `True` because these are not equal to zero.
.. versionchanged:: 2.0
Before NumPy 2.0, ``any`` did not return booleans for object dtype
input arrays.
This behavior is still available via ``np.logical_or.reduce``.
Examples
--------
>>> import numpy as np
>>> np.any([[True, False], [True, True]])
True
>>> np.any([[True, False, True ],
... [False, False, False]], axis=0)
array([ True, False, True])
>>> np.any([-1, 0, 5])
True
>>> np.any([[np.nan], [np.inf]], axis=1, keepdims=True)
array([[ True],
[ True]])
>>> np.any([[True, False], [False, False]], where=[[False], [True]])
False
>>> a = np.array([[1, 0, 0],
... [0, 0, 1],
... [0, 0, 0]])
>>> np.any(a, axis=0)
array([ True, False, True])
>>> np.any(a, axis=1)
array([ True, True, False])
>>> o=np.array(False)
>>> z=np.any([-1, 4, 5], out=o)
>>> z, o
(array(True), array(True))
>>> # Check now that z is a reference to o
>>> z is o
True
>>> id(z), id(o) # identity of z and o # doctest: +SKIP
(191614240, 191614240)
append(arr, values, axis=None)
Append values to the end of an array.
Parameters
----------
arr : array_like
Values are appended to a copy of this array.
values : array_like
These values are appended to a copy of `arr`. It must be of the
correct shape (the same shape as `arr`, excluding `axis`). If
`axis` is not specified, `values` can be any shape and will be
flattened before use.
axis : int, optional
The axis along which `values` are appended. If `axis` is not
given, both `arr` and `values` are flattened before use.
Returns
-------
append : ndarray
A copy of `arr` with `values` appended to `axis`. Note that
`append` does not occur in-place: a new array is allocated and
filled. If `axis` is None, `out` is a flattened array.
See Also
--------
insert : Insert elements into an array.
delete : Delete elements from an array.
Examples
--------
>>> import numpy as np
>>> np.append([1, 2, 3], [[4, 5, 6], [7, 8, 9]])
array([1, 2, 3, ..., 7, 8, 9])
When `axis` is specified, `values` must have the correct shape.
>>> np.append([[1, 2, 3], [4, 5, 6]], [[7, 8, 9]], axis=0)
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>> np.append([[1, 2, 3], [4, 5, 6]], [7, 8, 9], axis=0)
Traceback (most recent call last):
...
ValueError: all the input arrays must have same number of dimensions, but
the array at index 0 has 2 dimension(s) and the array at index 1 has 1
dimension(s)
>>> a = np.array([1, 2], dtype=int)
>>> c = np.append(a, [])
>>> c
array([1., 2.])
>>> c.dtype
float64
Default dtype for empty ndarrays is `float64` thus making the output of dtype
`float64` when appended with dtype `int64`
apply_along_axis(func1d, axis, arr, *args, **kwargs)
Apply a function to 1-D slices along the given axis.
Execute `func1d(a, *args, **kwargs)` where `func1d` operates on 1-D arrays
and `a` is a 1-D slice of `arr` along `axis`.
This is equivalent to (but faster than) the following use of `ndindex` and
`s_`, which sets each of ``ii``, ``jj``, and ``kk`` to a tuple of indices::
Ni, Nk = a.shape[:axis], a.shape[axis+1:]
for ii in ndindex(Ni):
for kk in ndindex(Nk):
f = func1d(arr[ii + s_[:,] + kk])
Nj = f.shape
for jj in ndindex(Nj):
out[ii + jj + kk] = f[jj]
Equivalently, eliminating the inner loop, this can be expressed as::
Ni, Nk = a.shape[:axis], a.shape[axis+1:]
for ii in ndindex(Ni):
for kk in ndindex(Nk):
out[ii + s_[...,] + kk] = func1d(arr[ii + s_[:,] + kk])
Parameters
----------
func1d : function (M,) -> (Nj...)
This function should accept 1-D arrays. It is applied to 1-D
slices of `arr` along the specified axis.
axis : integer
Axis along which `arr` is sliced.
arr : ndarray (Ni..., M, Nk...)
Input array.
args : any
Additional arguments to `func1d`.
kwargs : any
Additional named arguments to `func1d`.
.. versionadded:: 1.9.0
Returns
-------
out : ndarray (Ni..., Nj..., Nk...)
The output array. The shape of `out` is identical to the shape of
`arr`, except along the `axis` dimension. This axis is removed, and
replaced with new dimensions equal to the shape of the return value
of `func1d`. So if `func1d` returns a scalar `out` will have one
fewer dimensions than `arr`.
See Also
--------
apply_over_axes : Apply a function repeatedly over multiple axes.
Examples
--------
>>> import numpy as np
>>> def my_func(a):
... """Average first and last element of a 1-D array"""
... return (a[0] + a[-1]) * 0.5
>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> np.apply_along_axis(my_func, 0, b)
array([4., 5., 6.])
>>> np.apply_along_axis(my_func, 1, b)
array([2., 5., 8.])
For a function that returns a 1D array, the number of dimensions in
`outarr` is the same as `arr`.
>>> b = np.array([[8,1,7], [4,3,9], [5,2,6]])
>>> np.apply_along_axis(sorted, 1, b)
array([[1, 7, 8],
[3, 4, 9],
[2, 5, 6]])
For a function that returns a higher dimensional array, those dimensions
are inserted in place of the `axis` dimension.
>>> b = np.array([[1,2,3], [4,5,6], [7,8,9]])
>>> np.apply_along_axis(np.diag, -1, b)
array([[[1, 0, 0],
[0, 2, 0],
[0, 0, 3]],
[[4, 0, 0],
[0, 5, 0],
[0, 0, 6]],
[[7, 0, 0],
[0, 8, 0],
[0, 0, 9]]])
apply_over_axes(func, a, axes)
Apply a function repeatedly over multiple axes.
`func` is called as `res = func(a, axis)`, where `axis` is the first
element of `axes`. The result `res` of the function call must have
either the same dimensions as `a` or one less dimension. If `res`
has one less dimension than `a`, a dimension is inserted before
`axis`. The call to `func` is then repeated for each axis in `axes`,
with `res` as the first argument.
Parameters
----------
func : function
This function must take two arguments, `func(a, axis)`.
a : array_like
Input array.
axes : array_like
Axes over which `func` is applied; the elements must be integers.
Returns
-------
apply_over_axis : ndarray
The output array. The number of dimensions is the same as `a`,
but the shape can be different. This depends on whether `func`
changes the shape of its output with respect to its input.
See Also
--------
apply_along_axis :
Apply a function to 1-D slices of an array along the given axis.
Notes
-----
This function is equivalent to tuple axis arguments to reorderable ufuncs
with keepdims=True. Tuple axis arguments to ufuncs have been available since
version 1.7.0.
Examples
--------
>>> import numpy as np
>>> a = np.arange(24).reshape(2,3,4)
>>> a
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
Sum over axes 0 and 2. The result has same number of dimensions
as the original array:
>>> np.apply_over_axes(np.sum, a, [0,2])
array([[[ 60],
[ 92],
[124]]])
Tuple axis arguments to ufuncs are equivalent:
>>> np.sum(a, axis=(0,2), keepdims=True)
array([[[ 60],
[ 92],
[124]]])
arange(...)
arange([start,] stop[, step,], dtype=None, *, device=None, like=None)
Return evenly spaced values within a given interval.
``arange`` can be called with a varying number of positional arguments:
* ``arange(stop)``: Values are generated within the half-open interval
``[0, stop)`` (in other words, the interval including `start` but
excluding `stop`).
* ``arange(start, stop)``: Values are generated within the half-open
interval ``[start, stop)``.
* ``arange(start, stop, step)`` Values are generated within the half-open
interval ``[start, stop)``, with spacing between values given by
``step``.
For integer arguments the function is roughly equivalent to the Python
built-in :py:class:`range`, but returns an ndarray rather than a ``range``
instance.
When using a non-integer step, such as 0.1, it is often better to use
`numpy.linspace`.
See the Warning sections below for more information.
Parameters
----------
start : integer or real, optional
Start of interval. The interval includes this value. The default
start value is 0.
stop : integer or real
End of interval. The interval does not include this value, except
in some cases where `step` is not an integer and floating point
round-off affects the length of `out`.
step : integer or real, optional
Spacing between values. For any output `out`, this is the distance
between two adjacent values, ``out[i+1] - out[i]``. The default
step size is 1. If `step` is specified as a position argument,
`start` must also be given.
dtype : dtype, optional
The type of the output array. If `dtype` is not given, infer the data
type from the other input arguments.
device : str, optional
The device on which to place the created array. Default: ``None``.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
arange : ndarray
Array of evenly spaced values.
For floating point arguments, the length of the result is
``ceil((stop - start)/step)``. Because of floating point overflow,
this rule may result in the last element of `out` being greater
than `stop`.
Warnings
--------
The length of the output might not be numerically stable.
Another stability issue is due to the internal implementation of
`numpy.arange`.
The actual step value used to populate the array is
``dtype(start + step) - dtype(start)`` and not `step`. Precision loss
can occur here, due to casting or due to using floating points when
`start` is much larger than `step`. This can lead to unexpected
behaviour. For example::
>>> 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])
In such cases, the use of `numpy.linspace` should be preferred.
The built-in :py:class:`range` generates :std:doc:`Python built-in integers
that have arbitrary size <python:c-api/long>`, while `numpy.arange`
produces `numpy.int32` or `numpy.int64` numbers. This may result in
incorrect results for large integer values::
>>> 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
See Also
--------
numpy.linspace : Evenly spaced numbers with careful handling of endpoints.
numpy.ogrid: Arrays of evenly spaced numbers in N-dimensions.
numpy.mgrid: Grid-shaped arrays of evenly spaced numbers in N-dimensions.
:ref:`how-to-partition`
Examples
--------
>>> 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])
argmax(a, axis=None, out=None, *, keepdims=<no value>)
Returns the indices of the maximum values along an axis.
Parameters
----------
a : array_like
Input array.
axis : int, optional
By default, the index is into the flattened array, otherwise
along the specified axis.
out : array, optional
If provided, the result will be inserted into this array. It should
be of the appropriate shape and dtype.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the array.
.. versionadded:: 1.22.0
Returns
-------
index_array : ndarray of ints
Array of indices into the array. It has the same shape as ``a.shape``
with the dimension along `axis` removed. If `keepdims` is set to True,
then the size of `axis` will be 1 with the resulting array having same
shape as ``a.shape``.
See Also
--------
ndarray.argmax, argmin
amax : The maximum value along a given axis.
unravel_index : Convert a flat index into an index tuple.
take_along_axis : Apply ``np.expand_dims(index_array, axis)``
from argmax to an array as if by calling max.
Notes
-----
In case of multiple occurrences of the maximum values, the indices
corresponding to the first occurrence are returned.
Examples
--------
>>> import numpy as np
>>> a = np.arange(6).reshape(2,3) + 10
>>> a
array([[10, 11, 12],
[13, 14, 15]])
>>> np.argmax(a)
5
>>> np.argmax(a, axis=0)
array([1, 1, 1])
>>> np.argmax(a, axis=1)
array([2, 2])
Indexes of the maximal elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argmax(a, axis=None), a.shape)
>>> ind
(1, 2)
>>> a[ind]
15
>>> b = np.arange(6)
>>> b[1] = 5
>>> b
array([0, 5, 2, 3, 4, 5])
>>> np.argmax(b) # Only the first occurrence is returned.
1
>>> x = np.array([[4,2,3], [1,0,3]])
>>> index_array = np.argmax(x, axis=-1)
>>> # Same as np.amax(x, axis=-1, keepdims=True)
>>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1), axis=-1)
array([[4],
[3]])
>>> # Same as np.amax(x, axis=-1)
>>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1),
... axis=-1).squeeze(axis=-1)
array([4, 3])
Setting `keepdims` to `True`,
>>> x = np.arange(24).reshape((2, 3, 4))
>>> res = np.argmax(x, axis=1, keepdims=True)
>>> res.shape
(2, 1, 4)
argmin(a, axis=None, out=None, *, keepdims=<no value>)
Returns the indices of the minimum values along an axis.
Parameters
----------
a : array_like
Input array.
axis : int, optional
By default, the index is into the flattened array, otherwise
along the specified axis.
out : array, optional
If provided, the result will be inserted into this array. It should
be of the appropriate shape and dtype.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the array.
.. versionadded:: 1.22.0
Returns
-------
index_array : ndarray of ints
Array of indices into the array. It has the same shape as `a.shape`
with the dimension along `axis` removed. If `keepdims` is set to True,
then the size of `axis` will be 1 with the resulting array having same
shape as `a.shape`.
See Also
--------
ndarray.argmin, argmax
amin : The minimum value along a given axis.
unravel_index : Convert a flat index into an index tuple.
take_along_axis : Apply ``np.expand_dims(index_array, axis)``
from argmin to an array as if by calling min.
Notes
-----
In case of multiple occurrences of the minimum values, the indices
corresponding to the first occurrence are returned.
Examples
--------
>>> import numpy as np
>>> a = np.arange(6).reshape(2,3) + 10
>>> a
array([[10, 11, 12],
[13, 14, 15]])
>>> np.argmin(a)
0
>>> np.argmin(a, axis=0)
array([0, 0, 0])
>>> np.argmin(a, axis=1)
array([0, 0])
Indices of the minimum elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argmin(a, axis=None), a.shape)
>>> ind
(0, 0)
>>> a[ind]
10
>>> b = np.arange(6) + 10
>>> b[4] = 10
>>> b
array([10, 11, 12, 13, 10, 15])
>>> np.argmin(b) # Only the first occurrence is returned.
0
>>> x = np.array([[4,2,3], [1,0,3]])
>>> index_array = np.argmin(x, axis=-1)
>>> # Same as np.amin(x, axis=-1, keepdims=True)
>>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1), axis=-1)
array([[2],
[0]])
>>> # Same as np.amax(x, axis=-1)
>>> np.take_along_axis(x, np.expand_dims(index_array, axis=-1),
... axis=-1).squeeze(axis=-1)
array([2, 0])
Setting `keepdims` to `True`,
>>> x = np.arange(24).reshape((2, 3, 4))
>>> res = np.argmin(x, axis=1, keepdims=True)
>>> res.shape
(2, 1, 4)
argpartition(a, kth, axis=-1, kind='introselect', order=None)
Perform an indirect partition along the given axis using the
algorithm specified by the `kind` keyword. It returns an array of
indices of the same shape as `a` that index data along the given
axis in partitioned order.
.. versionadded:: 1.8.0
Parameters
----------
a : array_like
Array to sort.
kth : int or sequence of ints
Element index to partition by. The k-th element will be in its
final sorted position and all smaller elements will be moved
before it and all larger elements behind it. The order of all
elements in the partitions is undefined. If provided with a
sequence of k-th it will partition all of them into their sorted
position at once.
.. deprecated:: 1.22.0
Passing booleans as index is deprecated.
axis : int or None, optional
Axis along which to sort. The default is -1 (the last axis). If
None, the flattened array is used.
kind : {'introselect'}, optional
Selection algorithm. Default is 'introselect'
order : str or list of str, optional
When `a` is an array with fields defined, this argument
specifies which fields to compare first, second, etc. A single
field can be specified as a string, and not all fields need be
specified, but unspecified fields will still be used, in the
order in which they come up in the dtype, to break ties.
Returns
-------
index_array : ndarray, int
Array of indices that partition `a` along the specified axis.
If `a` is one-dimensional, ``a[index_array]`` yields a partitioned `a`.
More generally, ``np.take_along_axis(a, index_array, axis=axis)``
always yields the partitioned `a`, irrespective of dimensionality.
See Also
--------
partition : Describes partition algorithms used.
ndarray.partition : Inplace partition.
argsort : Full indirect sort.
take_along_axis : Apply ``index_array`` from argpartition
to an array as if by calling partition.
Notes
-----
The returned indices are not guaranteed to be sorted according to
the values. Furthermore, the default selection algorithm ``introselect``
is unstable, and hence the returned indices are not guaranteed
to be the earliest/latest occurrence of the element.
`argpartition` works for real/complex inputs with nan values,
see `partition` for notes on the enhanced sort order and
different selection algorithms.
Examples
--------
One dimensional array:
>>> import numpy as np
>>> x = np.array([3, 4, 2, 1])
>>> x[np.argpartition(x, 3)]
array([2, 1, 3, 4]) # may vary
>>> x[np.argpartition(x, (1, 3))]
array([1, 2, 3, 4]) # may vary
>>> x = [3, 4, 2, 1]
>>> np.array(x)[np.argpartition(x, 3)]
array([2, 1, 3, 4]) # may vary
Multi-dimensional array:
>>> x = np.array([[3, 4, 2], [1, 3, 1]])
>>> index_array = np.argpartition(x, kth=1, axis=-1)
>>> # below is the same as np.partition(x, kth=1)
>>> np.take_along_axis(x, index_array, axis=-1)
array([[2, 3, 4],
[1, 1, 3]])
argsort(a, axis=-1, kind=None, order=None, *, stable=None)
Returns the indices that would sort an array.
Perform an indirect sort along the given axis using the algorithm specified
by the `kind` keyword. It returns an array of indices of the same shape as
`a` that index data along the given axis in sorted order.
Parameters
----------
a : array_like
Array to sort.
axis : int or None, optional
Axis along which to sort. The default is -1 (the last axis). If None,
the flattened array is used.
kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
and 'mergesort' use timsort under the covers and, in general, the
actual implementation will vary with data type. The 'mergesort' option
is retained for backwards compatibility.
.. versionchanged:: 1.15.0.
The 'stable' option was added.
order : str or list of str, optional
When `a` is an array with fields defined, this argument specifies
which fields to compare first, second, etc. A single field can
be specified as a string, and not all fields need be specified,
but unspecified fields will still be used, in the order in which
they come up in the dtype, to break ties.
stable : bool, optional
Sort stability. If ``True``, the returned array will maintain
the relative order of ``a`` values which compare as equal.
If ``False`` or ``None``, this is not guaranteed. Internally,
this option selects ``kind='stable'``. Default: ``None``.
.. versionadded:: 2.0.0
Returns
-------
index_array : ndarray, int
Array of indices that sort `a` along the specified `axis`.
If `a` is one-dimensional, ``a[index_array]`` yields a sorted `a`.
More generally, ``np.take_along_axis(a, index_array, axis=axis)``
always yields the sorted `a`, irrespective of dimensionality.
See Also
--------
sort : Describes sorting algorithms used.
lexsort : Indirect stable sort with multiple keys.
ndarray.sort : Inplace sort.
argpartition : Indirect partial sort.
take_along_axis : Apply ``index_array`` from argsort
to an array as if by calling sort.
Notes
-----
See `sort` for notes on the different sorting algorithms.
As of NumPy 1.4.0 `argsort` works with real/complex arrays containing
nan values. The enhanced sort order is documented in `sort`.
Examples
--------
One dimensional array:
>>> import numpy as np
>>> x = np.array([3, 1, 2])
>>> np.argsort(x)
array([1, 2, 0])
Two-dimensional array:
>>> x = np.array([[0, 3], [2, 2]])
>>> x
array([[0, 3],
[2, 2]])
>>> ind = np.argsort(x, axis=0) # sorts along first axis (down)
>>> ind
array([[0, 1],
[1, 0]])
>>> np.take_along_axis(x, ind, axis=0) # same as np.sort(x, axis=0)
array([[0, 2],
[2, 3]])
>>> ind = np.argsort(x, axis=1) # sorts along last axis (across)
>>> ind
array([[0, 1],
[0, 1]])
>>> np.take_along_axis(x, ind, axis=1) # same as np.sort(x, axis=1)
array([[0, 3],
[2, 2]])
Indices of the sorted elements of a N-dimensional array:
>>> ind = np.unravel_index(np.argsort(x, axis=None), x.shape)
>>> ind
(array([0, 1, 1, 0]), array([0, 0, 1, 1]))
>>> x[ind] # same as np.sort(x, axis=None)
array([0, 2, 2, 3])
Sorting with keys:
>>> x = np.array([(1, 0), (0, 1)], dtype=[('x', '<i4'), ('y', '<i4')])
>>> x
array([(1, 0), (0, 1)],
dtype=[('x', '<i4'), ('y', '<i4')])
>>> np.argsort(x, order=('x','y'))
array([1, 0])
>>> np.argsort(x, order=('y','x'))
array([0, 1])
argwhere(a)
Find the indices of array elements that are non-zero, grouped by element.
Parameters
----------
a : array_like
Input data.
Returns
-------
index_array : (N, a.ndim) ndarray
Indices of elements that are non-zero. Indices are grouped by element.
This array will have shape ``(N, a.ndim)`` where ``N`` is the number of
non-zero items.
See Also
--------
where, nonzero
Notes
-----
``np.argwhere(a)`` is almost the same as ``np.transpose(np.nonzero(a))``,
but produces a result of the correct shape for a 0D array.
The output of ``argwhere`` is not suitable for indexing arrays.
For this purpose use ``nonzero(a)`` instead.
Examples
--------
>>> import numpy as np
>>> x = np.arange(6).reshape(2,3)
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> np.argwhere(x>1)
array([[0, 2],
[1, 0],
[1, 1],
[1, 2]])
around(a, decimals=0, out=None)
Round an array to the given number of decimals.
`around` is an alias of `~numpy.round`.
See Also
--------
ndarray.round : equivalent method
round : alias for this function
ceil, fix, floor, rint, trunc
array(...)
array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0,
like=None)
Create an array.
Parameters
----------
object : array_like
An array, any object exposing the array interface, an object whose
``__array__`` method returns an array, or any (nested) sequence.
If object is a scalar, a 0-dimensional array containing object is
returned.
dtype : data-type, optional
The desired data-type for the array. If not given, NumPy will try to use
a default ``dtype`` that can represent the values (by applying promotion
rules when necessary.)
copy : bool, optional
If ``True`` (default), then the array data is copied. If ``None``,
a copy will only be made if ``__array__`` returns a copy, if obj is
a nested sequence, or if a copy is needed to satisfy any of the other
requirements (``dtype``, ``order``, etc.). Note that any copy of
the data is shallow, i.e., for arrays with object dtype, the new
array will point to the same objects. See Examples for `ndarray.copy`.
For ``False`` it raises a ``ValueError`` if a copy cannot be avoided.
Default: ``True``.
order : {'K', 'A', 'C', 'F'}, optional
Specify the memory layout of the array. If object is not an array, the
newly created array will be in C order (row major) unless 'F' is
specified, in which case it will be in Fortran order (column major).
If object is an array the following holds.
===== ========= ===================================================
order no copy copy=True
===== ========= ===================================================
'K' unchanged F & C order preserved, otherwise most similar order
'A' unchanged F order if input is F and not C, otherwise C order
'C' C order C order
'F' F order F order
===== ========= ===================================================
When ``copy=None`` and a copy is made for other reasons, the result is
the same as if ``copy=True``, with some exceptions for 'A', see the
Notes section. The default order is 'K'.
subok : bool, optional
If True, then sub-classes will be passed-through, otherwise
the returned array will be forced to be a base-class array (default).
ndmin : int, optional
Specifies the minimum number of dimensions that the resulting
array should have. Ones will be prepended to the shape as
needed to meet this requirement.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
An array object satisfying the specified requirements.
See Also
--------
empty_like : Return an empty array with shape and type of input.
ones_like : Return an array of ones with shape and type of input.
zeros_like : Return an array of zeros with shape and type of input.
full_like : Return a new array with shape of input filled with value.
empty : Return a new uninitialized array.
ones : Return a new array setting values to one.
zeros : Return a new array setting values to zero.
full : Return a new array of given shape filled with value.
copy: Return an array copy of the given object.
Notes
-----
When order is 'A' and ``object`` is an array in neither 'C' nor 'F' order,
and a copy is forced by a change in dtype, then the order of the result is
not necessarily 'C' as expected. This is likely a bug.
Examples
--------
>>> import numpy as np
>>> np.array([1, 2, 3])
array([1, 2, 3])
Upcasting:
>>> np.array([1, 2, 3.0])
array([ 1., 2., 3.])
More than one dimension:
>>> np.array([[1, 2], [3, 4]])
array([[1, 2],
[3, 4]])
Minimum dimensions 2:
>>> np.array([1, 2, 3], ndmin=2)
array([[1, 2, 3]])
Type provided:
>>> np.array([1, 2, 3], dtype=complex)
array([ 1.+0.j, 2.+0.j, 3.+0.j])
Data-type consisting of more than one element:
>>> x = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i4')])
>>> x['a']
array([1, 3])
Creating an array from sub-classes:
>>> np.array(np.asmatrix('1 2; 3 4'))
array([[1, 2],
[3, 4]])
>>> np.array(np.asmatrix('1 2; 3 4'), subok=True)
matrix([[1, 2],
[3, 4]])
array2string(a, max_line_width=None, precision=None, suppress_small=None, separator=' ', prefix='', style=<no value>, formatter=None, threshold=None, edgeitems=None, sign=None, floatmode=None, suffix='', *, legacy=None)
Return a string representation of an array.
Parameters
----------
a : ndarray
Input array.
max_line_width : int, optional
Inserts newlines if text is longer than `max_line_width`.
Defaults to ``numpy.get_printoptions()['linewidth']``.
precision : int or None, optional
Floating point precision.
Defaults to ``numpy.get_printoptions()['precision']``.
suppress_small : bool, optional
Represent numbers "very close" to zero as zero; default is False.
Very close is defined by precision: if the precision is 8, e.g.,
numbers smaller (in absolute value) than 5e-9 are represented as
zero.
Defaults to ``numpy.get_printoptions()['suppress']``.
separator : str, optional
Inserted between elements.
prefix : str, optional
suffix : str, optional
The length of the prefix and suffix strings are used to respectively
align and wrap the output. An array is typically printed as::
prefix + array2string(a) + suffix
The output is left-padded by the length of the prefix string, and
wrapping is forced at the column ``max_line_width - len(suffix)``.
It should be noted that the content of prefix and suffix strings are
not included in the output.
style : _NoValue, optional
Has no effect, do not use.
.. deprecated:: 1.14.0
formatter : dict of callables, optional
If not None, the keys should indicate the type(s) that the respective
formatting function applies to. Callables should return a string.
Types that are not specified (by their corresponding keys) are handled
by the default formatters. Individual types for which a formatter
can be set are:
- 'bool'
- 'int'
- 'timedelta' : a `numpy.timedelta64`
- 'datetime' : a `numpy.datetime64`
- 'float'
- 'longfloat' : 128-bit floats
- 'complexfloat'
- 'longcomplexfloat' : composed of two 128-bit floats
- 'void' : type `numpy.void`
- 'numpystr' : types `numpy.bytes_` and `numpy.str_`
Other keys that can be used to set a group of types at once are:
- 'all' : sets all types
- 'int_kind' : sets 'int'
- 'float_kind' : sets 'float' and 'longfloat'
- 'complex_kind' : sets 'complexfloat' and 'longcomplexfloat'
- 'str_kind' : sets 'numpystr'
threshold : int, optional
Total number of array elements which trigger summarization
rather than full repr.
Defaults to ``numpy.get_printoptions()['threshold']``.
edgeitems : int, optional
Number of array items in summary at beginning and end of
each dimension.
Defaults to ``numpy.get_printoptions()['edgeitems']``.
sign : string, either '-', '+', or ' ', optional
Controls printing of the sign of floating-point types. If '+', always
print the sign of positive values. If ' ', always prints a space
(whitespace character) in the sign position of positive values. If
'-', omit the sign character of positive values.
Defaults to ``numpy.get_printoptions()['sign']``.
.. versionchanged:: 2.0
The sign parameter can now be an integer type, previously
types were floating-point types.
floatmode : str, optional
Controls the interpretation of the `precision` option for
floating-point types.
Defaults to ``numpy.get_printoptions()['floatmode']``.
Can take the following values:
- 'fixed': Always print exactly `precision` fractional digits,
even if this would print more or fewer digits than
necessary to specify the value uniquely.
- 'unique': Print the minimum number of fractional digits necessary
to represent each value uniquely. Different elements may
have a different number of digits. The value of the
`precision` option is ignored.
- 'maxprec': Print at most `precision` fractional digits, but if
an element can be uniquely represented with fewer digits
only print it with that many.
- 'maxprec_equal': Print at most `precision` fractional digits,
but if every element in the array can be uniquely
represented with an equal number of fewer digits, use that
many digits for all elements.
legacy : string or `False`, optional
If set to the string ``'1.13'`` enables 1.13 legacy printing mode. This
approximates numpy 1.13 print output by including a space in the sign
position of floats and different behavior for 0d arrays. If set to
`False`, disables legacy mode. Unrecognized strings will be ignored
with a warning for forward compatibility.
.. versionadded:: 1.14.0
Returns
-------
array_str : str
String representation of the array.
Raises
------
TypeError
if a callable in `formatter` does not return a string.
See Also
--------
array_str, array_repr, set_printoptions, get_printoptions
Notes
-----
If a formatter is specified for a certain type, the `precision` keyword is
ignored for that type.
This is a very flexible function; `array_repr` and `array_str` are using
`array2string` internally so keywords with the same name should work
identically in all three functions.
Examples
--------
>>> import numpy as np
>>> x = np.array([1e-16,1,2,3])
>>> np.array2string(x, precision=2, separator=',',
... suppress_small=True)
'[0.,1.,2.,3.]'
>>> x = np.arange(3.)
>>> np.array2string(x, formatter={'float_kind':lambda x: "%.2f" % x})
'[0.00 1.00 2.00]'
>>> x = np.arange(3)
>>> np.array2string(x, formatter={'int':lambda x: hex(x)})
'[0x0 0x1 0x2]'
array_equal(a1, a2, equal_nan=False)
True if two arrays have the same shape and elements, False otherwise.
Parameters
----------
a1, a2 : array_like
Input arrays.
equal_nan : bool
Whether to compare NaN's as equal. If the dtype of a1 and a2 is
complex, values will be considered equal if either the real or the
imaginary component of a given value is ``nan``.
.. versionadded:: 1.19.0
Returns
-------
b : bool
Returns True if the arrays are equal.
See Also
--------
allclose: Returns True if two arrays are element-wise equal within a
tolerance.
array_equiv: Returns True if input arrays are shape consistent and all
elements equal.
Examples
--------
>>> import numpy as np
>>> np.array_equal([1, 2], [1, 2])
True
>>> np.array_equal(np.array([1, 2]), np.array([1, 2]))
True
>>> np.array_equal([1, 2], [1, 2, 3])
False
>>> np.array_equal([1, 2], [1, 4])
False
>>> a = np.array([1, np.nan])
>>> np.array_equal(a, a)
False
>>> np.array_equal(a, a, equal_nan=True)
True
When ``equal_nan`` is True, complex values with nan components are
considered equal if either the real *or* the imaginary components are nan.
>>> a = np.array([1 + 1j])
>>> b = a.copy()
>>> a.real = np.nan
>>> b.imag = np.nan
>>> np.array_equal(a, b, equal_nan=True)
True
array_equiv(a1, a2)
Returns True if input arrays are shape consistent and all elements equal.
Shape consistent means they are either the same shape, or one input array
can be broadcasted to create the same shape as the other one.
Parameters
----------
a1, a2 : array_like
Input arrays.
Returns
-------
out : bool
True if equivalent, False otherwise.
Examples
--------
>>> import numpy as np
>>> np.array_equiv([1, 2], [1, 2])
True
>>> np.array_equiv([1, 2], [1, 3])
False
Showing the shape equivalence:
>>> np.array_equiv([1, 2], [[1, 2], [1, 2]])
True
>>> np.array_equiv([1, 2], [[1, 2, 1, 2], [1, 2, 1, 2]])
False
>>> np.array_equiv([1, 2], [[1, 2], [1, 3]])
False
array_repr(arr, max_line_width=None, precision=None, suppress_small=None)
Return the string representation of an array.
Parameters
----------
arr : ndarray
Input array.
max_line_width : int, optional
Inserts newlines if text is longer than `max_line_width`.
Defaults to ``numpy.get_printoptions()['linewidth']``.
precision : int, optional
Floating point precision.
Defaults to ``numpy.get_printoptions()['precision']``.
suppress_small : bool, optional
Represent numbers "very close" to zero as zero; default is False.
Very close is defined by precision: if the precision is 8, e.g.,
numbers smaller (in absolute value) than 5e-9 are represented as
zero.
Defaults to ``numpy.get_printoptions()['suppress']``.
Returns
-------
string : str
The string representation of an array.
See Also
--------
array_str, array2string, set_printoptions
Examples
--------
>>> import numpy as np
>>> np.array_repr(np.array([1,2]))
'array([1, 2])'
>>> np.array_repr(np.ma.array([0.]))
'MaskedArray([0.])'
>>> np.array_repr(np.array([], np.int32))
'array([], dtype=int32)'
>>> x = np.array([1e-6, 4e-7, 2, 3])
>>> np.array_repr(x, precision=6, suppress_small=True)
'array([0.000001, 0. , 2. , 3. ])'
array_split(ary, indices_or_sections, axis=0)
Split an array into multiple sub-arrays.
Please refer to the ``split`` documentation. The only difference
between these functions is that ``array_split`` allows
`indices_or_sections` to be an integer that does *not* equally
divide the axis. For an array of length l that should be split
into n sections, it returns l % n sub-arrays of size l//n + 1
and the rest of size l//n.
See Also
--------
split : Split array into multiple sub-arrays of equal size.
Examples
--------
>>> import numpy as np
>>> x = np.arange(8.0)
>>> np.array_split(x, 3)
[array([0., 1., 2.]), array([3., 4., 5.]), array([6., 7.])]
>>> x = np.arange(9)
>>> np.array_split(x, 4)
[array([0, 1, 2]), array([3, 4]), array([5, 6]), array([7, 8])]
array_str(a, max_line_width=None, precision=None, suppress_small=None)
Return a string representation of the data in an array.
The data in the array is returned as a single string. This function is
similar to `array_repr`, the difference being that `array_repr` also
returns information on the kind of array and its data type.
Parameters
----------
a : ndarray
Input array.
max_line_width : int, optional
Inserts newlines if text is longer than `max_line_width`.
Defaults to ``numpy.get_printoptions()['linewidth']``.
precision : int, optional
Floating point precision.
Defaults to ``numpy.get_printoptions()['precision']``.
suppress_small : bool, optional
Represent numbers "very close" to zero as zero; default is False.
Very close is defined by precision: if the precision is 8, e.g.,
numbers smaller (in absolute value) than 5e-9 are represented as
zero.
Defaults to ``numpy.get_printoptions()['suppress']``.
See Also
--------
array2string, array_repr, set_printoptions
Examples
--------
>>> import numpy as np
>>> np.array_str(np.arange(3))
'[0 1 2]'
asanyarray(...)
asanyarray(a, dtype=None, order=None, *, like=None)
Convert the input to an ndarray, but pass ndarray subclasses through.
Parameters
----------
a : array_like
Input data, in any form that can be converted to an array. This
includes scalars, lists, lists of tuples, tuples, tuples of tuples,
tuples of lists, and ndarrays.
dtype : data-type, optional
By default, the data-type is inferred from the input data.
order : {'C', 'F', 'A', 'K'}, optional
Memory layout. 'A' and 'K' depend on the order of input array a.
'C' row-major (C-style),
'F' column-major (Fortran-style) memory representation.
'A' (any) means 'F' if `a` is Fortran contiguous, 'C' otherwise
'K' (keep) preserve input order
Defaults to 'C'.
device : str, optional
The device on which to place the created array. Default: ``None``.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.1.0
copy : bool, optional
If ``True``, then the object is copied. If ``None`` then the object is
copied only if needed, i.e. if ``__array__`` returns a copy, if obj
is a nested sequence, or if a copy is needed to satisfy any of
the other requirements (``dtype``, ``order``, etc.).
For ``False`` it raises a ``ValueError`` if a copy cannot be avoided.
Default: ``None``.
.. versionadded:: 2.1.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray or an ndarray subclass
Array interpretation of `a`. If `a` is an ndarray or a subclass
of ndarray, it is returned as-is and no copy is performed.
See Also
--------
asarray : Similar function which always returns ndarrays.
ascontiguousarray : Convert input to a contiguous array.
asfortranarray : Convert input to an ndarray with column-major
memory order.
asarray_chkfinite : Similar function which checks input for NaNs and
Infs.
fromiter : Create an array from an iterator.
fromfunction : Construct an array by executing a function on grid
positions.
Examples
--------
Convert a list into an array:
>>> a = [1, 2]
>>> import numpy as np
>>> np.asanyarray(a)
array([1, 2])
Instances of `ndarray` subclasses are passed through as-is:
>>> a = np.array([(1., 2), (3., 4)], dtype='f4,i4').view(np.recarray)
>>> np.asanyarray(a) is a
True
asarray(...)
asarray(a, dtype=None, order=None, *, device=None, copy=None, like=None)
Convert the input to an array.
Parameters
----------
a : array_like
Input data, in any form that can be converted to an array. This
includes lists, lists of tuples, tuples, tuples of tuples, tuples
of lists and ndarrays.
dtype : data-type, optional
By default, the data-type is inferred from the input data.
order : {'C', 'F', 'A', 'K'}, optional
Memory layout. 'A' and 'K' depend on the order of input array a.
'C' row-major (C-style),
'F' column-major (Fortran-style) memory representation.
'A' (any) means 'F' if `a` is Fortran contiguous, 'C' otherwise
'K' (keep) preserve input order
Defaults to 'K'.
device : str, optional
The device on which to place the created array. Default: ``None``.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
copy : bool, optional
If ``True``, then the object is copied. If ``None`` then the object is
copied only if needed, i.e. if ``__array__`` returns a copy, if obj
is a nested sequence, or if a copy is needed to satisfy any of
the other requirements (``dtype``, ``order``, etc.).
For ``False`` it raises a ``ValueError`` if a copy cannot be avoided.
Default: ``None``.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array interpretation of ``a``. No copy is performed if the input
is already an ndarray with matching dtype and order. If ``a`` is a
subclass of ndarray, a base class ndarray is returned.
See Also
--------
asanyarray : Similar function which passes through subclasses.
ascontiguousarray : Convert input to a contiguous array.
asfortranarray : Convert input to an ndarray with column-major
memory order.
asarray_chkfinite : Similar function which checks input for NaNs and Infs.
fromiter : Create an array from an iterator.
fromfunction : Construct an array by executing a function on grid
positions.
Examples
--------
Convert a list into an array:
>>> a = [1, 2]
>>> import numpy as np
>>> np.asarray(a)
array([1, 2])
Existing arrays are not copied:
>>> a = np.array([1, 2])
>>> np.asarray(a) is a
True
If `dtype` is set, array is copied only if dtype does not match:
>>> a = np.array([1, 2], dtype=np.float32)
>>> np.shares_memory(np.asarray(a, dtype=np.float32), a)
True
>>> np.shares_memory(np.asarray(a, dtype=np.float64), a)
False
Contrary to `asanyarray`, ndarray subclasses are not passed through:
>>> issubclass(np.recarray, np.ndarray)
True
>>> a = np.array([(1., 2), (3., 4)], dtype='f4,i4').view(np.recarray)
>>> np.asarray(a) is a
False
>>> np.asanyarray(a) is a
True
asarray_chkfinite(a, dtype=None, order=None)
Convert the input to an array, checking for NaNs or Infs.
Parameters
----------
a : array_like
Input data, in any form that can be converted to an array. This
includes lists, lists of tuples, tuples, tuples of tuples, tuples
of lists and ndarrays. Success requires no NaNs or Infs.
dtype : data-type, optional
By default, the data-type is inferred from the input data.
order : {'C', 'F', 'A', 'K'}, optional
Memory layout. 'A' and 'K' depend on the order of input array a.
'C' row-major (C-style),
'F' column-major (Fortran-style) memory representation.
'A' (any) means 'F' if `a` is Fortran contiguous, 'C' otherwise
'K' (keep) preserve input order
Defaults to 'C'.
Returns
-------
out : ndarray
Array interpretation of `a`. No copy is performed if the input
is already an ndarray. If `a` is a subclass of ndarray, a base
class ndarray is returned.
Raises
------
ValueError
Raises ValueError if `a` contains NaN (Not a Number) or Inf (Infinity).
See Also
--------
asarray : Create and array.
asanyarray : Similar function which passes through subclasses.
ascontiguousarray : Convert input to a contiguous array.
asfortranarray : Convert input to an ndarray with column-major
memory order.
fromiter : Create an array from an iterator.
fromfunction : Construct an array by executing a function on grid
positions.
Examples
--------
>>> import numpy as np
Convert a list into an array. If all elements are finite, then
``asarray_chkfinite`` is identical to ``asarray``.
>>> a = [1, 2]
>>> np.asarray_chkfinite(a, dtype=float)
array([1., 2.])
Raises ValueError if array_like contains Nans or Infs.
>>> a = [1, 2, np.inf]
>>> try:
... np.asarray_chkfinite(a)
... except ValueError:
... print('ValueError')
...
ValueError
ascontiguousarray(...)
ascontiguousarray(a, dtype=None, *, like=None)
Return a contiguous array (ndim >= 1) in memory (C order).
Parameters
----------
a : array_like
Input array.
dtype : str or dtype object, optional
Data-type of returned array.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Contiguous array of same shape and content as `a`, with type `dtype`
if specified.
See Also
--------
asfortranarray : Convert input to an ndarray with column-major
memory order.
require : Return an ndarray that satisfies requirements.
ndarray.flags : Information about the memory layout of the array.
Examples
--------
Starting with a Fortran-contiguous array:
>>> import numpy as np
>>> x = np.ones((2, 3), order='F')
>>> x.flags['F_CONTIGUOUS']
True
Calling ``ascontiguousarray`` makes a C-contiguous copy:
>>> y = np.ascontiguousarray(x)
>>> y.flags['C_CONTIGUOUS']
True
>>> np.may_share_memory(x, y)
False
Now, starting with a C-contiguous array:
>>> x = np.ones((2, 3), order='C')
>>> x.flags['C_CONTIGUOUS']
True
Then, calling ``ascontiguousarray`` returns the same object:
>>> y = np.ascontiguousarray(x)
>>> x is y
True
Note: This function returns an array with at least one-dimension (1-d)
so it will not preserve 0-d arrays.
asfortranarray(...)
asfortranarray(a, dtype=None, *, like=None)
Return an array (ndim >= 1) laid out in Fortran order in memory.
Parameters
----------
a : array_like
Input array.
dtype : str or dtype object, optional
By default, the data-type is inferred from the input data.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
The input `a` in Fortran, or column-major, order.
See Also
--------
ascontiguousarray : Convert input to a contiguous (C order) array.
asanyarray : Convert input to an ndarray with either row or
column-major memory order.
require : Return an ndarray that satisfies requirements.
ndarray.flags : Information about the memory layout of the array.
Examples
--------
Starting with a C-contiguous array:
>>> import numpy as np
>>> x = np.ones((2, 3), order='C')
>>> x.flags['C_CONTIGUOUS']
True
Calling ``asfortranarray`` makes a Fortran-contiguous copy:
>>> y = np.asfortranarray(x)
>>> y.flags['F_CONTIGUOUS']
True
>>> np.may_share_memory(x, y)
False
Now, starting with a Fortran-contiguous array:
>>> x = np.ones((2, 3), order='F')
>>> x.flags['F_CONTIGUOUS']
True
Then, calling ``asfortranarray`` returns the same object:
>>> y = np.asfortranarray(x)
>>> x is y
True
Note: This function returns an array with at least one-dimension (1-d)
so it will not preserve 0-d arrays.
asmatrix(data, dtype=None)
Interpret the input as a matrix.
Unlike `matrix`, `asmatrix` does not make a copy if the input is already
a matrix or an ndarray. Equivalent to ``matrix(data, copy=False)``.
Parameters
----------
data : array_like
Input data.
dtype : data-type
Data-type of the output matrix.
Returns
-------
mat : matrix
`data` interpreted as a matrix.
Examples
--------
>>> import numpy as np
>>> x = np.array([[1, 2], [3, 4]])
>>> m = np.asmatrix(x)
>>> x[0,0] = 5
>>> m
matrix([[5, 2],
[3, 4]])
astype(x, dtype, /, *, copy=True, device=None)
Copies an array to a specified data type.
This function is an Array API compatible alternative to
`numpy.ndarray.astype`.
Parameters
----------
x : ndarray
Input NumPy array to cast. ``array_likes`` are explicitly not
supported here.
dtype : dtype
Data type of the result.
copy : bool, optional
Specifies whether to copy an array when the specified dtype matches
the data type of the input array ``x``. If ``True``, a newly allocated
array must always be returned. If ``False`` and the specified dtype
matches the data type of the input array, the input array must be
returned; otherwise, a newly allocated array must be returned.
Defaults to ``True``.
device : str, optional
The device on which to place the returned array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.1.0
Returns
-------
out : ndarray
An array having the specified data type.
See Also
--------
ndarray.astype
Examples
--------
>>> import numpy as np
>>> arr = np.array([1, 2, 3]); arr
array([1, 2, 3])
>>> np.astype(arr, np.float64)
array([1., 2., 3.])
Non-copy case:
>>> arr = np.array([1, 2, 3])
>>> arr_noncpy = np.astype(arr, arr.dtype, copy=False)
>>> np.shares_memory(arr, arr_noncpy)
True
atleast_1d(*arys)
Convert inputs to arrays with at least one dimension.
Scalar inputs are converted to 1-dimensional arrays, whilst
higher-dimensional inputs are preserved.
Parameters
----------
arys1, arys2, ... : array_like
One or more input arrays.
Returns
-------
ret : ndarray
An array, or tuple of arrays, each with ``a.ndim >= 1``.
Copies are made only if necessary.
See Also
--------
atleast_2d, atleast_3d
Examples
--------
>>> import numpy as np
>>> np.atleast_1d(1.0)
array([1.])
>>> x = np.arange(9.0).reshape(3,3)
>>> np.atleast_1d(x)
array([[0., 1., 2.],
[3., 4., 5.],
[6., 7., 8.]])
>>> np.atleast_1d(x) is x
True
>>> np.atleast_1d(1, [3, 4])
(array([1]), array([3, 4]))
atleast_2d(*arys)
View inputs as arrays with at least two dimensions.
Parameters
----------
arys1, arys2, ... : array_like
One or more array-like sequences. Non-array inputs are converted
to arrays. Arrays that already have two or more dimensions are
preserved.
Returns
-------
res, res2, ... : ndarray
An array, or tuple of arrays, each with ``a.ndim >= 2``.
Copies are avoided where possible, and views with two or more
dimensions are returned.
See Also
--------
atleast_1d, atleast_3d
Examples
--------
>>> import numpy as np
>>> np.atleast_2d(3.0)
array([[3.]])
>>> x = np.arange(3.0)
>>> np.atleast_2d(x)
array([[0., 1., 2.]])
>>> np.atleast_2d(x).base is x
True
>>> np.atleast_2d(1, [1, 2], [[1, 2]])
(array([[1]]), array([[1, 2]]), array([[1, 2]]))
atleast_3d(*arys)
View inputs as arrays with at least three dimensions.
Parameters
----------
arys1, arys2, ... : array_like
One or more array-like sequences. Non-array inputs are converted to
arrays. Arrays that already have three or more dimensions are
preserved.
Returns
-------
res1, res2, ... : ndarray
An array, or tuple of arrays, each with ``a.ndim >= 3``. Copies are
avoided where possible, and views with three or more dimensions are
returned. For example, a 1-D array of shape ``(N,)`` becomes a view
of shape ``(1, N, 1)``, and a 2-D array of shape ``(M, N)`` becomes a
view of shape ``(M, N, 1)``.
See Also
--------
atleast_1d, atleast_2d
Examples
--------
>>> import numpy as np
>>> np.atleast_3d(3.0)
array([[[3.]]])
>>> x = np.arange(3.0)
>>> np.atleast_3d(x).shape
(1, 3, 1)
>>> x = np.arange(12.0).reshape(4,3)
>>> np.atleast_3d(x).shape
(4, 3, 1)
>>> np.atleast_3d(x).base is x.base # x is a reshape, so not base itself
True
>>> for arr in np.atleast_3d([1, 2], [[1, 2]], [[[1, 2]]]):
... print(arr, arr.shape) # doctest: +SKIP
...
[[[1]
[2]]] (1, 2, 1)
[[[1]
[2]]] (1, 2, 1)
[[[1 2]]] (1, 1, 2)
average(a, axis=None, weights=None, returned=False, *, keepdims=<no value>)
Compute the weighted average along the specified axis.
Parameters
----------
a : array_like
Array containing data to be averaged. If `a` is not an array, a
conversion is attempted.
axis : None or int or tuple of ints, optional
Axis or axes along which to average `a`. The default,
`axis=None`, will average over all of the elements of the input array.
If axis is negative it counts from the last to the first axis.
.. versionadded:: 1.7.0
If axis is a tuple of ints, averaging is performed on all of the axes
specified in the tuple instead of a single axis or all the axes as
before.
weights : array_like, optional
An array of weights associated with the values in `a`. Each value in
`a` contributes to the average according to its associated weight.
The array of weights must be the same shape as `a` if no axis is
specified, otherwise the weights must have dimensions and shape
consistent with `a` along the specified axis.
If `weights=None`, then all data in `a` are assumed to have a
weight equal to one.
The calculation is::
avg = sum(a * weights) / sum(weights)
where the sum is over all included elements.
The only constraint on the values of `weights` is that `sum(weights)`
must not be 0.
returned : bool, optional
Default is `False`. If `True`, the tuple (`average`, `sum_of_weights`)
is returned, otherwise only the average is returned.
If `weights=None`, `sum_of_weights` is equivalent to the number of
elements over which the average is taken.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
*Note:* `keepdims` will not work with instances of `numpy.matrix`
or other classes whose methods do not support `keepdims`.
.. versionadded:: 1.23.0
Returns
-------
retval, [sum_of_weights] : array_type or double
Return the average along the specified axis. When `returned` is `True`,
return a tuple with the average as the first element and the sum
of the weights as the second element. `sum_of_weights` is of the
same type as `retval`. The result dtype follows a general pattern.
If `weights` is None, the result dtype will be that of `a` , or ``float64``
if `a` is integral. Otherwise, if `weights` is not None and `a` is non-
integral, the result type will be the type of lowest precision capable of
representing values of both `a` and `weights`. If `a` happens to be
integral, the previous rules still applies but the result dtype will
at least be ``float64``.
Raises
------
ZeroDivisionError
When all weights along axis are zero. See `numpy.ma.average` for a
version robust to this type of error.
TypeError
When `weights` does not have the same shape as `a`, and `axis=None`.
ValueError
When `weights` does not have dimensions and shape consistent with `a`
along specified `axis`.
See Also
--------
mean
ma.average : average for masked arrays -- useful if your data contains
"missing" values
numpy.result_type : Returns the type that results from applying the
numpy type promotion rules to the arguments.
Examples
--------
>>> import numpy as np
>>> data = np.arange(1, 5)
>>> data
array([1, 2, 3, 4])
>>> np.average(data)
2.5
>>> np.average(np.arange(1, 11), weights=np.arange(10, 0, -1))
4.0
>>> data = np.arange(6).reshape((3, 2))
>>> data
array([[0, 1],
[2, 3],
[4, 5]])
>>> np.average(data, axis=1, weights=[1./4, 3./4])
array([0.75, 2.75, 4.75])
>>> np.average(data, weights=[1./4, 3./4])
Traceback (most recent call last):
...
TypeError: Axis must be specified when shapes of a and weights differ.
With ``keepdims=True``, the following result has shape (3, 1).
>>> np.average(data, axis=1, keepdims=True)
array([[0.5],
[2.5],
[4.5]])
>>> data = np.arange(8).reshape((2, 2, 2))
>>> data
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> np.average(data, axis=(0, 1), weights=[[1./4, 3./4], [1., 1./2]])
array([3.4, 4.4])
>>> np.average(data, axis=0, weights=[[1./4, 3./4], [1., 1./2]])
Traceback (most recent call last):
...
ValueError: Shape of weights must be consistent
with shape of a along specified axis.
bartlett(M)
Return the Bartlett window.
The Bartlett window is very similar to a triangular window, except
that the end points are at zero. It is often used in signal
processing for tapering a signal, without generating too much
ripple in the frequency domain.
Parameters
----------
M : int
Number of points in the output window. If zero or less, an
empty array is returned.
Returns
-------
out : array
The triangular window, with the maximum value normalized to one
(the value one appears only if the number of samples is odd), with
the first and last samples equal to zero.
See Also
--------
blackman, hamming, hanning, kaiser
Notes
-----
The Bartlett window is defined as
.. math:: w(n) = \frac{2}{M-1} \left(
\frac{M-1}{2} - \left|n - \frac{M-1}{2}\right|
\right)
Most references to the Bartlett window come from the signal processing
literature, where it is used as one of many windowing functions for
smoothing values. Note that convolution with this window produces linear
interpolation. It is also known as an apodization (which means "removing
the foot", i.e. smoothing discontinuities at the beginning and end of the
sampled signal) or tapering function. The Fourier transform of the
Bartlett window is the product of two sinc functions. Note the excellent
discussion in Kanasewich [2]_.
References
----------
.. [1] M.S. Bartlett, "Periodogram Analysis and Continuous Spectra",
Biometrika 37, 1-16, 1950.
.. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics",
The University of Alberta Press, 1975, pp. 109-110.
.. [3] A.V. Oppenheim and R.W. Schafer, "Discrete-Time Signal
Processing", Prentice-Hall, 1999, pp. 468-471.
.. [4] Wikipedia, "Window function",
https://en.wikipedia.org/wiki/Window_function
.. [5] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
"Numerical Recipes", Cambridge University Press, 1986, page 429.
Examples
--------
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> np.bartlett(12)
array([ 0. , 0.18181818, 0.36363636, 0.54545455, 0.72727273, # may vary
0.90909091, 0.90909091, 0.72727273, 0.54545455, 0.36363636,
0.18181818, 0. ])
Plot the window and its frequency response (requires SciPy and matplotlib).
.. plot::
:include-source:
import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.bartlett(51)
plt.plot(window)
plt.title("Bartlett window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
with np.errstate(divide='ignore', invalid='ignore'):
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of Bartlett window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
base_repr(number, base=2, padding=0)
Return a string representation of a number in the given base system.
Parameters
----------
number : int
The value to convert. Positive and negative values are handled.
base : int, optional
Convert `number` to the `base` number system. The valid range is 2-36,
the default value is 2.
padding : int, optional
Number of zeros padded on the left. Default is 0 (no padding).
Returns
-------
out : str
String representation of `number` in `base` system.
See Also
--------
binary_repr : Faster version of `base_repr` for base 2.
Examples
--------
>>> import numpy as np
>>> np.base_repr(5)
'101'
>>> np.base_repr(6, 5)
'11'
>>> np.base_repr(7, base=5, padding=3)
'00012'
>>> np.base_repr(10, base=16)
'A'
>>> np.base_repr(32, base=16)
'20'
binary_repr(num, width=None)
Return the binary representation of the input number as a string.
For negative numbers, if width is not given, a minus sign is added to the
front. If width is given, the two's complement of the number is
returned, with respect to that width.
In a two's-complement system negative numbers are represented by the two's
complement of the absolute value. This is the most common method of
representing signed integers on computers [1]_. A N-bit two's-complement
system can represent every integer in the range
:math:`-2^{N-1}` to :math:`+2^{N-1}-1`.
Parameters
----------
num : int
Only an integer decimal number can be used.
width : int, optional
The length of the returned string if `num` is positive, or the length
of the two's complement if `num` is negative, provided that `width` is
at least a sufficient number of bits for `num` to be represented in
the designated form. If the `width` value is insufficient, an error is
raised.
Returns
-------
bin : str
Binary representation of `num` or two's complement of `num`.
See Also
--------
base_repr: Return a string representation of a number in the given base
system.
bin: Python's built-in binary representation generator of an integer.
Notes
-----
`binary_repr` is equivalent to using `base_repr` with base 2, but about 25x
faster.
References
----------
.. [1] Wikipedia, "Two's complement",
https://en.wikipedia.org/wiki/Two's_complement
Examples
--------
>>> import numpy as np
>>> np.binary_repr(3)
'11'
>>> np.binary_repr(-3)
'-11'
>>> np.binary_repr(3, width=4)
'0011'
The two's complement is returned when the input number is negative and
width is specified:
>>> np.binary_repr(-3, width=3)
'101'
>>> np.binary_repr(-3, width=5)
'11101'
bincount(...)
bincount(x, /, weights=None, minlength=0)
Count number of occurrences of each value in array of non-negative ints.
The number of bins (of size 1) is one larger than the largest value in
`x`. If `minlength` is specified, there will be at least this number
of bins in the output array (though it will be longer if necessary,
depending on the contents of `x`).
Each bin gives the number of occurrences of its index value in `x`.
If `weights` is specified the input array is weighted by it, i.e. if a
value ``n`` is found at position ``i``, ``out[n] += weight[i]`` instead
of ``out[n] += 1``.
Parameters
----------
x : array_like, 1 dimension, nonnegative ints
Input array.
weights : array_like, optional
Weights, array of the same shape as `x`.
minlength : int, optional
A minimum number of bins for the output array.
.. versionadded:: 1.6.0
Returns
-------
out : ndarray of ints
The result of binning the input array.
The length of `out` is equal to ``np.amax(x)+1``.
Raises
------
ValueError
If the input is not 1-dimensional, or contains elements with negative
values, or if `minlength` is negative.
TypeError
If the type of the input is float or complex.
See Also
--------
histogram, digitize, unique
Examples
--------
>>> import numpy as np
>>> np.bincount(np.arange(5))
array([1, 1, 1, 1, 1])
>>> np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))
array([1, 3, 1, 1, 0, 0, 0, 1])
>>> x = np.array([0, 1, 1, 3, 2, 1, 7, 23])
>>> np.bincount(x).size == np.amax(x)+1
True
The input array needs to be of integer dtype, otherwise a
TypeError is raised:
>>> np.bincount(np.arange(5, dtype=float))
Traceback (most recent call last):
...
TypeError: Cannot cast array data from dtype('float64') to dtype('int64')
according to the rule 'safe'
A possible use of ``bincount`` is to perform sums over
variable-size chunks of an array, using the ``weights`` keyword.
>>> w = np.array([0.3, 0.5, 0.2, 0.7, 1., -0.6]) # weights
>>> x = np.array([0, 1, 1, 2, 2, 2])
>>> np.bincount(x, weights=w)
array([ 0.3, 0.7, 1.1])
blackman(M)
Return the Blackman window.
The Blackman window is a taper formed by using the first three
terms of a summation of cosines. It was designed to have close to the
minimal leakage possible. It is close to optimal, only slightly worse
than a Kaiser window.
Parameters
----------
M : int
Number of points in the output window. If zero or less, an empty
array is returned.
Returns
-------
out : ndarray
The window, with the maximum value normalized to one (the value one
appears only if the number of samples is odd).
See Also
--------
bartlett, hamming, hanning, kaiser
Notes
-----
The Blackman window is defined as
.. math:: w(n) = 0.42 - 0.5 \cos(2\pi n/M) + 0.08 \cos(4\pi n/M)
Most references to the Blackman window come from the signal processing
literature, where it is used as one of many windowing functions for
smoothing values. It is also known as an apodization (which means
"removing the foot", i.e. smoothing discontinuities at the beginning
and end of the sampled signal) or tapering function. It is known as a
"near optimal" tapering function, almost as good (by some measures)
as the kaiser window.
References
----------
Blackman, R.B. and Tukey, J.W., (1958) The measurement of power spectra,
Dover Publications, New York.
Oppenheim, A.V., and R.W. Schafer. Discrete-Time Signal Processing.
Upper Saddle River, NJ: Prentice-Hall, 1999, pp. 468-471.
Examples
--------
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> np.blackman(12)
array([-1.38777878e-17, 3.26064346e-02, 1.59903635e-01, # may vary
4.14397981e-01, 7.36045180e-01, 9.67046769e-01,
9.67046769e-01, 7.36045180e-01, 4.14397981e-01,
1.59903635e-01, 3.26064346e-02, -1.38777878e-17])
Plot the window and the frequency response.
.. plot::
:include-source:
import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.blackman(51)
plt.plot(window)
plt.title("Blackman window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show() # doctest: +SKIP
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
with np.errstate(divide='ignore', invalid='ignore'):
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of Blackman window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
block(arrays)
Assemble an nd-array from nested lists of blocks.
Blocks in the innermost lists are concatenated (see `concatenate`) along
the last dimension (-1), then these are concatenated along the
second-last dimension (-2), and so on until the outermost list is reached.
Blocks can be of any dimension, but will not be broadcasted using
the normal rules. Instead, leading axes of size 1 are inserted,
to make ``block.ndim`` the same for all blocks. This is primarily useful
for working with scalars, and means that code like ``np.block([v, 1])``
is valid, where ``v.ndim == 1``.
When the nested list is two levels deep, this allows block matrices to be
constructed from their components.
.. versionadded:: 1.13.0
Parameters
----------
arrays : nested list of array_like or scalars (but not tuples)
If passed a single ndarray or scalar (a nested list of depth 0), this
is returned unmodified (and not copied).
Elements shapes must match along the appropriate axes (without
broadcasting), but leading 1s will be prepended to the shape as
necessary to make the dimensions match.
Returns
-------
block_array : ndarray
The array assembled from the given blocks.
The dimensionality of the output is equal to the greatest of:
* the dimensionality of all the inputs
* the depth to which the input list is nested
Raises
------
ValueError
* If list depths are mismatched - for instance, ``[[a, b], c]`` is
illegal, and should be spelt ``[[a, b], [c]]``
* If lists are empty - for instance, ``[[a, b], []]``
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
vstack : Stack arrays in sequence vertically (row wise).
hstack : Stack arrays in sequence horizontally (column wise).
dstack : Stack arrays in sequence depth wise (along third axis).
column_stack : Stack 1-D arrays as columns into a 2-D array.
vsplit : Split an array into multiple sub-arrays vertically (row-wise).
unstack : Split an array into a tuple of sub-arrays along an axis.
Notes
-----
When called with only scalars, ``np.block`` is equivalent to an ndarray
call. So ``np.block([[1, 2], [3, 4]])`` is equivalent to
``np.array([[1, 2], [3, 4]])``.
This function does not enforce that the blocks lie on a fixed grid.
``np.block([[a, b], [c, d]])`` is not restricted to arrays of the form::
AAAbb
AAAbb
cccDD
But is also allowed to produce, for some ``a, b, c, d``::
AAAbb
AAAbb
cDDDD
Since concatenation happens along the last axis first, `block` is *not*
capable of producing the following directly::
AAAbb
cccbb
cccDD
Matlab's "square bracket stacking", ``[A, B, ...; p, q, ...]``, is
equivalent to ``np.block([[A, B, ...], [p, q, ...]])``.
Examples
--------
The most common use of this function is to build a block matrix:
>>> import numpy as np
>>> A = np.eye(2) * 2
>>> B = np.eye(3) * 3
>>> np.block([
... [A, np.zeros((2, 3))],
... [np.ones((3, 2)), B ]
... ])
array([[2., 0., 0., 0., 0.],
[0., 2., 0., 0., 0.],
[1., 1., 3., 0., 0.],
[1., 1., 0., 3., 0.],
[1., 1., 0., 0., 3.]])
With a list of depth 1, `block` can be used as `hstack`:
>>> np.block([1, 2, 3]) # hstack([1, 2, 3])
array([1, 2, 3])
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> np.block([a, b, 10]) # hstack([a, b, 10])
array([ 1, 2, 3, 4, 5, 6, 10])
>>> A = np.ones((2, 2), int)
>>> B = 2 * A
>>> np.block([A, B]) # hstack([A, B])
array([[1, 1, 2, 2],
[1, 1, 2, 2]])
With a list of depth 2, `block` can be used in place of `vstack`:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> np.block([[a], [b]]) # vstack([a, b])
array([[1, 2, 3],
[4, 5, 6]])
>>> A = np.ones((2, 2), int)
>>> B = 2 * A
>>> np.block([[A], [B]]) # vstack([A, B])
array([[1, 1],
[1, 1],
[2, 2],
[2, 2]])
It can also be used in place of `atleast_1d` and `atleast_2d`:
>>> a = np.array(0)
>>> b = np.array([1])
>>> np.block([a]) # atleast_1d(a)
array([0])
>>> np.block([b]) # atleast_1d(b)
array([1])
>>> np.block([[a]]) # atleast_2d(a)
array([[0]])
>>> np.block([[b]]) # atleast_2d(b)
array([[1]])
bmat(obj, ldict=None, gdict=None)
Build a matrix object from a string, nested sequence, or array.
Parameters
----------
obj : str or array_like
Input data. If a string, variables in the current scope may be
referenced by name.
ldict : dict, optional
A dictionary that replaces local operands in current frame.
Ignored if `obj` is not a string or `gdict` is None.
gdict : dict, optional
A dictionary that replaces global operands in current frame.
Ignored if `obj` is not a string.
Returns
-------
out : matrix
Returns a matrix object, which is a specialized 2-D array.
See Also
--------
block :
A generalization of this function for N-d arrays, that returns normal
ndarrays.
Examples
--------
>>> import numpy as np
>>> A = np.asmatrix('1 1; 1 1')
>>> B = np.asmatrix('2 2; 2 2')
>>> C = np.asmatrix('3 4; 5 6')
>>> D = np.asmatrix('7 8; 9 0')
All the following expressions construct the same block matrix:
>>> np.bmat([[A, B], [C, D]])
matrix([[1, 1, 2, 2],
[1, 1, 2, 2],
[3, 4, 7, 8],
[5, 6, 9, 0]])
>>> np.bmat(np.r_[np.c_[A, B], np.c_[C, D]])
matrix([[1, 1, 2, 2],
[1, 1, 2, 2],
[3, 4, 7, 8],
[5, 6, 9, 0]])
>>> np.bmat('A,B; C,D')
matrix([[1, 1, 2, 2],
[1, 1, 2, 2],
[3, 4, 7, 8],
[5, 6, 9, 0]])
broadcast_arrays(*args, subok=False)
Broadcast any number of arrays against each other.
Parameters
----------
*args : array_likes
The arrays to broadcast.
subok : bool, optional
If True, then sub-classes will be passed-through, otherwise
the returned arrays will be forced to be a base-class array (default).
Returns
-------
broadcasted : tuple of arrays
These arrays are views on the original arrays. They are typically
not contiguous. Furthermore, more than one element of a
broadcasted array may refer to a single memory location. If you need
to write to the arrays, make copies first. While you can set the
``writable`` flag True, writing to a single output value may end up
changing more than one location in the output array.
.. deprecated:: 1.17
The output is currently marked so that if written to, a deprecation
warning will be emitted. A future version will set the
``writable`` flag False so writing to it will raise an error.
See Also
--------
broadcast
broadcast_to
broadcast_shapes
Examples
--------
>>> import numpy as np
>>> x = np.array([[1,2,3]])
>>> y = np.array([[4],[5]])
>>> np.broadcast_arrays(x, y)
(array([[1, 2, 3],
[1, 2, 3]]),
array([[4, 4, 4],
[5, 5, 5]]))
Here is a useful idiom for getting contiguous copies instead of
non-contiguous views.
>>> [np.array(a) for a in np.broadcast_arrays(x, y)]
[array([[1, 2, 3],
[1, 2, 3]]),
array([[4, 4, 4],
[5, 5, 5]])]
broadcast_shapes(*args)
Broadcast the input shapes into a single shape.
:ref:`Learn more about broadcasting here <basics.broadcasting>`.
.. versionadded:: 1.20.0
Parameters
----------
*args : tuples of ints, or ints
The shapes to be broadcast against each other.
Returns
-------
tuple
Broadcasted shape.
Raises
------
ValueError
If the shapes are not compatible and cannot be broadcast according
to NumPy's broadcasting rules.
See Also
--------
broadcast
broadcast_arrays
broadcast_to
Examples
--------
>>> import numpy as np
>>> np.broadcast_shapes((1, 2), (3, 1), (3, 2))
(3, 2)
>>> np.broadcast_shapes((6, 7), (5, 6, 1), (7,), (5, 1, 7))
(5, 6, 7)
broadcast_to(array, shape, subok=False)
Broadcast an array to a new shape.
Parameters
----------
array : array_like
The array to broadcast.
shape : tuple or int
The shape of the desired array. A single integer ``i`` is interpreted
as ``(i,)``.
subok : bool, optional
If True, then sub-classes will be passed-through, otherwise
the returned array will be forced to be a base-class array (default).
Returns
-------
broadcast : array
A readonly view on the original array with the given shape. It is
typically not contiguous. Furthermore, more than one element of a
broadcasted array may refer to a single memory location.
Raises
------
ValueError
If the array is not compatible with the new shape according to NumPy's
broadcasting rules.
See Also
--------
broadcast
broadcast_arrays
broadcast_shapes
Notes
-----
.. versionadded:: 1.10.0
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2, 3])
>>> np.broadcast_to(x, (3, 3))
array([[1, 2, 3],
[1, 2, 3],
[1, 2, 3]])
busday_count(...)
busday_count(
begindates,
enddates,
weekmask='1111100',
holidays=[],
busdaycal=None,
out=None
)
Counts the number of valid days between `begindates` and
`enddates`, not including the day of `enddates`.
If ``enddates`` specifies a date value that is earlier than the
corresponding ``begindates`` date value, the count will be negative.
.. versionadded:: 1.7.0
Parameters
----------
begindates : array_like of datetime64[D]
The array of the first dates for counting.
enddates : array_like of datetime64[D]
The array of the end dates for counting, which are excluded
from the count themselves.
weekmask : str or array_like of bool, optional
A seven-element array indicating which of Monday through Sunday are
valid days. May be specified as a length-seven list or array, like
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
weekdays, optionally separated by white space. Valid abbreviations
are: Mon Tue Wed Thu Fri Sat Sun
holidays : array_like of datetime64[D], optional
An array of dates to consider as invalid dates. They may be
specified in any order, and NaT (not-a-time) dates are ignored.
This list is saved in a normalized form that is suited for
fast calculations of valid days.
busdaycal : busdaycalendar, optional
A `busdaycalendar` object which specifies the valid days. If this
parameter is provided, neither weekmask nor holidays may be
provided.
out : array of int, optional
If provided, this array is filled with the result.
Returns
-------
out : array of int
An array with a shape from broadcasting ``begindates`` and ``enddates``
together, containing the number of valid days between
the begin and end dates.
See Also
--------
busdaycalendar : An object that specifies a custom set of valid days.
is_busday : Returns a boolean array indicating valid days.
busday_offset : Applies an offset counted in valid days.
Examples
--------
>>> import numpy as np
>>> # Number of weekdays in January 2011
... np.busday_count('2011-01', '2011-02')
21
>>> # Number of weekdays in 2011
>>> np.busday_count('2011', '2012')
260
>>> # Number of Saturdays in 2011
... np.busday_count('2011', '2012', weekmask='Sat')
53
busday_offset(...)
busday_offset(
dates,
offsets,
roll='raise',
weekmask='1111100',
holidays=None,
busdaycal=None,
out=None
)
First adjusts the date to fall on a valid day according to
the ``roll`` rule, then applies offsets to the given dates
counted in valid days.
.. versionadded:: 1.7.0
Parameters
----------
dates : array_like of datetime64[D]
The array of dates to process.
offsets : array_like of int
The array of offsets, which is broadcast with ``dates``.
roll : {'raise', 'nat', 'forward', 'following', 'backward', 'preceding', 'modifiedfollowing', 'modifiedpreceding'}, optional
How to treat dates that do not fall on a valid day. The default
is 'raise'.
* 'raise' means to raise an exception for an invalid day.
* 'nat' means to return a NaT (not-a-time) for an invalid day.
* 'forward' and 'following' mean to take the first valid day
later in time.
* 'backward' and 'preceding' mean to take the first valid day
earlier in time.
* 'modifiedfollowing' means to take the first valid day
later in time unless it is across a Month boundary, in which
case to take the first valid day earlier in time.
* 'modifiedpreceding' means to take the first valid day
earlier in time unless it is across a Month boundary, in which
case to take the first valid day later in time.
weekmask : str or array_like of bool, optional
A seven-element array indicating which of Monday through Sunday are
valid days. May be specified as a length-seven list or array, like
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
weekdays, optionally separated by white space. Valid abbreviations
are: Mon Tue Wed Thu Fri Sat Sun
holidays : array_like of datetime64[D], optional
An array of dates to consider as invalid dates. They may be
specified in any order, and NaT (not-a-time) dates are ignored.
This list is saved in a normalized form that is suited for
fast calculations of valid days.
busdaycal : busdaycalendar, optional
A `busdaycalendar` object which specifies the valid days. If this
parameter is provided, neither weekmask nor holidays may be
provided.
out : array of datetime64[D], optional
If provided, this array is filled with the result.
Returns
-------
out : array of datetime64[D]
An array with a shape from broadcasting ``dates`` and ``offsets``
together, containing the dates with offsets applied.
See Also
--------
busdaycalendar : An object that specifies a custom set of valid days.
is_busday : Returns a boolean array indicating valid days.
busday_count : Counts how many valid days are in a half-open date range.
Examples
--------
>>> import numpy as np
>>> # First business day in October 2011 (not accounting for holidays)
... np.busday_offset('2011-10', 0, roll='forward')
np.datetime64('2011-10-03')
>>> # Last business day in February 2012 (not accounting for holidays)
... np.busday_offset('2012-03', -1, roll='forward')
np.datetime64('2012-02-29')
>>> # Third Wednesday in January 2011
... np.busday_offset('2011-01', 2, roll='forward', weekmask='Wed')
np.datetime64('2011-01-19')
>>> # 2012 Mother's Day in Canada and the U.S.
... np.busday_offset('2012-05', 1, roll='forward', weekmask='Sun')
np.datetime64('2012-05-13')
>>> # First business day on or after a date
... np.busday_offset('2011-03-20', 0, roll='forward')
np.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 0, roll='forward')
np.datetime64('2011-03-22')
>>> # First business day after a date
... np.busday_offset('2011-03-20', 1, roll='backward')
np.datetime64('2011-03-21')
>>> np.busday_offset('2011-03-22', 1, roll='backward')
np.datetime64('2011-03-23')
can_cast(...)
can_cast(from_, to, casting='safe')
Returns True if cast between data types can occur according to the
casting rule.
Parameters
----------
from_ : dtype, dtype specifier, NumPy scalar, or array
Data type, NumPy scalar, or array to cast from.
to : dtype or dtype specifier
Data type to cast to.
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur.
* 'no' means the data types should not be cast at all.
* 'equiv' means only byte-order changes are allowed.
* 'safe' means only casts which can preserve values are allowed.
* 'same_kind' means only safe casts or casts within a kind,
like float64 to float32, are allowed.
* 'unsafe' means any data conversions may be done.
Returns
-------
out : bool
True if cast can occur according to the casting rule.
Notes
-----
.. versionchanged:: 1.17.0
Casting between a simple data type and a structured one is possible only
for "unsafe" casting. Casting to multiple fields is allowed, but
casting from multiple fields is not.
.. versionchanged:: 1.9.0
Casting from numeric to string types in 'safe' casting mode requires
that the string dtype length is long enough to store the maximum
integer/float value converted.
.. versionchanged:: 2.0
This function does not support Python scalars anymore and does not
apply any value-based logic for 0-D arrays and NumPy scalars.
See also
--------
dtype, result_type
Examples
--------
Basic examples
>>> import numpy as np
>>> np.can_cast(np.int32, np.int64)
True
>>> np.can_cast(np.float64, complex)
True
>>> np.can_cast(complex, float)
False
>>> np.can_cast('i8', 'f8')
True
>>> np.can_cast('i8', 'f4')
False
>>> np.can_cast('i4', 'S4')
False
choose(a, choices, out=None, mode='raise')
Construct an array from an index array and a list of arrays to choose from.
First of all, if confused or uncertain, definitely look at the Examples -
in its full generality, this function is less simple than it might
seem from the following code description (below ndi =
`numpy.lib.index_tricks`):
``np.choose(a,c) == np.array([c[a[I]][I] for I in ndi.ndindex(a.shape)])``.
But this omits some subtleties. Here is a fully general summary:
Given an "index" array (`a`) of integers and a sequence of ``n`` arrays
(`choices`), `a` and each choice array are first broadcast, as necessary,
to arrays of a common shape; calling these *Ba* and *Bchoices[i], i =
0,...,n-1* we have that, necessarily, ``Ba.shape == Bchoices[i].shape``
for each ``i``. Then, a new array with shape ``Ba.shape`` is created as
follows:
* if ``mode='raise'`` (the default), then, first of all, each element of
``a`` (and thus ``Ba``) must be in the range ``[0, n-1]``; now, suppose
that ``i`` (in that range) is the value at the ``(j0, j1, ..., jm)``
position in ``Ba`` - then the value at the same position in the new array
is the value in ``Bchoices[i]`` at that same position;
* if ``mode='wrap'``, values in `a` (and thus `Ba`) may be any (signed)
integer; modular arithmetic is used to map integers outside the range
`[0, n-1]` back into that range; and then the new array is constructed
as above;
* if ``mode='clip'``, values in `a` (and thus ``Ba``) may be any (signed)
integer; negative integers are mapped to 0; values greater than ``n-1``
are mapped to ``n-1``; and then the new array is constructed as above.
Parameters
----------
a : int array
This array must contain integers in ``[0, n-1]``, where ``n`` is the
number of choices, unless ``mode=wrap`` or ``mode=clip``, in which
cases any integers are permissible.
choices : sequence of arrays
Choice arrays. `a` and all of the choices must be broadcastable to the
same shape. If `choices` is itself an array (not recommended), then
its outermost dimension (i.e., the one corresponding to
``choices.shape[0]``) is taken as defining the "sequence".
out : array, optional
If provided, the result will be inserted into this array. It should
be of the appropriate shape and dtype. Note that `out` is always
buffered if ``mode='raise'``; use other modes for better performance.
mode : {'raise' (default), 'wrap', 'clip'}, optional
Specifies how indices outside ``[0, n-1]`` will be treated:
* 'raise' : an exception is raised
* 'wrap' : value becomes value mod ``n``
* 'clip' : values < 0 are mapped to 0, values > n-1 are mapped to n-1
Returns
-------
merged_array : array
The merged result.
Raises
------
ValueError: shape mismatch
If `a` and each choice array are not all broadcastable to the same
shape.
See Also
--------
ndarray.choose : equivalent method
numpy.take_along_axis : Preferable if `choices` is an array
Notes
-----
To reduce the chance of misinterpretation, even though the following
"abuse" is nominally supported, `choices` should neither be, nor be
thought of as, a single array, i.e., the outermost sequence-like container
should be either a list or a tuple.
Examples
--------
>>> import numpy as np
>>> choices = [[0, 1, 2, 3], [10, 11, 12, 13],
... [20, 21, 22, 23], [30, 31, 32, 33]]
>>> np.choose([2, 3, 1, 0], choices
... # the first element of the result will be the first element of the
... # third (2+1) "array" in choices, namely, 20; the second element
... # will be the second element of the fourth (3+1) choice array, i.e.,
... # 31, etc.
... )
array([20, 31, 12, 3])
>>> np.choose([2, 4, 1, 0], choices, mode='clip') # 4 goes to 3 (4-1)
array([20, 31, 12, 3])
>>> # because there are 4 choice arrays
>>> np.choose([2, 4, 1, 0], choices, mode='wrap') # 4 goes to (4 mod 4)
array([20, 1, 12, 3])
>>> # i.e., 0
A couple examples illustrating how choose broadcasts:
>>> a = [[1, 0, 1], [0, 1, 0], [1, 0, 1]]
>>> choices = [-10, 10]
>>> np.choose(a, choices)
array([[ 10, -10, 10],
[-10, 10, -10],
[ 10, -10, 10]])
>>> # With thanks to Anne Archibald
>>> a = np.array([0, 1]).reshape((2,1,1))
>>> c1 = np.array([1, 2, 3]).reshape((1,3,1))
>>> c2 = np.array([-1, -2, -3, -4, -5]).reshape((1,1,5))
>>> np.choose(a, (c1, c2)) # result is 2x3x5, res[0,:,:]=c1, res[1,:,:]=c2
array([[[ 1, 1, 1, 1, 1],
[ 2, 2, 2, 2, 2],
[ 3, 3, 3, 3, 3]],
[[-1, -2, -3, -4, -5],
[-1, -2, -3, -4, -5],
[-1, -2, -3, -4, -5]]])
clip(a, a_min=<no value>, a_max=<no value>, out=None, *, min=<no value>, max=<no value>, **kwargs)
Clip (limit) the values in an array.
Given an interval, values outside the interval are clipped to
the interval edges. For example, if an interval of ``[0, 1]``
is specified, values smaller than 0 become 0, and values larger
than 1 become 1.
Equivalent to but faster than ``np.minimum(a_max, np.maximum(a, a_min))``.
No check is performed to ensure ``a_min < a_max``.
Parameters
----------
a : array_like
Array containing elements to clip.
a_min, a_max : array_like or None
Minimum and maximum value. If ``None``, clipping is not performed on
the corresponding edge. If both ``a_min`` and ``a_max`` are ``None``,
the elements of the returned array stay the same. Both are broadcasted
against ``a``.
out : ndarray, optional
The results will be placed in this array. It may be the input
array for in-place clipping. `out` must be of the right shape
to hold the output. Its type is preserved.
min, max : array_like or None
Array API compatible alternatives for ``a_min`` and ``a_max``
arguments. Either ``a_min`` and ``a_max`` or ``min`` and ``max``
can be passed at the same time. Default: ``None``.
.. versionadded:: 2.1.0
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
.. versionadded:: 1.17.0
Returns
-------
clipped_array : ndarray
An array with the elements of `a`, but where values
< `a_min` are replaced with `a_min`, and those > `a_max`
with `a_max`.
See Also
--------
:ref:`ufuncs-output-type`
Notes
-----
When `a_min` is greater than `a_max`, `clip` returns an
array in which all values are equal to `a_max`,
as shown in the second example.
Examples
--------
>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.clip(a, 1, 8)
array([1, 1, 2, 3, 4, 5, 6, 7, 8, 8])
>>> np.clip(a, 8, 1)
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
>>> np.clip(a, 3, 6, out=a)
array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
>>> a
array([3, 3, 3, 3, 4, 5, 6, 6, 6, 6])
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.clip(a, [3, 4, 1, 1, 1, 4, 4, 4, 4, 4], 8)
array([3, 4, 2, 3, 4, 5, 6, 7, 8, 8])
column_stack(tup)
Stack 1-D arrays as columns into a 2-D array.
Take a sequence of 1-D arrays and stack them as columns
to make a single 2-D array. 2-D arrays are stacked as-is,
just like with `hstack`. 1-D arrays are turned into 2-D columns
first.
Parameters
----------
tup : sequence of 1-D or 2-D arrays.
Arrays to stack. All of them must have the same first dimension.
Returns
-------
stacked : 2-D array
The array formed by stacking the given arrays.
See Also
--------
stack, hstack, vstack, concatenate
Examples
--------
>>> import numpy as np
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.column_stack((a,b))
array([[1, 2],
[2, 3],
[3, 4]])
common_type(*arrays)
Return a scalar type which is common to the input arrays.
The return type will always be an inexact (i.e. floating point) scalar
type, even if all the arrays are integer arrays. If one of the inputs is
an integer array, the minimum precision type that is returned is a
64-bit floating point dtype.
All input arrays except int64 and uint64 can be safely cast to the
returned dtype without loss of information.
Parameters
----------
array1, array2, ... : ndarrays
Input arrays.
Returns
-------
out : data type code
Data type code.
See Also
--------
dtype, mintypecode
Examples
--------
>>> np.common_type(np.arange(2, dtype=np.float32))
<class 'numpy.float32'>
>>> np.common_type(np.arange(2, dtype=np.float32), np.arange(2))
<class 'numpy.float64'>
>>> np.common_type(np.arange(4), np.array([45, 6.j]), np.array([45.0]))
<class 'numpy.complex128'>
compress(condition, a, axis=None, out=None)
Return selected slices of an array along given axis.
When working along a given axis, a slice along that axis is returned in
`output` for each index where `condition` evaluates to True. When
working on a 1-D array, `compress` is equivalent to `extract`.
Parameters
----------
condition : 1-D array of bools
Array that selects which entries to return. If len(condition)
is less than the size of `a` along the given axis, then output is
truncated to the length of the condition array.
a : array_like
Array from which to extract a part.
axis : int, optional
Axis along which to take slices. If None (default), work on the
flattened array.
out : ndarray, optional
Output array. Its type is preserved and it must be of the right
shape to hold the output.
Returns
-------
compressed_array : ndarray
A copy of `a` without the slices along axis for which `condition`
is false.
See Also
--------
take, choose, diag, diagonal, select
ndarray.compress : Equivalent method in ndarray
extract : Equivalent method when working on 1-D arrays
:ref:`ufuncs-output-type`
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4], [5, 6]])
>>> a
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.compress([0, 1], a, axis=0)
array([[3, 4]])
>>> np.compress([False, True, True], a, axis=0)
array([[3, 4],
[5, 6]])
>>> np.compress([False, True], a, axis=1)
array([[2],
[4],
[6]])
Working on the flattened array does not return slices along an axis but
selects elements.
>>> np.compress([False, True], a)
array([2])
concat = concatenate(...)
concatenate(
(a1, a2, ...),
axis=0,
out=None,
dtype=None,
casting="same_kind"
)
Join a sequence of arrays along an existing axis.
Parameters
----------
a1, a2, ... : sequence of array_like
The arrays must have the same shape, except in the dimension
corresponding to `axis` (the first, by default).
axis : int, optional
The axis along which the arrays will be joined. If axis is None,
arrays are flattened before use. Default is 0.
out : ndarray, optional
If provided, the destination to place the result. The shape must be
correct, matching that of what concatenate would have returned if no
out argument were specified.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.20.0
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
For a description of the options, please see :term:`casting`.
.. versionadded:: 1.20.0
Returns
-------
res : ndarray
The concatenated array.
See Also
--------
ma.concatenate : Concatenate function that preserves input masks.
array_split : Split an array into multiple sub-arrays of equal or
near-equal size.
split : Split array into a list of multiple sub-arrays of equal size.
hsplit : Split array into multiple sub-arrays horizontally (column wise).
vsplit : Split array into multiple sub-arrays vertically (row wise).
dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).
stack : Stack a sequence of arrays along a new axis.
block : Assemble arrays from blocks.
hstack : Stack arrays in sequence horizontally (column wise).
vstack : Stack arrays in sequence vertically (row wise).
dstack : Stack arrays in sequence depth wise (along third dimension).
column_stack : Stack 1-D arrays as columns into a 2-D array.
Notes
-----
When one or more of the arrays to be concatenated is a MaskedArray,
this function will return a MaskedArray object instead of an ndarray,
but the input masks are *not* preserved. In cases where a MaskedArray
is expected as input, use the ma.concatenate function from the masked
array module instead.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
[3, 4, 6]])
>>> np.concatenate((a, b), axis=None)
array([1, 2, 3, 4, 5, 6])
This function will not preserve masking of MaskedArray inputs.
>>> a = np.ma.arange(3)
>>> a[1] = np.ma.masked
>>> b = np.arange(2, 5)
>>> a
masked_array(data=[0, --, 2],
mask=[False, True, False],
fill_value=999999)
>>> b
array([2, 3, 4])
>>> np.concatenate([a, b])
masked_array(data=[0, 1, 2, 2, 3, 4],
mask=False,
fill_value=999999)
>>> np.ma.concatenate([a, b])
masked_array(data=[0, --, 2, 2, 3, 4],
mask=[False, True, False, False, False, False],
fill_value=999999)
concatenate(...)
concatenate(
(a1, a2, ...),
axis=0,
out=None,
dtype=None,
casting="same_kind"
)
Join a sequence of arrays along an existing axis.
Parameters
----------
a1, a2, ... : sequence of array_like
The arrays must have the same shape, except in the dimension
corresponding to `axis` (the first, by default).
axis : int, optional
The axis along which the arrays will be joined. If axis is None,
arrays are flattened before use. Default is 0.
out : ndarray, optional
If provided, the destination to place the result. The shape must be
correct, matching that of what concatenate would have returned if no
out argument were specified.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.20.0
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
For a description of the options, please see :term:`casting`.
.. versionadded:: 1.20.0
Returns
-------
res : ndarray
The concatenated array.
See Also
--------
ma.concatenate : Concatenate function that preserves input masks.
array_split : Split an array into multiple sub-arrays of equal or
near-equal size.
split : Split array into a list of multiple sub-arrays of equal size.
hsplit : Split array into multiple sub-arrays horizontally (column wise).
vsplit : Split array into multiple sub-arrays vertically (row wise).
dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).
stack : Stack a sequence of arrays along a new axis.
block : Assemble arrays from blocks.
hstack : Stack arrays in sequence horizontally (column wise).
vstack : Stack arrays in sequence vertically (row wise).
dstack : Stack arrays in sequence depth wise (along third dimension).
column_stack : Stack 1-D arrays as columns into a 2-D array.
Notes
-----
When one or more of the arrays to be concatenated is a MaskedArray,
this function will return a MaskedArray object instead of an ndarray,
but the input masks are *not* preserved. In cases where a MaskedArray
is expected as input, use the ma.concatenate function from the masked
array module instead.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
[3, 4, 6]])
>>> np.concatenate((a, b), axis=None)
array([1, 2, 3, 4, 5, 6])
This function will not preserve masking of MaskedArray inputs.
>>> a = np.ma.arange(3)
>>> a[1] = np.ma.masked
>>> b = np.arange(2, 5)
>>> a
masked_array(data=[0, --, 2],
mask=[False, True, False],
fill_value=999999)
>>> b
array([2, 3, 4])
>>> np.concatenate([a, b])
masked_array(data=[0, 1, 2, 2, 3, 4],
mask=False,
fill_value=999999)
>>> np.ma.concatenate([a, b])
masked_array(data=[0, --, 2, 2, 3, 4],
mask=[False, True, False, False, False, False],
fill_value=999999)
convolve(a, v, mode='full')
Returns the discrete, linear convolution of two one-dimensional sequences.
The convolution operator is often seen in signal processing, where it
models the effect of a linear time-invariant system on a signal [1]_. In
probability theory, the sum of two independent random variables is
distributed according to the convolution of their individual
distributions.
If `v` is longer than `a`, the arrays are swapped before computation.
Parameters
----------
a : (N,) array_like
First one-dimensional input array.
v : (M,) array_like
Second one-dimensional input array.
mode : {'full', 'valid', 'same'}, optional
'full':
By default, mode is 'full'. This returns the convolution
at each point of overlap, with an output shape of (N+M-1,). At
the end-points of the convolution, the signals do not overlap
completely, and boundary effects may be seen.
'same':
Mode 'same' returns output of length ``max(M, N)``. Boundary
effects are still visible.
'valid':
Mode 'valid' returns output of length
``max(M, N) - min(M, N) + 1``. The convolution product is only given
for points where the signals overlap completely. Values outside
the signal boundary have no effect.
Returns
-------
out : ndarray
Discrete, linear convolution of `a` and `v`.
See Also
--------
scipy.signal.fftconvolve : Convolve two arrays using the Fast Fourier
Transform.
scipy.linalg.toeplitz : Used to construct the convolution operator.
polymul : Polynomial multiplication. Same output as convolve, but also
accepts poly1d objects as input.
Notes
-----
The discrete convolution operation is defined as
.. math:: (a * v)_n = \sum_{m = -\infty}^{\infty} a_m v_{n - m}
It can be shown that a convolution :math:`x(t) * y(t)` in time/space
is equivalent to the multiplication :math:`X(f) Y(f)` in the Fourier
domain, after appropriate padding (padding is necessary to prevent
circular convolution). Since multiplication is more efficient (faster)
than convolution, the function `scipy.signal.fftconvolve` exploits the
FFT to calculate the convolution of large data-sets.
References
----------
.. [1] Wikipedia, "Convolution",
https://en.wikipedia.org/wiki/Convolution
Examples
--------
Note how the convolution operator flips the second array
before "sliding" the two across one another:
>>> import numpy as np
>>> np.convolve([1, 2, 3], [0, 1, 0.5])
array([0. , 1. , 2.5, 4. , 1.5])
Only return the middle values of the convolution.
Contains boundary effects, where zeros are taken
into account:
>>> np.convolve([1,2,3],[0,1,0.5], 'same')
array([1. , 2.5, 4. ])
The two arrays are of the same length, so there
is only one position where they completely overlap:
>>> np.convolve([1,2,3],[0,1,0.5], 'valid')
array([2.5])
copy(a, order='K', subok=False)
Return an array copy of the given object.
Parameters
----------
a : array_like
Input data.
order : {'C', 'F', 'A', 'K'}, optional
Controls the memory layout of the copy. 'C' means C-order,
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
'C' otherwise. 'K' means match the layout of `a` as closely
as possible. (Note that this function and :meth:`ndarray.copy` are very
similar, but have different default values for their order=
arguments.)
subok : bool, optional
If True, then sub-classes will be passed-through, otherwise the
returned array will be forced to be a base-class array (defaults to False).
.. versionadded:: 1.19.0
Returns
-------
arr : ndarray
Array interpretation of `a`.
See Also
--------
ndarray.copy : Preferred method for creating an array copy
Notes
-----
This is equivalent to:
>>> np.array(a, copy=True) #doctest: +SKIP
The copy made of the data is shallow, i.e., for arrays with object dtype,
the new array will point to the same objects.
See Examples from `ndarray.copy`.
Examples
--------
>>> import numpy as np
Create an array x, with a reference y and a copy z:
>>> x = np.array([1, 2, 3])
>>> y = x
>>> z = np.copy(x)
Note that, when we modify x, y changes, but not z:
>>> x[0] = 10
>>> x[0] == y[0]
True
>>> x[0] == z[0]
False
Note that, np.copy clears previously set WRITEABLE=False flag.
>>> a = np.array([1, 2, 3])
>>> a.flags["WRITEABLE"] = False
>>> b = np.copy(a)
>>> b.flags["WRITEABLE"]
True
>>> b[0] = 3
>>> b
array([3, 2, 3])
copyto(...)
copyto(dst, src, casting='same_kind', where=True)
Copies values from one array to another, broadcasting as necessary.
Raises a TypeError if the `casting` rule is violated, and if
`where` is provided, it selects which elements to copy.
.. versionadded:: 1.7.0
Parameters
----------
dst : ndarray
The array into which values are copied.
src : array_like
The array from which values are copied.
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur when copying.
* 'no' means the data types should not be cast at all.
* 'equiv' means only byte-order changes are allowed.
* 'safe' means only casts which can preserve values are allowed.
* 'same_kind' means only safe casts or casts within a kind,
like float64 to float32, are allowed.
* 'unsafe' means any data conversions may be done.
where : array_like of bool, optional
A boolean array which is broadcasted to match the dimensions
of `dst`, and selects elements to copy from `src` to `dst`
wherever it contains the value True.
Examples
--------
>>> import numpy as np
>>> A = np.array([4, 5, 6])
>>> B = [1, 2, 3]
>>> np.copyto(A, B)
>>> A
array([1, 2, 3])
>>> A = np.array([[1, 2, 3], [4, 5, 6]])
>>> B = [[4, 5, 6], [7, 8, 9]]
>>> np.copyto(A, B)
>>> A
array([[4, 5, 6],
[7, 8, 9]])
corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value>, *, dtype=None)
Return Pearson product-moment correlation coefficients.
Please refer to the documentation for `cov` for more detail. The
relationship between the correlation coefficient matrix, `R`, and the
covariance matrix, `C`, is
.. math:: R_{ij} = \frac{ C_{ij} } { \sqrt{ C_{ii} C_{jj} } }
The values of `R` are between -1 and 1, inclusive.
Parameters
----------
x : array_like
A 1-D or 2-D array containing multiple variables and observations.
Each row of `x` represents a variable, and each column a single
observation of all those variables. Also see `rowvar` below.
y : array_like, optional
An additional set of variables and observations. `y` has the same
shape as `x`.
rowvar : bool, optional
If `rowvar` is True (default), then each row represents a
variable, with observations in the columns. Otherwise, the relationship
is transposed: each column represents a variable, while the rows
contain observations.
bias : _NoValue, optional
Has no effect, do not use.
.. deprecated:: 1.10.0
ddof : _NoValue, optional
Has no effect, do not use.
.. deprecated:: 1.10.0
dtype : data-type, optional
Data-type of the result. By default, the return data-type will have
at least `numpy.float64` precision.
.. versionadded:: 1.20
Returns
-------
R : ndarray
The correlation coefficient matrix of the variables.
See Also
--------
cov : Covariance matrix
Notes
-----
Due to floating point rounding the resulting array may not be Hermitian,
the diagonal elements may not be 1, and the elements may not satisfy the
inequality abs(a) <= 1. The real and imaginary parts are clipped to the
interval [-1, 1] in an attempt to improve on that situation but is not
much help in the complex case.
This function accepts but discards arguments `bias` and `ddof`. This is
for backwards compatibility with previous versions of this function. These
arguments had no effect on the return values of the function and can be
safely ignored in this and previous versions of numpy.
Examples
--------
>>> import numpy as np
In this example we generate two random arrays, ``xarr`` and ``yarr``, and
compute the row-wise and column-wise Pearson correlation coefficients,
``R``. Since ``rowvar`` is true by default, we first find the row-wise
Pearson correlation coefficients between the variables of ``xarr``.
>>> import numpy as np
>>> rng = np.random.default_rng(seed=42)
>>> xarr = rng.random((3, 3))
>>> xarr
array([[0.77395605, 0.43887844, 0.85859792],
[0.69736803, 0.09417735, 0.97562235],
[0.7611397 , 0.78606431, 0.12811363]])
>>> R1 = np.corrcoef(xarr)
>>> R1
array([[ 1. , 0.99256089, -0.68080986],
[ 0.99256089, 1. , -0.76492172],
[-0.68080986, -0.76492172, 1. ]])
If we add another set of variables and observations ``yarr``, we can
compute the row-wise Pearson correlation coefficients between the
variables in ``xarr`` and ``yarr``.
>>> yarr = rng.random((3, 3))
>>> yarr
array([[0.45038594, 0.37079802, 0.92676499],
[0.64386512, 0.82276161, 0.4434142 ],
[0.22723872, 0.55458479, 0.06381726]])
>>> R2 = np.corrcoef(xarr, yarr)
>>> R2
array([[ 1. , 0.99256089, -0.68080986, 0.75008178, -0.934284 ,
-0.99004057],
[ 0.99256089, 1. , -0.76492172, 0.82502011, -0.97074098,
-0.99981569],
[-0.68080986, -0.76492172, 1. , -0.99507202, 0.89721355,
0.77714685],
[ 0.75008178, 0.82502011, -0.99507202, 1. , -0.93657855,
-0.83571711],
[-0.934284 , -0.97074098, 0.89721355, -0.93657855, 1. ,
0.97517215],
[-0.99004057, -0.99981569, 0.77714685, -0.83571711, 0.97517215,
1. ]])
Finally if we use the option ``rowvar=False``, the columns are now
being treated as the variables and we will find the column-wise Pearson
correlation coefficients between variables in ``xarr`` and ``yarr``.
>>> R3 = np.corrcoef(xarr, yarr, rowvar=False)
>>> R3
array([[ 1. , 0.77598074, -0.47458546, -0.75078643, -0.9665554 ,
0.22423734],
[ 0.77598074, 1. , -0.92346708, -0.99923895, -0.58826587,
-0.44069024],
[-0.47458546, -0.92346708, 1. , 0.93773029, 0.23297648,
0.75137473],
[-0.75078643, -0.99923895, 0.93773029, 1. , 0.55627469,
0.47536961],
[-0.9665554 , -0.58826587, 0.23297648, 0.55627469, 1. ,
-0.46666491],
[ 0.22423734, -0.44069024, 0.75137473, 0.47536961, -0.46666491,
1. ]])
correlate(a, v, mode='valid')
Cross-correlation of two 1-dimensional sequences.
This function computes the correlation as generally defined in signal
processing texts [1]_:
.. math:: c_k = \sum_n a_{n+k} \cdot \overline{v}_n
with a and v sequences being zero-padded where necessary and
:math:`\overline v` denoting complex conjugation.
Parameters
----------
a, v : array_like
Input sequences.
mode : {'valid', 'same', 'full'}, optional
Refer to the `convolve` docstring. Note that the default
is 'valid', unlike `convolve`, which uses 'full'.
Returns
-------
out : ndarray
Discrete cross-correlation of `a` and `v`.
See Also
--------
convolve : Discrete, linear convolution of two one-dimensional sequences.
scipy.signal.correlate : uses FFT which has superior performance
on large arrays.
Notes
-----
The definition of correlation above is not unique and sometimes
correlation may be defined differently. Another common definition is [1]_:
.. math:: c'_k = \sum_n a_{n} \cdot \overline{v_{n+k}}
which is related to :math:`c_k` by :math:`c'_k = c_{-k}`.
`numpy.correlate` may perform slowly in large arrays (i.e. n = 1e5)
because it does not use the FFT to compute the convolution; in that case,
`scipy.signal.correlate` might be preferable.
References
----------
.. [1] Wikipedia, "Cross-correlation",
https://en.wikipedia.org/wiki/Cross-correlation
Examples
--------
>>> import numpy as np
>>> np.correlate([1, 2, 3], [0, 1, 0.5])
array([3.5])
>>> np.correlate([1, 2, 3], [0, 1, 0.5], "same")
array([2. , 3.5, 3. ])
>>> np.correlate([1, 2, 3], [0, 1, 0.5], "full")
array([0.5, 2. , 3.5, 3. , 0. ])
Using complex sequences:
>>> np.correlate([1+1j, 2, 3-1j], [0, 1, 0.5j], 'full')
array([ 0.5-0.5j, 1.0+0.j , 1.5-1.5j, 3.0-1.j , 0.0+0.j ])
Note that you get the time reversed, complex conjugated result
(:math:`\overline{c_{-k}}`) when the two input sequences a and v change
places:
>>> np.correlate([0, 1, 0.5j], [1+1j, 2, 3-1j], 'full')
array([ 0.0+0.j , 3.0+1.j , 1.5+1.5j, 1.0+0.j , 0.5+0.5j])
count_nonzero(a, axis=None, *, keepdims=False)
Counts the number of non-zero values in the array ``a``.
The word "non-zero" is in reference to the Python 2.x
built-in method ``__nonzero__()`` (renamed ``__bool__()``
in Python 3.x) of Python objects that tests an object's
"truthfulness". For example, any number is considered
truthful if it is nonzero, whereas any string is considered
truthful if it is not the empty string. Thus, this function
(recursively) counts how many elements in ``a`` (and in
sub-arrays thereof) have their ``__nonzero__()`` or ``__bool__()``
method evaluated to ``True``.
Parameters
----------
a : array_like
The array for which to count non-zeros.
axis : int or tuple, optional
Axis or tuple of axes along which to count non-zeros.
Default is None, meaning that non-zeros will be counted
along a flattened version of ``a``.
.. versionadded:: 1.12.0
keepdims : bool, optional
If this is set to True, the axes that are counted are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
.. versionadded:: 1.19.0
Returns
-------
count : int or array of int
Number of non-zero values in the array along a given axis.
Otherwise, the total number of non-zero values in the array
is returned.
See Also
--------
nonzero : Return the coordinates of all the non-zero values.
Examples
--------
>>> import numpy as np
>>> np.count_nonzero(np.eye(4))
4
>>> a = np.array([[0, 1, 7, 0],
... [3, 0, 2, 19]])
>>> np.count_nonzero(a)
5
>>> np.count_nonzero(a, axis=0)
array([1, 1, 2, 1])
>>> np.count_nonzero(a, axis=1)
array([2, 3])
>>> np.count_nonzero(a, axis=1, keepdims=True)
array([[2],
[3]])
cov(m, y=None, rowvar=True, bias=False, ddof=None, fweights=None, aweights=None, *, dtype=None)
Estimate a covariance matrix, given data and weights.
Covariance indicates the level to which two variables vary together.
If we examine N-dimensional samples, :math:`X = [x_1, x_2, ... x_N]^T`,
then the covariance matrix element :math:`C_{ij}` is the covariance of
:math:`x_i` and :math:`x_j`. The element :math:`C_{ii}` is the variance
of :math:`x_i`.
See the notes for an outline of the algorithm.
Parameters
----------
m : array_like
A 1-D or 2-D array containing multiple variables and observations.
Each row of `m` represents a variable, and each column a single
observation of all those variables. Also see `rowvar` below.
y : array_like, optional
An additional set of variables and observations. `y` has the same form
as that of `m`.
rowvar : bool, optional
If `rowvar` is True (default), then each row represents a
variable, with observations in the columns. Otherwise, the relationship
is transposed: each column represents a variable, while the rows
contain observations.
bias : bool, optional
Default normalization (False) is by ``(N - 1)``, where ``N`` is the
number of observations given (unbiased estimate). If `bias` is True,
then normalization is by ``N``. These values can be overridden by using
the keyword ``ddof`` in numpy versions >= 1.5.
ddof : int, optional
If not ``None`` the default value implied by `bias` is overridden.
Note that ``ddof=1`` will return the unbiased estimate, even if both
`fweights` and `aweights` are specified, and ``ddof=0`` will return
the simple average. See the notes for the details. The default value
is ``None``.
.. versionadded:: 1.5
fweights : array_like, int, optional
1-D array of integer frequency weights; the number of times each
observation vector should be repeated.
.. versionadded:: 1.10
aweights : array_like, optional
1-D array of observation vector weights. These relative weights are
typically large for observations considered "important" and smaller for
observations considered less "important". If ``ddof=0`` the array of
weights can be used to assign probabilities to observation vectors.
.. versionadded:: 1.10
dtype : data-type, optional
Data-type of the result. By default, the return data-type will have
at least `numpy.float64` precision.
.. versionadded:: 1.20
Returns
-------
out : ndarray
The covariance matrix of the variables.
See Also
--------
corrcoef : Normalized covariance matrix
Notes
-----
Assume that the observations are in the columns of the observation
array `m` and let ``f = fweights`` and ``a = aweights`` for brevity. The
steps to compute the weighted covariance are as follows::
>>> m = np.arange(10, dtype=np.float64)
>>> f = np.arange(10) * 2
>>> a = np.arange(10) ** 2.
>>> ddof = 1
>>> w = f * a
>>> v1 = np.sum(w)
>>> v2 = np.sum(w * a)
>>> m -= np.sum(m * w, axis=None, keepdims=True) / v1
>>> cov = np.dot(m * w, m.T) * v1 / (v1**2 - ddof * v2)
Note that when ``a == 1``, the normalization factor
``v1 / (v1**2 - ddof * v2)`` goes over to ``1 / (np.sum(f) - ddof)``
as it should.
Examples
--------
>>> import numpy as np
Consider two variables, :math:`x_0` and :math:`x_1`, which
correlate perfectly, but in opposite directions:
>>> x = np.array([[0, 2], [1, 1], [2, 0]]).T
>>> x
array([[0, 1, 2],
[2, 1, 0]])
Note how :math:`x_0` increases while :math:`x_1` decreases. The covariance
matrix shows this clearly:
>>> np.cov(x)
array([[ 1., -1.],
[-1., 1.]])
Note that element :math:`C_{0,1}`, which shows the correlation between
:math:`x_0` and :math:`x_1`, is negative.
Further, note how `x` and `y` are combined:
>>> x = [-2.1, -1, 4.3]
>>> y = [3, 1.1, 0.12]
>>> X = np.stack((x, y), axis=0)
>>> np.cov(X)
array([[11.71 , -4.286 ], # may vary
[-4.286 , 2.144133]])
>>> np.cov(x, y)
array([[11.71 , -4.286 ], # may vary
[-4.286 , 2.144133]])
>>> np.cov(x)
array(11.71)
cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)
Return the cross product of two (arrays of) vectors.
The cross product of `a` and `b` in :math:`R^3` is a vector perpendicular
to both `a` and `b`. If `a` and `b` are arrays of vectors, the vectors
are defined by the last axis of `a` and `b` by default, and these axes
can have dimensions 2 or 3. Where the dimension of either `a` or `b` is
2, the third component of the input vector is assumed to be zero and the
cross product calculated accordingly. In cases where both input vectors
have dimension 2, the z-component of the cross product is returned.
Parameters
----------
a : array_like
Components of the first vector(s).
b : array_like
Components of the second vector(s).
axisa : int, optional
Axis of `a` that defines the vector(s). By default, the last axis.
axisb : int, optional
Axis of `b` that defines the vector(s). By default, the last axis.
axisc : int, optional
Axis of `c` containing the cross product vector(s). Ignored if
both input vectors have dimension 2, as the return is scalar.
By default, the last axis.
axis : int, optional
If defined, the axis of `a`, `b` and `c` that defines the vector(s)
and cross product(s). Overrides `axisa`, `axisb` and `axisc`.
Returns
-------
c : ndarray
Vector cross product(s).
Raises
------
ValueError
When the dimension of the vector(s) in `a` and/or `b` does not
equal 2 or 3.
See Also
--------
inner : Inner product
outer : Outer product.
linalg.cross : An Array API compatible variation of ``np.cross``,
which accepts (arrays of) 3-element vectors only.
ix_ : Construct index arrays.
Notes
-----
.. versionadded:: 1.9.0
Supports full broadcasting of the inputs.
Dimension-2 input arrays were deprecated in 2.0.0. If you do need this
functionality, you can use::
def cross2d(x, y):
return x[..., 0] * y[..., 1] - x[..., 1] * y[..., 0]
Examples
--------
Vector cross-product.
>>> import numpy as np
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> np.cross(x, y)
array([-3, 6, -3])
One vector with dimension 2.
>>> x = [1, 2]
>>> y = [4, 5, 6]
>>> np.cross(x, y)
array([12, -6, -3])
Equivalently:
>>> x = [1, 2, 0]
>>> y = [4, 5, 6]
>>> np.cross(x, y)
array([12, -6, -3])
Both vectors with dimension 2.
>>> x = [1,2]
>>> y = [4,5]
>>> np.cross(x, y)
array(-3)
Multiple vector cross-products. Note that the direction of the cross
product vector is defined by the *right-hand rule*.
>>> x = np.array([[1,2,3], [4,5,6]])
>>> y = np.array([[4,5,6], [1,2,3]])
>>> np.cross(x, y)
array([[-3, 6, -3],
[ 3, -6, 3]])
The orientation of `c` can be changed using the `axisc` keyword.
>>> np.cross(x, y, axisc=0)
array([[-3, 3],
[ 6, -6],
[-3, 3]])
Change the vector definition of `x` and `y` using `axisa` and `axisb`.
>>> x = np.array([[1,2,3], [4,5,6], [7, 8, 9]])
>>> y = np.array([[7, 8, 9], [4,5,6], [1,2,3]])
>>> np.cross(x, y)
array([[ -6, 12, -6],
[ 0, 0, 0],
[ 6, -12, 6]])
>>> np.cross(x, y, axisa=0, axisb=0)
array([[-24, 48, -24],
[-30, 60, -30],
[-36, 72, -36]])
cumprod(a, axis=None, dtype=None, out=None)
Return the cumulative product of elements along a given axis.
Parameters
----------
a : array_like
Input array.
axis : int, optional
Axis along which the cumulative product is computed. By default
the input is flattened.
dtype : dtype, optional
Type of the returned array, as well as of the accumulator in which
the elements are multiplied. If *dtype* is not specified, it
defaults to the dtype of `a`, unless `a` has an integer dtype with
a precision less than that of the default platform integer. In
that case, the default platform integer is used instead.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type of the resulting values will be cast if necessary.
Returns
-------
cumprod : ndarray
A new array holding the result is returned unless `out` is
specified, in which case a reference to out is returned.
See Also
--------
cumulative_prod : Array API compatible alternative for ``cumprod``.
:ref:`ufuncs-output-type`
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow.
Examples
--------
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> np.cumprod(a) # intermediate results 1, 1*2
... # total product 1*2*3 = 6
array([1, 2, 6])
>>> a = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.cumprod(a, dtype=float) # specify type of output
array([ 1., 2., 6., 24., 120., 720.])
The cumulative product for each column (i.e., over the rows) of `a`:
>>> np.cumprod(a, axis=0)
array([[ 1, 2, 3],
[ 4, 10, 18]])
The cumulative product for each row (i.e. over the columns) of `a`:
>>> np.cumprod(a,axis=1)
array([[ 1, 2, 6],
[ 4, 20, 120]])
cumsum(a, axis=None, dtype=None, out=None)
Return the cumulative sum of the elements along a given axis.
Parameters
----------
a : array_like
Input array.
axis : int, optional
Axis along which the cumulative sum is computed. The default
(None) is to compute the cumsum over the flattened array.
dtype : dtype, optional
Type of the returned array and of the accumulator in which the
elements are summed. If `dtype` is not specified, it defaults
to the dtype of `a`, unless `a` has an integer dtype with a
precision less than that of the default platform integer. In
that case, the default platform integer is used.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type will be cast if necessary. See :ref:`ufuncs-output-type`
for more details.
Returns
-------
cumsum_along_axis : ndarray.
A new array holding the result is returned unless `out` is
specified, in which case a reference to `out` is returned. The
result has the same size as `a`, and the same shape as `a` if
`axis` is not None or `a` is a 1-d array.
See Also
--------
cumulative_sum : Array API compatible alternative for ``cumsum``.
sum : Sum array elements.
trapezoid : Integration of array values using composite trapezoidal rule.
diff : Calculate the n-th discrete difference along given axis.
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow.
``cumsum(a)[-1]`` may not be equal to ``sum(a)`` for floating-point
values since ``sum`` may use a pairwise summation routine, reducing
the roundoff-error. See `sum` for more information.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> np.cumsum(a)
array([ 1, 3, 6, 10, 15, 21])
>>> np.cumsum(a, dtype=float) # specifies type of output value(s)
array([ 1., 3., 6., 10., 15., 21.])
>>> np.cumsum(a,axis=0) # sum over rows for each of the 3 columns
array([[1, 2, 3],
[5, 7, 9]])
>>> np.cumsum(a,axis=1) # sum over columns for each of the 2 rows
array([[ 1, 3, 6],
[ 4, 9, 15]])
``cumsum(b)[-1]`` may not be equal to ``sum(b)``
>>> b = np.array([1, 2e-9, 3e-9] * 1000000)
>>> b.cumsum()[-1]
1000000.0050045159
>>> b.sum()
1000000.0050000029
cumulative_prod(x, /, *, axis=None, dtype=None, out=None, include_initial=False)
Return the cumulative product of elements along a given axis.
This function is an Array API compatible alternative to `numpy.cumprod`.
Parameters
----------
x : array_like
Input array.
axis : int, optional
Axis along which the cumulative product is computed. The default
(None) is only allowed for one-dimensional arrays. For arrays
with more than one dimension ``axis`` is required.
dtype : dtype, optional
Type of the returned array, as well as of the accumulator in which
the elements are multiplied. If ``dtype`` is not specified, it
defaults to the dtype of ``x``, unless ``x`` has an integer dtype
with a precision less than that of the default platform integer.
In that case, the default platform integer is used instead.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type of the resulting values will be cast if necessary.
See :ref:`ufuncs-output-type` for more details.
include_initial : bool, optional
Boolean indicating whether to include the initial value (ones) as
the first value in the output. With ``include_initial=True``
the shape of the output is different than the shape of the input.
Default: ``False``.
Returns
-------
cumulative_prod_along_axis : ndarray
A new array holding the result is returned unless ``out`` is
specified, in which case a reference to ``out`` is returned. The
result has the same shape as ``x`` if ``include_initial=False``.
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow.
Examples
--------
>>> a = np.array([1, 2, 3])
>>> np.cumulative_prod(a) # intermediate results 1, 1*2
... # total product 1*2*3 = 6
array([1, 2, 6])
>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> np.cumulative_prod(a, dtype=float) # specify type of output
array([ 1., 2., 6., 24., 120., 720.])
The cumulative product for each column (i.e., over the rows) of ``b``:
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.cumulative_prod(b, axis=0)
array([[ 1, 2, 3],
[ 4, 10, 18]])
The cumulative product for each row (i.e. over the columns) of ``b``:
>>> np.cumulative_prod(b, axis=1)
array([[ 1, 2, 6],
[ 4, 20, 120]])
cumulative_sum(x, /, *, axis=None, dtype=None, out=None, include_initial=False)
Return the cumulative sum of the elements along a given axis.
This function is an Array API compatible alternative to `numpy.cumsum`.
Parameters
----------
x : array_like
Input array.
axis : int, optional
Axis along which the cumulative sum is computed. The default
(None) is only allowed for one-dimensional arrays. For arrays
with more than one dimension ``axis`` is required.
dtype : dtype, optional
Type of the returned array and of the accumulator in which the
elements are summed. If ``dtype`` is not specified, it defaults
to the dtype of ``x``, unless ``x`` has an integer dtype with
a precision less than that of the default platform integer.
In that case, the default platform integer is used.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type will be cast if necessary. See :ref:`ufuncs-output-type`
for more details.
include_initial : bool, optional
Boolean indicating whether to include the initial value (ones) as
the first value in the output. With ``include_initial=True``
the shape of the output is different than the shape of the input.
Default: ``False``.
Returns
-------
cumulative_sum_along_axis : ndarray
A new array holding the result is returned unless ``out`` is
specified, in which case a reference to ``out`` is returned. The
result has the same shape as ``x`` if ``include_initial=False``.
See Also
--------
sum : Sum array elements.
trapezoid : Integration of array values using composite trapezoidal rule.
diff : Calculate the n-th discrete difference along given axis.
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow.
``cumulative_sum(a)[-1]`` may not be equal to ``sum(a)`` for
floating-point values since ``sum`` may use a pairwise summation routine,
reducing the roundoff-error. See `sum` for more information.
Examples
--------
>>> a = np.array([1, 2, 3, 4, 5, 6])
>>> a
array([1, 2, 3, 4, 5, 6])
>>> np.cumulative_sum(a)
array([ 1, 3, 6, 10, 15, 21])
>>> np.cumulative_sum(a, dtype=float) # specifies type of output value(s)
array([ 1., 3., 6., 10., 15., 21.])
>>> b = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.cumulative_sum(b,axis=0) # sum over rows for each of the 3 columns
array([[1, 2, 3],
[5, 7, 9]])
>>> np.cumulative_sum(b,axis=1) # sum over columns for each of the 2 rows
array([[ 1, 3, 6],
[ 4, 9, 15]])
``cumulative_sum(c)[-1]`` may not be equal to ``sum(c)``
>>> c = np.array([1, 2e-9, 3e-9] * 1000000)
>>> np.cumulative_sum(c)[-1]
1000000.0050045159
>>> c.sum()
1000000.0050000029
datetime_as_string(...)
datetime_as_string(arr, unit=None, timezone='naive', casting='same_kind')
Convert an array of datetimes into an array of strings.
Parameters
----------
arr : array_like of datetime64
The array of UTC timestamps to format.
unit : str
One of None, 'auto', or
a :ref:`datetime unit <arrays.dtypes.dateunits>`.
timezone : {'naive', 'UTC', 'local'} or tzinfo
Timezone information to use when displaying the datetime. If 'UTC',
end with a Z to indicate UTC time. If 'local', convert to the local
timezone first, and suffix with a +-#### timezone offset. If a tzinfo
object, then do as with 'local', but use the specified timezone.
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}
Casting to allow when changing between datetime units.
Returns
-------
str_arr : ndarray
An array of strings the same shape as `arr`.
Examples
--------
>>> import numpy as np
>>> import pytz
>>> d = np.arange('2002-10-27T04:30', 4*60, 60, dtype='M8[m]')
>>> d
array(['2002-10-27T04:30', '2002-10-27T05:30', '2002-10-27T06:30',
'2002-10-27T07:30'], dtype='datetime64[m]')
Setting the timezone to UTC shows the same information, but with a Z suffix
>>> np.datetime_as_string(d, timezone='UTC')
array(['2002-10-27T04:30Z', '2002-10-27T05:30Z', '2002-10-27T06:30Z',
'2002-10-27T07:30Z'], dtype='<U35')
Note that we picked datetimes that cross a DST boundary. Passing in a
``pytz`` timezone object will print the appropriate offset
>>> np.datetime_as_string(d, timezone=pytz.timezone('US/Eastern'))
array(['2002-10-27T00:30-0400', '2002-10-27T01:30-0400',
'2002-10-27T01:30-0500', '2002-10-27T02:30-0500'], dtype='<U39')
Passing in a unit will change the precision
>>> np.datetime_as_string(d, unit='h')
array(['2002-10-27T04', '2002-10-27T05', '2002-10-27T06', '2002-10-27T07'],
dtype='<U32')
>>> np.datetime_as_string(d, unit='s')
array(['2002-10-27T04:30:00', '2002-10-27T05:30:00', '2002-10-27T06:30:00',
'2002-10-27T07:30:00'], dtype='<U38')
'casting' can be used to specify whether precision can be changed
>>> np.datetime_as_string(d, unit='h', casting='safe')
Traceback (most recent call last):
...
TypeError: Cannot create a datetime string as units 'h' from a NumPy
datetime with units 'm' according to the rule 'safe'
datetime_data(...)
datetime_data(dtype, /)
Get information about the step size of a date or time type.
The returned tuple can be passed as the second argument of `numpy.datetime64` and
`numpy.timedelta64`.
Parameters
----------
dtype : dtype
The dtype object, which must be a `datetime64` or `timedelta64` type.
Returns
-------
unit : str
The :ref:`datetime unit <arrays.dtypes.dateunits>` on which this dtype
is based.
count : int
The number of base units in a step.
Examples
--------
>>> import numpy as np
>>> dt_25s = np.dtype('timedelta64[25s]')
>>> np.datetime_data(dt_25s)
('s', 25)
>>> np.array(10, dt_25s).astype('timedelta64[s]')
array(250, dtype='timedelta64[s]')
The result can be used to construct a datetime that uses the same units
as a timedelta
>>> np.datetime64('2010', np.datetime_data(dt_25s))
np.datetime64('2010-01-01T00:00:00','25s')
delete(arr, obj, axis=None)
Return a new array with sub-arrays along an axis deleted. For a one
dimensional array, this returns those entries not returned by
`arr[obj]`.
Parameters
----------
arr : array_like
Input array.
obj : slice, int or array of ints
Indicate indices of sub-arrays to remove along the specified axis.
.. versionchanged:: 1.19.0
Boolean indices are now treated as a mask of elements to remove,
rather than being cast to the integers 0 and 1.
axis : int, optional
The axis along which to delete the subarray defined by `obj`.
If `axis` is None, `obj` is applied to the flattened array.
Returns
-------
out : ndarray
A copy of `arr` with the elements specified by `obj` removed. Note
that `delete` does not occur in-place. If `axis` is None, `out` is
a flattened array.
See Also
--------
insert : Insert elements into an array.
append : Append elements at the end of an array.
Notes
-----
Often it is preferable to use a boolean mask. For example:
>>> arr = np.arange(12) + 1
>>> mask = np.ones(len(arr), dtype=bool)
>>> mask[[0,2,4]] = False
>>> result = arr[mask,...]
Is equivalent to ``np.delete(arr, [0,2,4], axis=0)``, but allows further
use of `mask`.
Examples
--------
>>> import numpy as np
>>> arr = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
>>> arr
array([[ 1, 2, 3, 4],
[ 5, 6, 7, 8],
[ 9, 10, 11, 12]])
>>> np.delete(arr, 1, 0)
array([[ 1, 2, 3, 4],
[ 9, 10, 11, 12]])
>>> np.delete(arr, np.s_[::2], 1)
array([[ 2, 4],
[ 6, 8],
[10, 12]])
>>> np.delete(arr, [1,3,5], None)
array([ 1, 3, 5, 7, 8, 9, 10, 11, 12])
diag(v, k=0)
Extract a diagonal or construct a diagonal array.
See the more detailed documentation for ``numpy.diagonal`` if you use this
function to extract a diagonal and wish to write to the resulting array;
whether it returns a copy or a view depends on what version of numpy you
are using.
Parameters
----------
v : array_like
If `v` is a 2-D array, return a copy of its `k`-th diagonal.
If `v` is a 1-D array, return a 2-D array with `v` on the `k`-th
diagonal.
k : int, optional
Diagonal in question. The default is 0. Use `k>0` for diagonals
above the main diagonal, and `k<0` for diagonals below the main
diagonal.
Returns
-------
out : ndarray
The extracted diagonal or constructed diagonal array.
See Also
--------
diagonal : Return specified diagonals.
diagflat : Create a 2-D array with the flattened input as a diagonal.
trace : Sum along diagonals.
triu : Upper triangle of an array.
tril : Lower triangle of an array.
Examples
--------
>>> import numpy as np
>>> x = np.arange(9).reshape((3,3))
>>> x
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> np.diag(x)
array([0, 4, 8])
>>> np.diag(x, k=1)
array([1, 5])
>>> np.diag(x, k=-1)
array([3, 7])
>>> np.diag(np.diag(x))
array([[0, 0, 0],
[0, 4, 0],
[0, 0, 8]])
diag_indices(n, ndim=2)
Return the indices to access the main diagonal of an array.
This returns a tuple of indices that can be used to access the main
diagonal of an array `a` with ``a.ndim >= 2`` dimensions and shape
(n, n, ..., n). For ``a.ndim = 2`` this is the usual diagonal, for
``a.ndim > 2`` this is the set of indices to access ``a[i, i, ..., i]``
for ``i = [0..n-1]``.
Parameters
----------
n : int
The size, along each dimension, of the arrays for which the returned
indices can be used.
ndim : int, optional
The number of dimensions.
See Also
--------
diag_indices_from
Notes
-----
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
Create a set of indices to access the diagonal of a (4, 4) array:
>>> di = np.diag_indices(4)
>>> di
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> a[di] = 100
>>> a
array([[100, 1, 2, 3],
[ 4, 100, 6, 7],
[ 8, 9, 100, 11],
[ 12, 13, 14, 100]])
Now, we create indices to manipulate a 3-D array:
>>> d3 = np.diag_indices(2, 3)
>>> d3
(array([0, 1]), array([0, 1]), array([0, 1]))
And use it to set the diagonal of an array of zeros to 1:
>>> a = np.zeros((2, 2, 2), dtype=int)
>>> a[d3] = 1
>>> a
array([[[1, 0],
[0, 0]],
[[0, 0],
[0, 1]]])
diag_indices_from(arr)
Return the indices to access the main diagonal of an n-dimensional array.
See `diag_indices` for full details.
Parameters
----------
arr : array, at least 2-D
See Also
--------
diag_indices
Notes
-----
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
Create a 4 by 4 array.
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Get the indices of the diagonal elements.
>>> di = np.diag_indices_from(a)
>>> di
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
>>> a[di]
array([ 0, 5, 10, 15])
This is simply syntactic sugar for diag_indices.
>>> np.diag_indices(a.shape[0])
(array([0, 1, 2, 3]), array([0, 1, 2, 3]))
diagflat(v, k=0)
Create a two-dimensional array with the flattened input as a diagonal.
Parameters
----------
v : array_like
Input data, which is flattened and set as the `k`-th
diagonal of the output.
k : int, optional
Diagonal to set; 0, the default, corresponds to the "main" diagonal,
a positive (negative) `k` giving the number of the diagonal above
(below) the main.
Returns
-------
out : ndarray
The 2-D output array.
See Also
--------
diag : MATLAB work-alike for 1-D and 2-D arrays.
diagonal : Return specified diagonals.
trace : Sum along diagonals.
Examples
--------
>>> import numpy as np
>>> np.diagflat([[1,2], [3,4]])
array([[1, 0, 0, 0],
[0, 2, 0, 0],
[0, 0, 3, 0],
[0, 0, 0, 4]])
>>> np.diagflat([1,2], 1)
array([[0, 1, 0],
[0, 0, 2],
[0, 0, 0]])
diagonal(a, offset=0, axis1=0, axis2=1)
Return specified diagonals.
If `a` is 2-D, returns the diagonal of `a` with the given offset,
i.e., the collection of elements of the form ``a[i, i+offset]``. If
`a` has more than two dimensions, then the axes specified by `axis1`
and `axis2` are used to determine the 2-D sub-array whose diagonal is
returned. The shape of the resulting array can be determined by
removing `axis1` and `axis2` and appending an index to the right equal
to the size of the resulting diagonals.
In versions of NumPy prior to 1.7, this function always returned a new,
independent array containing a copy of the values in the diagonal.
In NumPy 1.7 and 1.8, it continues to return a copy of the diagonal,
but depending on this fact is deprecated. Writing to the resulting
array continues to work as it used to, but a FutureWarning is issued.
Starting in NumPy 1.9 it returns a read-only view on the original array.
Attempting to write to the resulting array will produce an error.
In some future release, it will return a read/write view and writing to
the returned array will alter your original array. The returned array
will have the same type as the input array.
If you don't write to the array returned by this function, then you can
just ignore all of the above.
If you depend on the current behavior, then we suggest copying the
returned array explicitly, i.e., use ``np.diagonal(a).copy()`` instead
of just ``np.diagonal(a)``. This will work with both past and future
versions of NumPy.
Parameters
----------
a : array_like
Array from which the diagonals are taken.
offset : int, optional
Offset of the diagonal from the main diagonal. Can be positive or
negative. Defaults to main diagonal (0).
axis1 : int, optional
Axis to be used as the first axis of the 2-D sub-arrays from which
the diagonals should be taken. Defaults to first axis (0).
axis2 : int, optional
Axis to be used as the second axis of the 2-D sub-arrays from
which the diagonals should be taken. Defaults to second axis (1).
Returns
-------
array_of_diagonals : ndarray
If `a` is 2-D, then a 1-D array containing the diagonal and of the
same type as `a` is returned unless `a` is a `matrix`, in which case
a 1-D array rather than a (2-D) `matrix` is returned in order to
maintain backward compatibility.
If ``a.ndim > 2``, then the dimensions specified by `axis1` and `axis2`
are removed, and a new axis inserted at the end corresponding to the
diagonal.
Raises
------
ValueError
If the dimension of `a` is less than 2.
See Also
--------
diag : MATLAB work-a-like for 1-D and 2-D arrays.
diagflat : Create diagonal arrays.
trace : Sum along diagonals.
Examples
--------
>>> import numpy as np
>>> a = np.arange(4).reshape(2,2)
>>> a
array([[0, 1],
[2, 3]])
>>> a.diagonal()
array([0, 3])
>>> a.diagonal(1)
array([1])
A 3-D example:
>>> a = np.arange(8).reshape(2,2,2); a
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> a.diagonal(0, # Main diagonals of two arrays created by skipping
... 0, # across the outer(left)-most axis last and
... 1) # the "middle" (row) axis first.
array([[0, 6],
[1, 7]])
The sub-arrays whose main diagonals we just obtained; note that each
corresponds to fixing the right-most (column) axis, and that the
diagonals are "packed" in rows.
>>> a[:,:,0] # main diagonal is [0 6]
array([[0, 2],
[4, 6]])
>>> a[:,:,1] # main diagonal is [1 7]
array([[1, 3],
[5, 7]])
The anti-diagonal can be obtained by reversing the order of elements
using either `numpy.flipud` or `numpy.fliplr`.
>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> np.fliplr(a).diagonal() # Horizontal flip
array([2, 4, 6])
>>> np.flipud(a).diagonal() # Vertical flip
array([6, 4, 2])
Note that the order in which the diagonal is retrieved varies depending
on the flip function.
diff(a, n=1, axis=-1, prepend=<no value>, append=<no value>)
Calculate the n-th discrete difference along the given axis.
The first difference is given by ``out[i] = a[i+1] - a[i]`` along
the given axis, higher differences are calculated by using `diff`
recursively.
Parameters
----------
a : array_like
Input array
n : int, optional
The number of times values are differenced. If zero, the input
is returned as-is.
axis : int, optional
The axis along which the difference is taken, default is the
last axis.
prepend, append : array_like, optional
Values to prepend or append to `a` along axis prior to
performing the difference. Scalar values are expanded to
arrays with length 1 in the direction of axis and the shape
of the input array in along all other axes. Otherwise the
dimension and shape must match `a` except along axis.
.. versionadded:: 1.16.0
Returns
-------
diff : ndarray
The n-th differences. The shape of the output is the same as `a`
except along `axis` where the dimension is smaller by `n`. The
type of the output is the same as the type of the difference
between any two elements of `a`. This is the same as the type of
`a` in most cases. A notable exception is `datetime64`, which
results in a `timedelta64` output array.
See Also
--------
gradient, ediff1d, cumsum
Notes
-----
Type is preserved for boolean arrays, so the result will contain
`False` when consecutive elements are the same and `True` when they
differ.
For unsigned integer arrays, the results will also be unsigned. This
should not be surprising, as the result is consistent with
calculating the difference directly:
>>> u8_arr = np.array([1, 0], dtype=np.uint8)
>>> np.diff(u8_arr)
array([255], dtype=uint8)
>>> u8_arr[1,...] - u8_arr[0,...]
255
If this is not desirable, then the array should be cast to a larger
integer type first:
>>> i16_arr = u8_arr.astype(np.int16)
>>> np.diff(i16_arr)
array([-1], dtype=int16)
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2, 4, 7, 0])
>>> np.diff(x)
array([ 1, 2, 3, -7])
>>> np.diff(x, n=2)
array([ 1, 1, -10])
>>> x = np.array([[1, 3, 6, 10], [0, 5, 6, 8]])
>>> np.diff(x)
array([[2, 3, 4],
[5, 1, 2]])
>>> np.diff(x, axis=0)
array([[-1, 2, 0, -2]])
>>> x = np.arange('1066-10-13', '1066-10-16', dtype=np.datetime64)
>>> np.diff(x)
array([1, 1], dtype='timedelta64[D]')
digitize(x, bins, right=False)
Return the indices of the bins to which each value in input array belongs.
========= ============= ============================
`right` order of bins returned index `i` satisfies
========= ============= ============================
``False`` increasing ``bins[i-1] <= x < bins[i]``
``True`` increasing ``bins[i-1] < x <= bins[i]``
``False`` decreasing ``bins[i-1] > x >= bins[i]``
``True`` decreasing ``bins[i-1] >= x > bins[i]``
========= ============= ============================
If values in `x` are beyond the bounds of `bins`, 0 or ``len(bins)`` is
returned as appropriate.
Parameters
----------
x : array_like
Input array to be binned. Prior to NumPy 1.10.0, this array had to
be 1-dimensional, but can now have any shape.
bins : array_like
Array of bins. It has to be 1-dimensional and monotonic.
right : bool, optional
Indicating whether the intervals include the right or the left bin
edge. Default behavior is (right==False) indicating that the interval
does not include the right edge. The left bin end is open in this
case, i.e., bins[i-1] <= x < bins[i] is the default behavior for
monotonically increasing bins.
Returns
-------
indices : ndarray of ints
Output array of indices, of same shape as `x`.
Raises
------
ValueError
If `bins` is not monotonic.
TypeError
If the type of the input is complex.
See Also
--------
bincount, histogram, unique, searchsorted
Notes
-----
If values in `x` are such that they fall outside the bin range,
attempting to index `bins` with the indices that `digitize` returns
will result in an IndexError.
.. versionadded:: 1.10.0
`numpy.digitize` is implemented in terms of `numpy.searchsorted`.
This means that a binary search is used to bin the values, which scales
much better for larger number of bins than the previous linear search.
It also removes the requirement for the input array to be 1-dimensional.
For monotonically *increasing* `bins`, the following are equivalent::
np.digitize(x, bins, right=True)
np.searchsorted(bins, x, side='left')
Note that as the order of the arguments are reversed, the side must be too.
The `searchsorted` call is marginally faster, as it does not do any
monotonicity checks. Perhaps more importantly, it supports all dtypes.
Examples
--------
>>> import numpy as np
>>> x = np.array([0.2, 6.4, 3.0, 1.6])
>>> bins = np.array([0.0, 1.0, 2.5, 4.0, 10.0])
>>> inds = np.digitize(x, bins)
>>> inds
array([1, 4, 3, 2])
>>> for n in range(x.size):
... print(bins[inds[n]-1], "<=", x[n], "<", bins[inds[n]])
...
0.0 <= 0.2 < 1.0
4.0 <= 6.4 < 10.0
2.5 <= 3.0 < 4.0
1.0 <= 1.6 < 2.5
>>> x = np.array([1.2, 10.0, 12.4, 15.5, 20.])
>>> bins = np.array([0, 5, 10, 15, 20])
>>> np.digitize(x,bins,right=True)
array([1, 2, 3, 4, 4])
>>> np.digitize(x,bins,right=False)
array([1, 3, 3, 4, 5])
dot(...)
dot(a, b, out=None)
Dot product of two arrays. Specifically,
- If both `a` and `b` are 1-D arrays, it is inner product of vectors
(without complex conjugation).
- If both `a` and `b` are 2-D arrays, it is matrix multiplication,
but using :func:`matmul` or ``a @ b`` is preferred.
- If either `a` or `b` is 0-D (scalar), it is equivalent to
:func:`multiply` and using ``numpy.multiply(a, b)`` or ``a * b`` is
preferred.
- If `a` is an N-D array and `b` is a 1-D array, it is a sum product over
the last axis of `a` and `b`.
- If `a` is an N-D array and `b` is an M-D array (where ``M>=2``), it is a
sum product over the last axis of `a` and the second-to-last axis of
`b`::
dot(a, b)[i,j,k,m] = sum(a[i,j,:] * b[k,:,m])
It uses an optimized BLAS library when possible (see `numpy.linalg`).
Parameters
----------
a : array_like
First argument.
b : array_like
Second argument.
out : ndarray, optional
Output argument. This must have the exact kind that would be returned
if it was not used. In particular, it must have the right type, must be
C-contiguous, and its dtype must be the dtype that would be returned
for `dot(a,b)`. This is a performance feature. Therefore, if these
conditions are not met, an exception is raised, instead of attempting
to be flexible.
Returns
-------
output : ndarray
Returns the dot product of `a` and `b`. If `a` and `b` are both
scalars or both 1-D arrays then a scalar is returned; otherwise
an array is returned.
If `out` is given, then it is returned.
Raises
------
ValueError
If the last dimension of `a` is not the same size as
the second-to-last dimension of `b`.
See Also
--------
vdot : Complex-conjugating dot product.
tensordot : Sum products over arbitrary axes.
einsum : Einstein summation convention.
matmul : '@' operator as method with out parameter.
linalg.multi_dot : Chained dot product.
Examples
--------
>>> import numpy as np
>>> np.dot(3, 4)
12
Neither argument is complex-conjugated:
>>> np.dot([2j, 3j], [2j, 3j])
(-13+0j)
For 2-D arrays it is the matrix product:
>>> a = [[1, 0], [0, 1]]
>>> b = [[4, 1], [2, 2]]
>>> np.dot(a, b)
array([[4, 1],
[2, 2]])
>>> a = np.arange(3*4*5*6).reshape((3,4,5,6))
>>> b = np.arange(3*4*5*6)[::-1].reshape((5,4,6,3))
>>> np.dot(a, b)[2,3,2,1,2,2]
499128
>>> sum(a[2,3,2,:] * b[1,2,:,2])
499128
dsplit(ary, indices_or_sections)
Split array into multiple sub-arrays along the 3rd axis (depth).
Please refer to the `split` documentation. `dsplit` is equivalent
to `split` with ``axis=2``, the array is always split along the third
axis provided the array dimension is greater than or equal to 3.
See Also
--------
split : Split an array into multiple sub-arrays of equal size.
Examples
--------
>>> import numpy as np
>>> x = np.arange(16.0).reshape(2, 2, 4)
>>> x
array([[[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.]],
[[ 8., 9., 10., 11.],
[12., 13., 14., 15.]]])
>>> np.dsplit(x, 2)
[array([[[ 0., 1.],
[ 4., 5.]],
[[ 8., 9.],
[12., 13.]]]), array([[[ 2., 3.],
[ 6., 7.]],
[[10., 11.],
[14., 15.]]])]
>>> np.dsplit(x, np.array([3, 6]))
[array([[[ 0., 1., 2.],
[ 4., 5., 6.]],
[[ 8., 9., 10.],
[12., 13., 14.]]]),
array([[[ 3.],
[ 7.]],
[[11.],
[15.]]]),
array([], shape=(2, 2, 0), dtype=float64)]
dstack(tup)
Stack arrays in sequence depth wise (along third axis).
This is equivalent to concatenation along the third axis after 2-D arrays
of shape `(M,N)` have been reshaped to `(M,N,1)` and 1-D arrays of shape
`(N,)` have been reshaped to `(1,N,1)`. Rebuilds arrays divided by
`dsplit`.
This function makes most sense for arrays with up to 3 dimensions. For
instance, for pixel-data with a height (first axis), width (second axis),
and r/g/b channels (third axis). The functions `concatenate`, `stack` and
`block` provide more general stacking and concatenation operations.
Parameters
----------
tup : sequence of arrays
The arrays must have the same shape along all but the third axis.
1-D or 2-D arrays must have the same shape.
Returns
-------
stacked : ndarray
The array formed by stacking the given arrays, will be at least 3-D.
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
block : Assemble an nd-array from nested lists of blocks.
vstack : Stack arrays in sequence vertically (row wise).
hstack : Stack arrays in sequence horizontally (column wise).
column_stack : Stack 1-D arrays as columns into a 2-D array.
dsplit : Split array along third axis.
Examples
--------
>>> import numpy as np
>>> a = np.array((1,2,3))
>>> b = np.array((2,3,4))
>>> np.dstack((a,b))
array([[[1, 2],
[2, 3],
[3, 4]]])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[2],[3],[4]])
>>> np.dstack((a,b))
array([[[1, 2]],
[[2, 3]],
[[3, 4]]])
ediff1d(ary, to_end=None, to_begin=None)
The differences between consecutive elements of an array.
Parameters
----------
ary : array_like
If necessary, will be flattened before the differences are taken.
to_end : array_like, optional
Number(s) to append at the end of the returned differences.
to_begin : array_like, optional
Number(s) to prepend at the beginning of the returned differences.
Returns
-------
ediff1d : ndarray
The differences. Loosely, this is ``ary.flat[1:] - ary.flat[:-1]``.
See Also
--------
diff, gradient
Notes
-----
When applied to masked arrays, this function drops the mask information
if the `to_begin` and/or `to_end` parameters are used.
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2, 4, 7, 0])
>>> np.ediff1d(x)
array([ 1, 2, 3, -7])
>>> np.ediff1d(x, to_begin=-99, to_end=np.array([88, 99]))
array([-99, 1, 2, ..., -7, 88, 99])
The returned array is always 1D.
>>> y = [[1, 2, 4], [1, 6, 24]]
>>> np.ediff1d(y)
array([ 1, 2, -3, 5, 18])
einsum(*operands, out=None, optimize=False, **kwargs)
einsum(subscripts, *operands, out=None, dtype=None, order='K',
casting='safe', optimize=False)
Evaluates the Einstein summation convention on the operands.
Using the Einstein summation convention, many common multi-dimensional,
linear algebraic array operations can be represented in a simple fashion.
In *implicit* mode `einsum` computes these values.
In *explicit* mode, `einsum` provides further flexibility to compute
other array operations that might not be considered classical Einstein
summation operations, by disabling, or forcing summation over specified
subscript labels.
See the notes and examples for clarification.
Parameters
----------
subscripts : str
Specifies the subscripts for summation as comma separated list of
subscript labels. An implicit (classical Einstein summation)
calculation is performed unless the explicit indicator '->' is
included as well as subscript labels of the precise output form.
operands : list of array_like
These are the arrays for the operation.
out : ndarray, optional
If provided, the calculation is done into this array.
dtype : {data-type, None}, optional
If provided, forces the calculation to use the data type specified.
Note that you may have to also give a more liberal `casting`
parameter to allow the conversions. Default is None.
order : {'C', 'F', 'A', 'K'}, optional
Controls the memory layout of the output. 'C' means it should
be C contiguous. 'F' means it should be Fortran contiguous,
'A' means it should be 'F' if the inputs are all 'F', 'C' otherwise.
'K' means it should be as close to the layout as the inputs as
is possible, including arbitrarily permuted axes.
Default is 'K'.
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Setting this to
'unsafe' is not recommended, as it can adversely affect accumulations.
* 'no' means the data types should not be cast at all.
* 'equiv' means only byte-order changes are allowed.
* 'safe' means only casts which can preserve values are allowed.
* 'same_kind' means only safe casts or casts within a kind,
like float64 to float32, are allowed.
* 'unsafe' means any data conversions may be done.
Default is 'safe'.
optimize : {False, True, 'greedy', 'optimal'}, optional
Controls if intermediate optimization should occur. No optimization
will occur if False and True will default to the 'greedy' algorithm.
Also accepts an explicit contraction list from the ``np.einsum_path``
function. See ``np.einsum_path`` for more details. Defaults to False.
Returns
-------
output : ndarray
The calculation based on the Einstein summation convention.
See Also
--------
einsum_path, dot, inner, outer, tensordot, linalg.multi_dot
einsum:
Similar verbose interface is provided by the
`einops <https://github.com/arogozhnikov/einops>`_ package to cover
additional operations: transpose, reshape/flatten, repeat/tile,
squeeze/unsqueeze and reductions.
The `opt_einsum <https://optimized-einsum.readthedocs.io/en/stable/>`_
optimizes contraction order for einsum-like expressions
in backend-agnostic manner.
Notes
-----
.. versionadded:: 1.6.0
The Einstein summation convention can be used to compute
many multi-dimensional, linear algebraic array operations. `einsum`
provides a succinct way of representing these.
A non-exhaustive list of these operations,
which can be computed by `einsum`, is shown below along with examples:
* Trace of an array, :py:func:`numpy.trace`.
* Return a diagonal, :py:func:`numpy.diag`.
* Array axis summations, :py:func:`numpy.sum`.
* Transpositions and permutations, :py:func:`numpy.transpose`.
* Matrix multiplication and dot product, :py:func:`numpy.matmul`
:py:func:`numpy.dot`.
* Vector inner and outer products, :py:func:`numpy.inner`
:py:func:`numpy.outer`.
* Broadcasting, element-wise and scalar multiplication,
:py:func:`numpy.multiply`.
* Tensor contractions, :py:func:`numpy.tensordot`.
* Chained array operations, in efficient calculation order,
:py:func:`numpy.einsum_path`.
The subscripts string is a comma-separated list of subscript labels,
where each label refers to a dimension of the corresponding operand.
Whenever a label is repeated it is summed, so ``np.einsum('i,i', a, b)``
is equivalent to :py:func:`np.inner(a,b) <numpy.inner>`. If a label
appears only once, it is not summed, so ``np.einsum('i', a)``
produces a view of ``a`` with no changes. A further example
``np.einsum('ij,jk', a, b)`` describes traditional matrix multiplication
and is equivalent to :py:func:`np.matmul(a,b) <numpy.matmul>`.
Repeated subscript labels in one operand take the diagonal.
For example, ``np.einsum('ii', a)`` is equivalent to
:py:func:`np.trace(a) <numpy.trace>`.
In *implicit mode*, the chosen subscripts are important
since the axes of the output are reordered alphabetically. This
means that ``np.einsum('ij', a)`` doesn't affect a 2D array, while
``np.einsum('ji', a)`` takes its transpose. Additionally,
``np.einsum('ij,jk', a, b)`` returns a matrix multiplication, while,
``np.einsum('ij,jh', a, b)`` returns the transpose of the
multiplication since subscript 'h' precedes subscript 'i'.
In *explicit mode* the output can be directly controlled by
specifying output subscript labels. This requires the
identifier '->' as well as the list of output subscript labels.
This feature increases the flexibility of the function since
summing can be disabled or forced when required. The call
``np.einsum('i->', a)`` is like :py:func:`np.sum(a) <numpy.sum>`
if ``a`` is a 1-D array, and ``np.einsum('ii->i', a)``
is like :py:func:`np.diag(a) <numpy.diag>` if ``a`` is a square 2-D array.
The difference is that `einsum` does not allow broadcasting by default.
Additionally ``np.einsum('ij,jh->ih', a, b)`` directly specifies the
order of the output subscript labels and therefore returns matrix
multiplication, unlike the example above in implicit mode.
To enable and control broadcasting, use an ellipsis. Default
NumPy-style broadcasting is done by adding an ellipsis
to the left of each term, like ``np.einsum('...ii->...i', a)``.
``np.einsum('...i->...', a)`` is like
:py:func:`np.sum(a, axis=-1) <numpy.sum>` for array ``a`` of any shape.
To take the trace along the first and last axes,
you can do ``np.einsum('i...i', a)``, or to do a matrix-matrix
product with the left-most indices instead of rightmost, one can do
``np.einsum('ij...,jk...->ik...', a, b)``.
When there is only one operand, no axes are summed, and no output
parameter is provided, a view into the operand is returned instead
of a new array. Thus, taking the diagonal as ``np.einsum('ii->i', a)``
produces a view (changed in version 1.10.0).
`einsum` also provides an alternative way to provide the subscripts and
operands as ``einsum(op0, sublist0, op1, sublist1, ..., [sublistout])``.
If the output shape is not provided in this format `einsum` will be
calculated in implicit mode, otherwise it will be performed explicitly.
The examples below have corresponding `einsum` calls with the two
parameter methods.
.. versionadded:: 1.10.0
Views returned from einsum are now writeable whenever the input array
is writeable. For example, ``np.einsum('ijk...->kji...', a)`` will now
have the same effect as :py:func:`np.swapaxes(a, 0, 2) <numpy.swapaxes>`
and ``np.einsum('ii->i', a)`` will return a writeable view of the diagonal
of a 2D array.
.. versionadded:: 1.12.0
Added the ``optimize`` argument which will optimize the contraction order
of an einsum expression. For a contraction with three or more operands
this can greatly increase the computational efficiency at the cost of
a larger memory footprint during computation.
Typically a 'greedy' algorithm is applied which empirical tests have shown
returns the optimal path in the majority of cases. In some cases 'optimal'
will return the superlative path through a more expensive, exhaustive
search. For iterative calculations it may be advisable to calculate
the optimal path once and reuse that path by supplying it as an argument.
An example is given below.
See :py:func:`numpy.einsum_path` for more details.
Examples
--------
>>> a = np.arange(25).reshape(5,5)
>>> b = np.arange(5)
>>> c = np.arange(6).reshape(2,3)
Trace of a matrix:
>>> np.einsum('ii', a)
60
>>> np.einsum(a, [0,0])
60
>>> np.trace(a)
60
Extract the diagonal (requires explicit form):
>>> np.einsum('ii->i', a)
array([ 0, 6, 12, 18, 24])
>>> np.einsum(a, [0,0], [0])
array([ 0, 6, 12, 18, 24])
>>> np.diag(a)
array([ 0, 6, 12, 18, 24])
Sum over an axis (requires explicit form):
>>> np.einsum('ij->i', a)
array([ 10, 35, 60, 85, 110])
>>> np.einsum(a, [0,1], [0])
array([ 10, 35, 60, 85, 110])
>>> np.sum(a, axis=1)
array([ 10, 35, 60, 85, 110])
For higher dimensional arrays summing a single axis can be done
with ellipsis:
>>> np.einsum('...j->...', a)
array([ 10, 35, 60, 85, 110])
>>> np.einsum(a, [Ellipsis,1], [Ellipsis])
array([ 10, 35, 60, 85, 110])
Compute a matrix transpose, or reorder any number of axes:
>>> np.einsum('ji', c)
array([[0, 3],
[1, 4],
[2, 5]])
>>> np.einsum('ij->ji', c)
array([[0, 3],
[1, 4],
[2, 5]])
>>> np.einsum(c, [1,0])
array([[0, 3],
[1, 4],
[2, 5]])
>>> np.transpose(c)
array([[0, 3],
[1, 4],
[2, 5]])
Vector inner products:
>>> np.einsum('i,i', b, b)
30
>>> np.einsum(b, [0], b, [0])
30
>>> np.inner(b,b)
30
Matrix vector multiplication:
>>> np.einsum('ij,j', a, b)
array([ 30, 80, 130, 180, 230])
>>> np.einsum(a, [0,1], b, [1])
array([ 30, 80, 130, 180, 230])
>>> np.dot(a, b)
array([ 30, 80, 130, 180, 230])
>>> np.einsum('...j,j', a, b)
array([ 30, 80, 130, 180, 230])
Broadcasting and scalar multiplication:
>>> np.einsum('..., ...', 3, c)
array([[ 0, 3, 6],
[ 9, 12, 15]])
>>> np.einsum(',ij', 3, c)
array([[ 0, 3, 6],
[ 9, 12, 15]])
>>> np.einsum(3, [Ellipsis], c, [Ellipsis])
array([[ 0, 3, 6],
[ 9, 12, 15]])
>>> np.multiply(3, c)
array([[ 0, 3, 6],
[ 9, 12, 15]])
Vector outer product:
>>> np.einsum('i,j', np.arange(2)+1, b)
array([[0, 1, 2, 3, 4],
[0, 2, 4, 6, 8]])
>>> np.einsum(np.arange(2)+1, [0], b, [1])
array([[0, 1, 2, 3, 4],
[0, 2, 4, 6, 8]])
>>> np.outer(np.arange(2)+1, b)
array([[0, 1, 2, 3, 4],
[0, 2, 4, 6, 8]])
Tensor contraction:
>>> a = np.arange(60.).reshape(3,4,5)
>>> b = np.arange(24.).reshape(4,3,2)
>>> np.einsum('ijk,jil->kl', a, b)
array([[4400., 4730.],
[4532., 4874.],
[4664., 5018.],
[4796., 5162.],
[4928., 5306.]])
>>> np.einsum(a, [0,1,2], b, [1,0,3], [2,3])
array([[4400., 4730.],
[4532., 4874.],
[4664., 5018.],
[4796., 5162.],
[4928., 5306.]])
>>> np.tensordot(a,b, axes=([1,0],[0,1]))
array([[4400., 4730.],
[4532., 4874.],
[4664., 5018.],
[4796., 5162.],
[4928., 5306.]])
Writeable returned arrays (since version 1.10.0):
>>> a = np.zeros((3, 3))
>>> np.einsum('ii->i', a)[:] = 1
>>> a
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
Example of ellipsis use:
>>> a = np.arange(6).reshape((3,2))
>>> b = np.arange(12).reshape((4,3))
>>> np.einsum('ki,jk->ij', a, b)
array([[10, 28, 46, 64],
[13, 40, 67, 94]])
>>> np.einsum('ki,...k->i...', a, b)
array([[10, 28, 46, 64],
[13, 40, 67, 94]])
>>> np.einsum('k...,jk', a, b)
array([[10, 28, 46, 64],
[13, 40, 67, 94]])
Chained array operations. For more complicated contractions, speed ups
might be achieved by repeatedly computing a 'greedy' path or pre-computing
the 'optimal' path and repeatedly applying it, using an `einsum_path`
insertion (since version 1.12.0). Performance improvements can be
particularly significant with larger arrays:
>>> a = np.ones(64).reshape(2,4,8)
Basic `einsum`: ~1520ms (benchmarked on 3.1GHz Intel i5.)
>>> for iteration in range(500):
... _ = np.einsum('ijk,ilm,njm,nlk,abc->',a,a,a,a,a)
Sub-optimal `einsum` (due to repeated path calculation time): ~330ms
>>> for iteration in range(500):
... _ = np.einsum('ijk,ilm,njm,nlk,abc->',a,a,a,a,a,
... optimize='optimal')
Greedy `einsum` (faster optimal path approximation): ~160ms
>>> for iteration in range(500):
... _ = np.einsum('ijk,ilm,njm,nlk,abc->',a,a,a,a,a, optimize='greedy')
Optimal `einsum` (best usage pattern in some use cases): ~110ms
>>> path = np.einsum_path('ijk,ilm,njm,nlk,abc->',a,a,a,a,a,
... optimize='optimal')[0]
>>> for iteration in range(500):
... _ = np.einsum('ijk,ilm,njm,nlk,abc->',a,a,a,a,a, optimize=path)
einsum_path(*operands, optimize='greedy', einsum_call=False)
einsum_path(subscripts, *operands, optimize='greedy')
Evaluates the lowest cost contraction order for an einsum expression by
considering the creation of intermediate arrays.
Parameters
----------
subscripts : str
Specifies the subscripts for summation.
*operands : list of array_like
These are the arrays for the operation.
optimize : {bool, list, tuple, 'greedy', 'optimal'}
Choose the type of path. If a tuple is provided, the second argument is
assumed to be the maximum intermediate size created. If only a single
argument is provided the largest input or output array size is used
as a maximum intermediate size.
* if a list is given that starts with ``einsum_path``, uses this as the
contraction path
* if False no optimization is taken
* if True defaults to the 'greedy' algorithm
* 'optimal' An algorithm that combinatorially explores all possible
ways of contracting the listed tensors and chooses the least costly
path. Scales exponentially with the number of terms in the
contraction.
* 'greedy' An algorithm that chooses the best pair contraction
at each step. Effectively, this algorithm searches the largest inner,
Hadamard, and then outer products at each step. Scales cubically with
the number of terms in the contraction. Equivalent to the 'optimal'
path for most contractions.
Default is 'greedy'.
Returns
-------
path : list of tuples
A list representation of the einsum path.
string_repr : str
A printable representation of the einsum path.
Notes
-----
The resulting path indicates which terms of the input contraction should be
contracted first, the result of this contraction is then appended to the
end of the contraction list. This list can then be iterated over until all
intermediate contractions are complete.
See Also
--------
einsum, linalg.multi_dot
Examples
--------
We can begin with a chain dot example. In this case, it is optimal to
contract the ``b`` and ``c`` tensors first as represented by the first
element of the path ``(1, 2)``. The resulting tensor is added to the end
of the contraction and the remaining contraction ``(0, 1)`` is then
completed.
>>> np.random.seed(123)
>>> a = np.random.rand(2, 2)
>>> b = np.random.rand(2, 5)
>>> c = np.random.rand(5, 2)
>>> path_info = np.einsum_path('ij,jk,kl->il', a, b, c, optimize='greedy')
>>> print(path_info[0])
['einsum_path', (1, 2), (0, 1)]
>>> print(path_info[1])
Complete contraction: ij,jk,kl->il # may vary
Naive scaling: 4
Optimized scaling: 3
Naive FLOP count: 1.600e+02
Optimized FLOP count: 5.600e+01
Theoretical speedup: 2.857
Largest intermediate: 4.000e+00 elements
-------------------------------------------------------------------------
scaling current remaining
-------------------------------------------------------------------------
3 kl,jk->jl ij,jl->il
3 jl,ij->il il->il
A more complex index transformation example.
>>> I = np.random.rand(10, 10, 10, 10)
>>> C = np.random.rand(10, 10)
>>> path_info = np.einsum_path('ea,fb,abcd,gc,hd->efgh', C, C, I, C, C,
... optimize='greedy')
>>> print(path_info[0])
['einsum_path', (0, 2), (0, 3), (0, 2), (0, 1)]
>>> print(path_info[1])
Complete contraction: ea,fb,abcd,gc,hd->efgh # may vary
Naive scaling: 8
Optimized scaling: 5
Naive FLOP count: 8.000e+08
Optimized FLOP count: 8.000e+05
Theoretical speedup: 1000.000
Largest intermediate: 1.000e+04 elements
--------------------------------------------------------------------------
scaling current remaining
--------------------------------------------------------------------------
5 abcd,ea->bcde fb,gc,hd,bcde->efgh
5 bcde,fb->cdef gc,hd,cdef->efgh
5 cdef,gc->defg hd,defg->efgh
5 defg,hd->efgh efgh->efgh
empty(...)
empty(shape, dtype=float, order='C', *, device=None, like=None)
Return a new array of given shape and type, without initializing entries.
Parameters
----------
shape : int or tuple of int
Shape of the empty array, e.g., ``(2, 3)`` or ``2``.
dtype : data-type, optional
Desired output data-type for the array, e.g, `numpy.int8`. Default is
`numpy.float64`.
order : {'C', 'F'}, optional, default: 'C'
Whether to store multi-dimensional data in row-major
(C-style) or column-major (Fortran-style) order in
memory.
device : str, optional
The device on which to place the created array. Default: ``None``.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array of uninitialized (arbitrary) data of the given shape, dtype, and
order. Object arrays will be initialized to None.
See Also
--------
empty_like : Return an empty array with shape and type of input.
ones : Return a new array setting values to one.
zeros : Return a new array setting values to zero.
full : Return a new array of given shape filled with value.
Notes
-----
Unlike other array creation functions (e.g. `zeros`, `ones`, `full`),
`empty` does not initialize the values of the array, and may therefore be
marginally faster. However, the values stored in the newly allocated array
are arbitrary. For reproducible behavior, be sure to set each element of
the array before reading.
Examples
--------
>>> import numpy as np
>>> np.empty([2, 2])
array([[ -9.74499359e+001, 6.69583040e-309],
[ 2.13182611e-314, 3.06959433e-309]]) #uninitialized
>>> np.empty([2, 2], dtype=int)
array([[-1073741821, -1067949133],
[ 496041986, 19249760]]) #uninitialized
empty_like(...)
empty_like(prototype, dtype=None, order='K', subok=True, shape=None, *,
device=None)
Return a new array with the same shape and type as a given array.
Parameters
----------
prototype : array_like
The shape and data-type of `prototype` define these same attributes
of the returned array.
dtype : data-type, optional
Overrides the data type of the result.
.. versionadded:: 1.6.0
order : {'C', 'F', 'A', or 'K'}, optional
Overrides the memory layout of the result. 'C' means C-order,
'F' means F-order, 'A' means 'F' if `prototype` is Fortran
contiguous, 'C' otherwise. 'K' means match the layout of `prototype`
as closely as possible.
.. versionadded:: 1.6.0
subok : bool, optional.
If True, then the newly created array will use the sub-class
type of `prototype`, otherwise it will be a base-class array. Defaults
to True.
shape : int or sequence of ints, optional.
Overrides the shape of the result. If order='K' and the number of
dimensions is unchanged, will try to keep order, otherwise,
order='C' is implied.
.. versionadded:: 1.17.0
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
Returns
-------
out : ndarray
Array of uninitialized (arbitrary) data with the same
shape and type as `prototype`.
See Also
--------
ones_like : Return an array of ones with shape and type of input.
zeros_like : Return an array of zeros with shape and type of input.
full_like : Return a new array with shape of input filled with value.
empty : Return a new uninitialized array.
Notes
-----
Unlike other array creation functions (e.g. `zeros_like`, `ones_like`,
`full_like`), `empty_like` does not initialize the values of the array,
and may therefore be marginally faster. However, the values stored in the
newly allocated array are arbitrary. For reproducible behavior, be sure
to set each element of the array before reading.
Examples
--------
>>> import numpy as np
>>> a = ([1,2,3], [4,5,6]) # a is array-like
>>> np.empty_like(a)
array([[-1073741821, -1073741821, 3], # uninitialized
[ 0, 0, -1073741821]])
>>> a = np.array([[1., 2., 3.],[4.,5.,6.]])
>>> np.empty_like(a)
array([[ -2.00000715e+000, 1.48219694e-323, -2.00000572e+000], # uninitialized
[ 4.38791518e-305, -2.00000715e+000, 4.17269252e-309]])
expand_dims(a, axis)
Expand the shape of an array.
Insert a new axis that will appear at the `axis` position in the expanded
array shape.
Parameters
----------
a : array_like
Input array.
axis : int or tuple of ints
Position in the expanded axes where the new axis (or axes) is placed.
.. deprecated:: 1.13.0
Passing an axis where ``axis > a.ndim`` will be treated as
``axis == a.ndim``, and passing ``axis < -a.ndim - 1`` will
be treated as ``axis == 0``. This behavior is deprecated.
.. versionchanged:: 1.18.0
A tuple of axes is now supported. Out of range axes as
described above are now forbidden and raise an
`~exceptions.AxisError`.
Returns
-------
result : ndarray
View of `a` with the number of dimensions increased.
See Also
--------
squeeze : The inverse operation, removing singleton dimensions
reshape : Insert, remove, and combine dimensions, and resize existing ones
atleast_1d, atleast_2d, atleast_3d
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2])
>>> x.shape
(2,)
The following is equivalent to ``x[np.newaxis, :]`` or ``x[np.newaxis]``:
>>> y = np.expand_dims(x, axis=0)
>>> y
array([[1, 2]])
>>> y.shape
(1, 2)
The following is equivalent to ``x[:, np.newaxis]``:
>>> y = np.expand_dims(x, axis=1)
>>> y
array([[1],
[2]])
>>> y.shape
(2, 1)
``axis`` may also be a tuple:
>>> y = np.expand_dims(x, axis=(0, 1))
>>> y
array([[[1, 2]]])
>>> y = np.expand_dims(x, axis=(2, 0))
>>> y
array([[[1],
[2]]])
Note that some examples may use ``None`` instead of ``np.newaxis``. These
are the same objects:
>>> np.newaxis is None
True
extract(condition, arr)
Return the elements of an array that satisfy some condition.
This is equivalent to ``np.compress(ravel(condition), ravel(arr))``. If
`condition` is boolean ``np.extract`` is equivalent to ``arr[condition]``.
Note that `place` does the exact opposite of `extract`.
Parameters
----------
condition : array_like
An array whose nonzero or True entries indicate the elements of `arr`
to extract.
arr : array_like
Input array of the same size as `condition`.
Returns
-------
extract : ndarray
Rank 1 array of values from `arr` where `condition` is True.
See Also
--------
take, put, copyto, compress, place
Examples
--------
>>> import numpy as np
>>> arr = np.arange(12).reshape((3, 4))
>>> arr
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> condition = np.mod(arr, 3)==0
>>> condition
array([[ True, False, False, True],
[False, False, True, False],
[False, True, False, False]])
>>> np.extract(condition, arr)
array([0, 3, 6, 9])
If `condition` is boolean:
>>> arr[condition]
array([0, 3, 6, 9])
eye(N, M=None, k=0, dtype=<class 'float'>, order='C', *, device=None, like=None)
Return a 2-D array with ones on the diagonal and zeros elsewhere.
Parameters
----------
N : int
Number of rows in the output.
M : int, optional
Number of columns in the output. If None, defaults to `N`.
k : int, optional
Index of the diagonal: 0 (the default) refers to the main diagonal,
a positive value refers to an upper diagonal, and a negative value
to a lower diagonal.
dtype : data-type, optional
Data-type of the returned array.
order : {'C', 'F'}, optional
Whether the output should be stored in row-major (C-style) or
column-major (Fortran-style) order in memory.
.. versionadded:: 1.14.0
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
I : ndarray of shape (N,M)
An array where all elements are equal to zero, except for the `k`-th
diagonal, whose values are equal to one.
See Also
--------
identity : (almost) equivalent function
diag : diagonal 2-D array from a 1-D array specified by the user.
Examples
--------
>>> import numpy as np
>>> np.eye(2, dtype=int)
array([[1, 0],
[0, 1]])
>>> np.eye(3, k=1)
array([[0., 1., 0.],
[0., 0., 1.],
[0., 0., 0.]])
fill_diagonal(a, val, wrap=False)
Fill the main diagonal of the given array of any dimensionality.
For an array `a` with ``a.ndim >= 2``, the diagonal is the list of
values ``a[i, ..., i]`` with indices ``i`` all identical. This function
modifies the input array in-place without returning a value.
Parameters
----------
a : array, at least 2-D.
Array whose diagonal is to be filled in-place.
val : scalar or array_like
Value(s) to write on the diagonal. If `val` is scalar, the value is
written along the diagonal. If array-like, the flattened `val` is
written along the diagonal, repeating if necessary to fill all
diagonal entries.
wrap : bool
For tall matrices in NumPy version up to 1.6.2, the
diagonal "wrapped" after N columns. You can have this behavior
with this option. This affects only tall matrices.
See also
--------
diag_indices, diag_indices_from
Notes
-----
.. versionadded:: 1.4.0
This functionality can be obtained via `diag_indices`, but internally
this version uses a much faster implementation that never constructs the
indices and uses simple slicing.
Examples
--------
>>> import numpy as np
>>> a = np.zeros((3, 3), int)
>>> np.fill_diagonal(a, 5)
>>> a
array([[5, 0, 0],
[0, 5, 0],
[0, 0, 5]])
The same function can operate on a 4-D array:
>>> a = np.zeros((3, 3, 3, 3), int)
>>> np.fill_diagonal(a, 4)
We only show a few blocks for clarity:
>>> a[0, 0]
array([[4, 0, 0],
[0, 0, 0],
[0, 0, 0]])
>>> a[1, 1]
array([[0, 0, 0],
[0, 4, 0],
[0, 0, 0]])
>>> a[2, 2]
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 4]])
The wrap option affects only tall matrices:
>>> # tall matrices no wrap
>>> a = np.zeros((5, 3), int)
>>> np.fill_diagonal(a, 4)
>>> a
array([[4, 0, 0],
[0, 4, 0],
[0, 0, 4],
[0, 0, 0],
[0, 0, 0]])
>>> # tall matrices wrap
>>> a = np.zeros((5, 3), int)
>>> np.fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0],
[0, 4, 0],
[0, 0, 4],
[0, 0, 0],
[4, 0, 0]])
>>> # wide matrices
>>> a = np.zeros((3, 5), int)
>>> np.fill_diagonal(a, 4, wrap=True)
>>> a
array([[4, 0, 0, 0, 0],
[0, 4, 0, 0, 0],
[0, 0, 4, 0, 0]])
The anti-diagonal can be filled by reversing the order of elements
using either `numpy.flipud` or `numpy.fliplr`.
>>> a = np.zeros((3, 3), int);
>>> np.fill_diagonal(np.fliplr(a), [1,2,3]) # Horizontal flip
>>> a
array([[0, 0, 1],
[0, 2, 0],
[3, 0, 0]])
>>> np.fill_diagonal(np.flipud(a), [1,2,3]) # Vertical flip
>>> a
array([[0, 0, 3],
[0, 2, 0],
[1, 0, 0]])
Note that the order in which the diagonal is filled varies depending
on the flip function.
fix(x, out=None)
Round to nearest integer towards zero.
Round an array of floats element-wise to nearest integer towards zero.
The rounded values have the same data-type as the input.
Parameters
----------
x : array_like
An array to be rounded
out : ndarray, optional
A location into which the result is stored. If provided, it must have
a shape that the input broadcasts to. If not provided or None, a
freshly-allocated array is returned.
Returns
-------
out : ndarray of floats
An array with the same dimensions and data-type as the input.
If second argument is not supplied then a new array is returned
with the rounded values.
If a second argument is supplied the result is stored there.
The return value ``out`` is then a reference to that array.
See Also
--------
rint, trunc, floor, ceil
around : Round to given number of decimals
Examples
--------
>>> import numpy as np
>>> np.fix(3.14)
3.0
>>> np.fix(3)
3
>>> np.fix([2.1, 2.9, -2.1, -2.9])
array([ 2., 2., -2., -2.])
flatnonzero(a)
Return indices that are non-zero in the flattened version of a.
This is equivalent to ``np.nonzero(np.ravel(a))[0]``.
Parameters
----------
a : array_like
Input data.
Returns
-------
res : ndarray
Output array, containing the indices of the elements of ``a.ravel()``
that are non-zero.
See Also
--------
nonzero : Return the indices of the non-zero elements of the input array.
ravel : Return a 1-D array containing the elements of the input array.
Examples
--------
>>> import numpy as np
>>> x = np.arange(-2, 3)
>>> x
array([-2, -1, 0, 1, 2])
>>> np.flatnonzero(x)
array([0, 1, 3, 4])
Use the indices of the non-zero elements as an index array to extract
these elements:
>>> x.ravel()[np.flatnonzero(x)]
array([-2, -1, 1, 2])
flip(m, axis=None)
Reverse the order of elements in an array along the given axis.
The shape of the array is preserved, but the elements are reordered.
.. versionadded:: 1.12.0
Parameters
----------
m : array_like
Input array.
axis : None or int or tuple of ints, optional
Axis or axes along which to flip over. The default,
axis=None, will flip over all of the axes of the input array.
If axis is negative it counts from the last to the first axis.
If axis is a tuple of ints, flipping is performed on all of the axes
specified in the tuple.
.. versionchanged:: 1.15.0
None and tuples of axes are supported
Returns
-------
out : array_like
A view of `m` with the entries of axis reversed. Since a view is
returned, this operation is done in constant time.
See Also
--------
flipud : Flip an array vertically (axis=0).
fliplr : Flip an array horizontally (axis=1).
Notes
-----
flip(m, 0) is equivalent to flipud(m).
flip(m, 1) is equivalent to fliplr(m).
flip(m, n) corresponds to ``m[...,::-1,...]`` with ``::-1`` at position n.
flip(m) corresponds to ``m[::-1,::-1,...,::-1]`` with ``::-1`` at all
positions.
flip(m, (0, 1)) corresponds to ``m[::-1,::-1,...]`` with ``::-1`` at
position 0 and position 1.
Examples
--------
>>> import numpy as np
>>> A = np.arange(8).reshape((2,2,2))
>>> A
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> np.flip(A, 0)
array([[[4, 5],
[6, 7]],
[[0, 1],
[2, 3]]])
>>> np.flip(A, 1)
array([[[2, 3],
[0, 1]],
[[6, 7],
[4, 5]]])
>>> np.flip(A)
array([[[7, 6],
[5, 4]],
[[3, 2],
[1, 0]]])
>>> np.flip(A, (0, 2))
array([[[5, 4],
[7, 6]],
[[1, 0],
[3, 2]]])
>>> rng = np.random.default_rng()
>>> A = rng.normal(size=(3,4,5))
>>> np.all(np.flip(A,2) == A[:,:,::-1,...])
True
fliplr(m)
Reverse the order of elements along axis 1 (left/right).
For a 2-D array, this flips the entries in each row in the left/right
direction. Columns are preserved, but appear in a different order than
before.
Parameters
----------
m : array_like
Input array, must be at least 2-D.
Returns
-------
f : ndarray
A view of `m` with the columns reversed. Since a view
is returned, this operation is :math:`\mathcal O(1)`.
See Also
--------
flipud : Flip array in the up/down direction.
flip : Flip array in one or more dimensions.
rot90 : Rotate array counterclockwise.
Notes
-----
Equivalent to ``m[:,::-1]`` or ``np.flip(m, axis=1)``.
Requires the array to be at least 2-D.
Examples
--------
>>> import numpy as np
>>> A = np.diag([1.,2.,3.])
>>> A
array([[1., 0., 0.],
[0., 2., 0.],
[0., 0., 3.]])
>>> np.fliplr(A)
array([[0., 0., 1.],
[0., 2., 0.],
[3., 0., 0.]])
>>> rng = np.random.default_rng()
>>> A = rng.normal(size=(2,3,5))
>>> np.all(np.fliplr(A) == A[:,::-1,...])
True
flipud(m)
Reverse the order of elements along axis 0 (up/down).
For a 2-D array, this flips the entries in each column in the up/down
direction. Rows are preserved, but appear in a different order than before.
Parameters
----------
m : array_like
Input array.
Returns
-------
out : array_like
A view of `m` with the rows reversed. Since a view is
returned, this operation is :math:`\mathcal O(1)`.
See Also
--------
fliplr : Flip array in the left/right direction.
flip : Flip array in one or more dimensions.
rot90 : Rotate array counterclockwise.
Notes
-----
Equivalent to ``m[::-1, ...]`` or ``np.flip(m, axis=0)``.
Requires the array to be at least 1-D.
Examples
--------
>>> import numpy as np
>>> A = np.diag([1.0, 2, 3])
>>> A
array([[1., 0., 0.],
[0., 2., 0.],
[0., 0., 3.]])
>>> np.flipud(A)
array([[0., 0., 3.],
[0., 2., 0.],
[1., 0., 0.]])
>>> rng = np.random.default_rng()
>>> A = rng.normal(size=(2,3,5))
>>> np.all(np.flipud(A) == A[::-1,...])
True
>>> np.flipud([1,2])
array([2, 1])
format_float_positional(x, precision=None, unique=True, fractional=True, trim='k', sign=False, pad_left=None, pad_right=None, min_digits=None)
Format a floating-point scalar as a decimal string in positional notation.
Provides control over rounding, trimming and padding. Uses and assumes
IEEE unbiased rounding. Uses the "Dragon4" algorithm.
Parameters
----------
x : python float or numpy floating scalar
Value to format.
precision : non-negative integer or None, optional
Maximum number of digits to print. May be None if `unique` is
`True`, but must be an integer if unique is `False`.
unique : boolean, optional
If `True`, use a digit-generation strategy which gives the shortest
representation which uniquely identifies the floating-point number from
other values of the same type, by judicious rounding. If `precision`
is given fewer digits than necessary can be printed, or if `min_digits`
is given more can be printed, in which cases the last digit is rounded
with unbiased rounding.
If `False`, digits are generated as if printing an infinite-precision
value and stopping after `precision` digits, rounding the remaining
value with unbiased rounding
fractional : boolean, optional
If `True`, the cutoffs of `precision` and `min_digits` refer to the
total number of digits after the decimal point, including leading
zeros.
If `False`, `precision` and `min_digits` refer to the total number of
significant digits, before or after the decimal point, ignoring leading
zeros.
trim : one of 'k', '.', '0', '-', optional
Controls post-processing trimming of trailing digits, as follows:
* 'k' : keep trailing zeros, keep decimal point (no trimming)
* '.' : trim all trailing zeros, leave decimal point
* '0' : trim all but the zero before the decimal point. Insert the
zero if it is missing.
* '-' : trim trailing zeros and any trailing decimal point
sign : boolean, optional
Whether to show the sign for positive values.
pad_left : non-negative integer, optional
Pad the left side of the string with whitespace until at least that
many characters are to the left of the decimal point.
pad_right : non-negative integer, optional
Pad the right side of the string with whitespace until at least that
many characters are to the right of the decimal point.
min_digits : non-negative integer or None, optional
Minimum number of digits to print. Only has an effect if `unique=True`
in which case additional digits past those necessary to uniquely
identify the value may be printed, rounding the last additional digit.
.. versionadded:: 1.21.0
Returns
-------
rep : string
The string representation of the floating point value
See Also
--------
format_float_scientific
Examples
--------
>>> import numpy as np
>>> np.format_float_positional(np.float32(np.pi))
'3.1415927'
>>> np.format_float_positional(np.float16(np.pi))
'3.14'
>>> np.format_float_positional(np.float16(0.3))
'0.3'
>>> np.format_float_positional(np.float16(0.3), unique=False, precision=10)
'0.3000488281'
format_float_scientific(x, precision=None, unique=True, trim='k', sign=False, pad_left=None, exp_digits=None, min_digits=None)
Format a floating-point scalar as a decimal string in scientific notation.
Provides control over rounding, trimming and padding. Uses and assumes
IEEE unbiased rounding. Uses the "Dragon4" algorithm.
Parameters
----------
x : python float or numpy floating scalar
Value to format.
precision : non-negative integer or None, optional
Maximum number of digits to print. May be None if `unique` is
`True`, but must be an integer if unique is `False`.
unique : boolean, optional
If `True`, use a digit-generation strategy which gives the shortest
representation which uniquely identifies the floating-point number from
other values of the same type, by judicious rounding. If `precision`
is given fewer digits than necessary can be printed. If `min_digits`
is given more can be printed, in which cases the last digit is rounded
with unbiased rounding.
If `False`, digits are generated as if printing an infinite-precision
value and stopping after `precision` digits, rounding the remaining
value with unbiased rounding
trim : one of 'k', '.', '0', '-', optional
Controls post-processing trimming of trailing digits, as follows:
* 'k' : keep trailing zeros, keep decimal point (no trimming)
* '.' : trim all trailing zeros, leave decimal point
* '0' : trim all but the zero before the decimal point. Insert the
zero if it is missing.
* '-' : trim trailing zeros and any trailing decimal point
sign : boolean, optional
Whether to show the sign for positive values.
pad_left : non-negative integer, optional
Pad the left side of the string with whitespace until at least that
many characters are to the left of the decimal point.
exp_digits : non-negative integer, optional
Pad the exponent with zeros until it contains at least this
many digits. If omitted, the exponent will be at least 2 digits.
min_digits : non-negative integer or None, optional
Minimum number of digits to print. This only has an effect for
`unique=True`. In that case more digits than necessary to uniquely
identify the value may be printed and rounded unbiased.
.. versionadded:: 1.21.0
Returns
-------
rep : string
The string representation of the floating point value
See Also
--------
format_float_positional
Examples
--------
>>> import numpy as np
>>> np.format_float_scientific(np.float32(np.pi))
'3.1415927e+00'
>>> s = np.float32(1.23e24)
>>> np.format_float_scientific(s, unique=False, precision=15)
'1.230000071797338e+24'
>>> np.format_float_scientific(s, exp_digits=4)
'1.23e+0024'
from_dlpack(...)
from_dlpack(x, /, *, device=None, copy=None)
Create a NumPy array from an object implementing the ``__dlpack__``
protocol. Generally, the returned NumPy array is a read-only view
of the input object. See [1]_ and [2]_ for more details.
Parameters
----------
x : object
A Python object that implements the ``__dlpack__`` and
``__dlpack_device__`` methods.
device : device, optional
Device on which to place the created array. Default: ``None``.
Must be ``"cpu"`` if passed which may allow importing an array
that is not already CPU available.
copy : bool, optional
Boolean indicating whether or not to copy the input. If ``True``,
the copy will be made. If ``False``, the function will never copy,
and will raise ``BufferError`` in case a copy is deemed necessary.
Passing it requests a copy from the exporter who may or may not
implement the capability.
If ``None``, the function will reuse the existing memory buffer if
possible and copy otherwise. Default: ``None``.
Returns
-------
out : ndarray
References
----------
.. [1] Array API documentation,
https://data-apis.org/array-api/latest/design_topics/data_interchange.html#syntax-for-data-interchange-with-dlpack
.. [2] Python specification for DLPack,
https://dmlc.github.io/dlpack/latest/python_spec.html
Examples
--------
>>> import torch # doctest: +SKIP
>>> x = torch.arange(10) # doctest: +SKIP
>>> # create a view of the torch tensor "x" in NumPy
>>> y = np.from_dlpack(x) # doctest: +SKIP
frombuffer(...)
frombuffer(buffer, dtype=float, count=-1, offset=0, *, like=None)
Interpret a buffer as a 1-dimensional array.
Parameters
----------
buffer : buffer_like
An object that exposes the buffer interface.
dtype : data-type, optional
Data-type of the returned array; default: float.
count : int, optional
Number of items to read. ``-1`` means all data in the buffer.
offset : int, optional
Start reading the buffer from this offset (in bytes); default: 0.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
See also
--------
ndarray.tobytes
Inverse of this operation, construct Python bytes from the raw data
bytes in the array.
Notes
-----
If the buffer has data that is not in machine byte-order, this should
be specified as part of the data-type, e.g.::
>>> dt = np.dtype(int)
>>> dt = dt.newbyteorder('>')
>>> np.frombuffer(buf, dtype=dt) # doctest: +SKIP
The data of the resulting array will not be byteswapped, but will be
interpreted correctly.
This function creates a view into the original object. This should be safe
in general, but it may make sense to copy the result when the original
object is mutable or untrusted.
Examples
--------
>>> import numpy as np
>>> s = b'hello world'
>>> np.frombuffer(s, dtype='S1', count=5, offset=6)
array([b'w', b'o', b'r', b'l', b'd'], dtype='|S1')
>>> np.frombuffer(b'\x01\x02', dtype=np.uint8)
array([1, 2], dtype=uint8)
>>> np.frombuffer(b'\x01\x02\x03\x04\x05', dtype=np.uint8, count=3)
array([1, 2, 3], dtype=uint8)
fromfile(...)
fromfile(file, dtype=float, count=-1, sep='', offset=0, *, like=None)
Construct an array from data in a text or binary file.
A highly efficient way of reading binary data with a known data-type,
as well as parsing simply formatted text files. Data written using the
`tofile` method can be read using this function.
Parameters
----------
file : file or str or Path
Open file object or filename.
.. versionchanged:: 1.17.0
`pathlib.Path` objects are now accepted.
dtype : data-type
Data type of the returned array.
For binary files, it is used to determine the size and byte-order
of the items in the file.
Most builtin numeric types are supported and extension types may be supported.
.. versionadded:: 1.18.0
Complex dtypes.
count : int
Number of items to read. ``-1`` means all items (i.e., the complete
file).
sep : str
Separator between items if file is a text file.
Empty ("") separator means the file should be treated as binary.
Spaces (" ") in the separator match zero or more whitespace characters.
A separator consisting only of spaces must match at least one
whitespace.
offset : int
The offset (in bytes) from the file's current position. Defaults to 0.
Only permitted for binary files.
.. versionadded:: 1.17.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
See also
--------
load, save
ndarray.tofile
loadtxt : More flexible way of loading data from a text file.
Notes
-----
Do not rely on the combination of `tofile` and `fromfile` for
data storage, as the binary files generated are not platform
independent. In particular, no byte-order or data-type information is
saved. Data can be stored in the platform independent ``.npy`` format
using `save` and `load` instead.
Examples
--------
Construct an ndarray:
>>> import numpy as np
>>> dt = np.dtype([('time', [('min', np.int64), ('sec', np.int64)]),
... ('temp', float)])
>>> x = np.zeros((1,), dtype=dt)
>>> x['time']['min'] = 10; x['temp'] = 98.25
>>> x
array([((10, 0), 98.25)],
dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])
Save the raw data to disk:
>>> import tempfile
>>> fname = tempfile.mkstemp()[1]
>>> x.tofile(fname)
Read the raw data from disk:
>>> np.fromfile(fname, dtype=dt)
array([((10, 0), 98.25)],
dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])
The recommended way to store and load data:
>>> np.save(fname, x)
>>> np.load(fname + '.npy')
array([((10, 0), 98.25)],
dtype=[('time', [('min', '<i8'), ('sec', '<i8')]), ('temp', '<f8')])
fromfunction(function, shape, *, dtype=<class 'float'>, like=None, **kwargs)
Construct an array by executing a function over each coordinate.
The resulting array therefore has a value ``fn(x, y, z)`` at
coordinate ``(x, y, z)``.
Parameters
----------
function : callable
The function is called with N parameters, where N is the rank of
`shape`. Each parameter represents the coordinates of the array
varying along a specific axis. For example, if `shape`
were ``(2, 2)``, then the parameters would be
``array([[0, 0], [1, 1]])`` and ``array([[0, 1], [0, 1]])``
shape : (N,) tuple of ints
Shape of the output array, which also determines the shape of
the coordinate arrays passed to `function`.
dtype : data-type, optional
Data-type of the coordinate arrays passed to `function`.
By default, `dtype` is float.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
fromfunction : any
The result of the call to `function` is passed back directly.
Therefore the shape of `fromfunction` is completely determined by
`function`. If `function` returns a scalar value, the shape of
`fromfunction` would not match the `shape` parameter.
See Also
--------
indices, meshgrid
Notes
-----
Keywords other than `dtype` and `like` are passed to `function`.
Examples
--------
>>> import numpy as np
>>> np.fromfunction(lambda i, j: i, (2, 2), dtype=float)
array([[0., 0.],
[1., 1.]])
>>> np.fromfunction(lambda i, j: j, (2, 2), dtype=float)
array([[0., 1.],
[0., 1.]])
>>> np.fromfunction(lambda i, j: i == j, (3, 3), dtype=int)
array([[ True, False, False],
[False, True, False],
[False, False, True]])
>>> np.fromfunction(lambda i, j: i + j, (3, 3), dtype=int)
array([[0, 1, 2],
[1, 2, 3],
[2, 3, 4]])
fromiter(...)
fromiter(iter, dtype, count=-1, *, like=None)
Create a new 1-dimensional array from an iterable object.
Parameters
----------
iter : iterable object
An iterable object providing data for the array.
dtype : data-type
The data-type of the returned array.
.. versionchanged:: 1.23
Object and subarray dtypes are now supported (note that the final
result is not 1-D for a subarray dtype).
count : int, optional
The number of items to read from *iterable*. The default is -1,
which means all data is read.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
The output array.
Notes
-----
Specify `count` to improve performance. It allows ``fromiter`` to
pre-allocate the output array, instead of resizing it on demand.
Examples
--------
>>> import numpy as np
>>> iterable = (x*x for x in range(5))
>>> np.fromiter(iterable, float)
array([ 0., 1., 4., 9., 16.])
A carefully constructed subarray dtype will lead to higher dimensional
results:
>>> iterable = ((x+1, x+2) for x in range(5))
>>> np.fromiter(iterable, dtype=np.dtype((int, 2)))
array([[1, 2],
[2, 3],
[3, 4],
[4, 5],
[5, 6]])
frompyfunc(...)
frompyfunc(func, /, nin, nout, *[, identity])
Takes an arbitrary Python function and returns a NumPy ufunc.
Can be used, for example, to add broadcasting to a built-in Python
function (see Examples section).
Parameters
----------
func : Python function object
An arbitrary Python function.
nin : int
The number of input arguments.
nout : int
The number of objects returned by `func`.
identity : object, optional
The value to use for the `~numpy.ufunc.identity` attribute of the resulting
object. If specified, this is equivalent to setting the underlying
C ``identity`` field to ``PyUFunc_IdentityValue``.
If omitted, the identity is set to ``PyUFunc_None``. Note that this is
_not_ equivalent to setting the identity to ``None``, which implies the
operation is reorderable.
Returns
-------
out : ufunc
Returns a NumPy universal function (``ufunc``) object.
See Also
--------
vectorize : Evaluates pyfunc over input arrays using broadcasting rules of numpy.
Notes
-----
The returned ufunc always returns PyObject arrays.
Examples
--------
Use frompyfunc to add broadcasting to the Python function ``oct``:
>>> import numpy as np
>>> oct_array = np.frompyfunc(oct, 1, 1)
>>> oct_array(np.array((10, 30, 100)))
array(['0o12', '0o36', '0o144'], dtype=object)
>>> np.array((oct(10), oct(30), oct(100))) # for comparison
array(['0o12', '0o36', '0o144'], dtype='<U5')
fromregex(file, regexp, dtype, encoding=None)
Construct an array from a text file, using regular expression parsing.
The returned array is always a structured array, and is constructed from
all matches of the regular expression in the file. Groups in the regular
expression are converted to fields of the structured array.
Parameters
----------
file : file, str, or pathlib.Path
Filename or file object to read.
.. versionchanged:: 1.22.0
Now accepts `os.PathLike` implementations.
regexp : str or regexp
Regular expression used to parse the file.
Groups in the regular expression correspond to fields in the dtype.
dtype : dtype or list of dtypes
Dtype for the structured array; must be a structured datatype.
encoding : str, optional
Encoding used to decode the inputfile. Does not apply to input streams.
.. versionadded:: 1.14.0
Returns
-------
output : ndarray
The output array, containing the part of the content of `file` that
was matched by `regexp`. `output` is always a structured array.
Raises
------
TypeError
When `dtype` is not a valid dtype for a structured array.
See Also
--------
fromstring, loadtxt
Notes
-----
Dtypes for structured arrays can be specified in several forms, but all
forms specify at least the data type and field name. For details see
`basics.rec`.
Examples
--------
>>> import numpy as np
>>> from io import StringIO
>>> text = StringIO("1312 foo\n1534 bar\n444 qux")
>>> regexp = r"(\d+)\s+(...)" # match [digits, whitespace, anything]
>>> output = np.fromregex(text, regexp,
... [('num', np.int64), ('key', 'S3')])
>>> output
array([(1312, b'foo'), (1534, b'bar'), ( 444, b'qux')],
dtype=[('num', '<i8'), ('key', 'S3')])
>>> output['num']
array([1312, 1534, 444])
fromstring(...)
fromstring(string, dtype=float, count=-1, *, sep, like=None)
A new 1-D array initialized from text data in a string.
Parameters
----------
string : str
A string containing the data.
dtype : data-type, optional
The data type of the array; default: float. For binary input data,
the data must be in exactly this format. Most builtin numeric types are
supported and extension types may be supported.
.. versionadded:: 1.18.0
Complex dtypes.
count : int, optional
Read this number of `dtype` elements from the data. If this is
negative (the default), the count will be determined from the
length of the data.
sep : str, optional
The string separating numbers in the data; extra whitespace between
elements is also ignored.
.. deprecated:: 1.14
Passing ``sep=''``, the default, is deprecated since it will
trigger the deprecated binary mode of this function. This mode
interprets `string` as binary bytes, rather than ASCII text with
decimal numbers, an operation which is better spelt
``frombuffer(string, dtype, count)``. If `string` contains unicode
text, the binary mode of `fromstring` will first encode it into
bytes using utf-8, which will not produce sane results.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
arr : ndarray
The constructed array.
Raises
------
ValueError
If the string is not the correct size to satisfy the requested
`dtype` and `count`.
See Also
--------
frombuffer, fromfile, fromiter
Examples
--------
>>> import numpy as np
>>> np.fromstring('1 2', dtype=int, sep=' ')
array([1, 2])
>>> np.fromstring('1, 2', dtype=int, sep=',')
array([1, 2])
full(shape, fill_value, dtype=None, order='C', *, device=None, like=None)
Return a new array of given shape and type, filled with `fill_value`.
Parameters
----------
shape : int or sequence of ints
Shape of the new array, e.g., ``(2, 3)`` or ``2``.
fill_value : scalar or array_like
Fill value.
dtype : data-type, optional
The desired data-type for the array The default, None, means
``np.array(fill_value).dtype``.
order : {'C', 'F'}, optional
Whether to store multidimensional data in C- or Fortran-contiguous
(row- or column-wise) order in memory.
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array of `fill_value` with the given shape, dtype, and order.
See Also
--------
full_like : Return a new array with shape of input filled with value.
empty : Return a new uninitialized array.
ones : Return a new array setting values to one.
zeros : Return a new array setting values to zero.
Examples
--------
>>> import numpy as np
>>> np.full((2, 2), np.inf)
array([[inf, inf],
[inf, inf]])
>>> np.full((2, 2), 10)
array([[10, 10],
[10, 10]])
>>> np.full((2, 2), [1, 2])
array([[1, 2],
[1, 2]])
full_like(a, fill_value, dtype=None, order='K', subok=True, shape=None, *, device=None)
Return a full array with the same shape and type as a given array.
Parameters
----------
a : array_like
The shape and data-type of `a` define these same attributes of
the returned array.
fill_value : array_like
Fill value.
dtype : data-type, optional
Overrides the data type of the result.
order : {'C', 'F', 'A', or 'K'}, optional
Overrides the memory layout of the result. 'C' means C-order,
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
'C' otherwise. 'K' means match the layout of `a` as closely
as possible.
subok : bool, optional.
If True, then the newly created array will use the sub-class
type of `a`, otherwise it will be a base-class array. Defaults
to True.
shape : int or sequence of ints, optional.
Overrides the shape of the result. If order='K' and the number of
dimensions is unchanged, will try to keep order, otherwise,
order='C' is implied.
.. versionadded:: 1.17.0
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
Returns
-------
out : ndarray
Array of `fill_value` with the same shape and type as `a`.
See Also
--------
empty_like : Return an empty array with shape and type of input.
ones_like : Return an array of ones with shape and type of input.
zeros_like : Return an array of zeros with shape and type of input.
full : Return a new array of given shape filled with value.
Examples
--------
>>> import numpy as np
>>> x = np.arange(6, dtype=int)
>>> np.full_like(x, 1)
array([1, 1, 1, 1, 1, 1])
>>> np.full_like(x, 0.1)
array([0, 0, 0, 0, 0, 0])
>>> np.full_like(x, 0.1, dtype=np.double)
array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
>>> np.full_like(x, np.nan, dtype=np.double)
array([nan, nan, nan, nan, nan, nan])
>>> y = np.arange(6, dtype=np.double)
>>> np.full_like(y, 0.1)
array([0.1, 0.1, 0.1, 0.1, 0.1, 0.1])
>>> y = np.zeros([2, 2, 3], dtype=int)
>>> np.full_like(y, [0, 0, 255])
array([[[ 0, 0, 255],
[ 0, 0, 255]],
[[ 0, 0, 255],
[ 0, 0, 255]]])
genfromtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, skip_header=0, skip_footer=0, converters=None, missing_values=None, filling_values=None, usecols=None, names=None, excludelist=None, deletechars=" !#$%&'()*+,-./:;<=>?@[\\]^{|}~", replace_space='_', autostrip=False, case_sensitive=True, defaultfmt='f%i', unpack=None, usemask=False, loose=True, invalid_raise=True, max_rows=None, encoding=None, *, ndmin=0, like=None)
Load data from a text file, with missing values handled as specified.
Each line past the first `skip_header` lines is split at the `delimiter`
character, and characters following the `comments` character are discarded.
Parameters
----------
fname : file, str, pathlib.Path, list of str, generator
File, filename, list, or generator to read. If the filename
extension is ``.gz`` or ``.bz2``, the file is first decompressed. Note
that generators must return bytes or strings. The strings
in a list or produced by a generator are treated as lines.
dtype : dtype, optional
Data type of the resulting array.
If None, the dtypes will be determined by the contents of each
column, individually.
comments : str, optional
The character used to indicate the start of a comment.
All the characters occurring on a line after a comment are discarded.
delimiter : str, int, or sequence, optional
The string used to separate values. By default, any consecutive
whitespaces act as delimiter. An integer or sequence of integers
can also be provided as width(s) of each field.
skiprows : int, optional
`skiprows` was removed in numpy 1.10. Please use `skip_header` instead.
skip_header : int, optional
The number of lines to skip at the beginning of the file.
skip_footer : int, optional
The number of lines to skip at the end of the file.
converters : variable, optional
The set of functions that convert the data of a column to a value.
The converters can also be used to provide a default value
for missing data: ``converters = {3: lambda s: float(s or 0)}``.
missing : variable, optional
`missing` was removed in numpy 1.10. Please use `missing_values`
instead.
missing_values : variable, optional
The set of strings corresponding to missing data.
filling_values : variable, optional
The set of values to be used as default when the data are missing.
usecols : sequence, optional
Which columns to read, with 0 being the first. For example,
``usecols = (1, 4, 5)`` will extract the 2nd, 5th and 6th columns.
names : {None, True, str, sequence}, optional
If `names` is True, the field names are read from the first line after
the first `skip_header` lines. This line can optionally be preceded
by a comment delimiter. Any content before the comment delimiter is
discarded. If `names` is a sequence or a single-string of
comma-separated names, the names will be used to define the field
names in a structured dtype. If `names` is None, the names of the
dtype fields will be used, if any.
excludelist : sequence, optional
A list of names to exclude. This list is appended to the default list
['return','file','print']. Excluded names are appended with an
underscore: for example, `file` would become `file_`.
deletechars : str, optional
A string combining invalid characters that must be deleted from the
names.
defaultfmt : str, optional
A format used to define default field names, such as "f%i" or "f_%02i".
autostrip : bool, optional
Whether to automatically strip white spaces from the variables.
replace_space : char, optional
Character(s) used in replacement of white spaces in the variable
names. By default, use a '_'.
case_sensitive : {True, False, 'upper', 'lower'}, optional
If True, field names are case sensitive.
If False or 'upper', field names are converted to upper case.
If 'lower', field names are converted to lower case.
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be
unpacked using ``x, y, z = genfromtxt(...)``. When used with a
structured data-type, arrays are returned for each field.
Default is False.
usemask : bool, optional
If True, return a masked array.
If False, return a regular array.
loose : bool, optional
If True, do not raise errors for invalid values.
invalid_raise : bool, optional
If True, an exception is raised if an inconsistency is detected in the
number of columns.
If False, a warning is emitted and the offending lines are skipped.
max_rows : int, optional
The maximum number of rows to read. Must not be used with skip_footer
at the same time. If given, the value must be at least 1. Default is
to read the entire file.
.. versionadded:: 1.10.0
encoding : str, optional
Encoding used to decode the inputfile. Does not apply when `fname`
is a file object. The special value 'bytes' enables backward
compatibility workarounds that ensure that you receive byte arrays
when possible and passes latin1 encoded strings to converters.
Override this value to receive unicode arrays and pass strings
as input to converters. If set to None the system default is used.
The default value is 'bytes'.
.. versionadded:: 1.14.0
.. versionchanged:: 2.0
Before NumPy 2, the default was ``'bytes'`` for Python 2
compatibility. The default is now ``None``.
ndmin : int, optional
Same parameter as `loadtxt`
.. versionadded:: 1.23.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Data read from the text file. If `usemask` is True, this is a
masked array.
See Also
--------
numpy.loadtxt : equivalent function when no data is missing.
Notes
-----
* When spaces are used as delimiters, or when no delimiter has been given
as input, there should not be any missing data between two fields.
* When variables are named (either by a flexible dtype or with a `names`
sequence), there must not be any header in the file (else a ValueError
exception is raised).
* Individual values are not stripped of spaces by default.
When using a custom converter, make sure the function does remove spaces.
* Custom converters may receive unexpected values due to dtype
discovery.
References
----------
.. [1] NumPy User Guide, section `I/O with NumPy
<https://docs.scipy.org/doc/numpy/user/basics.io.genfromtxt.html>`_.
Examples
--------
>>> from io import StringIO
>>> import numpy as np
Comma delimited file with mixed dtype
>>> s = StringIO("1,1.3,abcde")
>>> data = np.genfromtxt(s, dtype=[('myint','i8'),('myfloat','f8'),
... ('mystring','S5')], delimiter=",")
>>> data
array((1, 1.3, b'abcde'),
dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
Using dtype = None
>>> _ = s.seek(0) # needed for StringIO example only
>>> data = np.genfromtxt(s, dtype=None,
... names = ['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, 'abcde'),
dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', '<U5')])
Specifying dtype and names
>>> _ = s.seek(0)
>>> data = np.genfromtxt(s, dtype="i8,f8,S5",
... names=['myint','myfloat','mystring'], delimiter=",")
>>> data
array((1, 1.3, b'abcde'),
dtype=[('myint', '<i8'), ('myfloat', '<f8'), ('mystring', 'S5')])
An example with fixed-width columns
>>> s = StringIO("11.3abcde")
>>> data = np.genfromtxt(s, dtype=None, names=['intvar','fltvar','strvar'],
... delimiter=[1,3,5])
>>> data
array((1, 1.3, 'abcde'),
dtype=[('intvar', '<i8'), ('fltvar', '<f8'), ('strvar', '<U5')])
An example to show comments
>>> f = StringIO('''
... text,# of chars
... hello world,11
... numpy,5''')
>>> np.genfromtxt(f, dtype='S12,S12', delimiter=',')
array([(b'text', b''), (b'hello world', b'11'), (b'numpy', b'5')],
dtype=[('f0', 'S12'), ('f1', 'S12')])
geomspace(start, stop, num=50, endpoint=True, dtype=None, axis=0)
Return numbers spaced evenly on a log scale (a geometric progression).
This is similar to `logspace`, but with endpoints specified directly.
Each output sample is a constant multiple of the previous.
.. versionchanged:: 1.16.0
Non-scalar `start` and `stop` are now supported.
Parameters
----------
start : array_like
The starting value of the sequence.
stop : array_like
The final value of the sequence, unless `endpoint` is False.
In that case, ``num + 1`` values are spaced over the
interval in log-space, of which all but the last (a sequence of
length `num`) are returned.
num : integer, optional
Number of samples to generate. Default is 50.
endpoint : boolean, optional
If true, `stop` is the last sample. Otherwise, it is not included.
Default is True.
dtype : dtype
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.
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
`num` samples, equally spaced on a log scale.
See Also
--------
logspace : Similar to geomspace, but with endpoints specified using log
and base.
linspace : Similar to geomspace, but with arithmetic instead of geometric
progression.
arange : Similar to linspace, with the step size specified instead of the
number of samples.
:ref:`how-to-partition`
Notes
-----
If the inputs or dtype are complex, the output will follow a logarithmic
spiral in the complex plane. (There are an infinite number of spirals
passing through two points; the output will follow the shortest such path.)
Examples
--------
>>> import numpy as np
>>> np.geomspace(1, 1000, num=4)
array([ 1., 10., 100., 1000.])
>>> np.geomspace(1, 1000, num=3, endpoint=False)
array([ 1., 10., 100.])
>>> np.geomspace(1, 1000, num=4, endpoint=False)
array([ 1. , 5.62341325, 31.6227766 , 177.827941 ])
>>> np.geomspace(1, 256, num=9)
array([ 1., 2., 4., 8., 16., 32., 64., 128., 256.])
Note that the above may not produce exact integers:
>>> np.geomspace(1, 256, num=9, dtype=int)
array([ 1, 2, 4, 7, 16, 32, 63, 127, 256])
>>> np.around(np.geomspace(1, 256, num=9)).astype(int)
array([ 1, 2, 4, 8, 16, 32, 64, 128, 256])
Negative, decreasing, and complex inputs are allowed:
>>> np.geomspace(1000, 1, num=4)
array([1000., 100., 10., 1.])
>>> np.geomspace(-1000, -1, num=4)
array([-1000., -100., -10., -1.])
>>> np.geomspace(1j, 1000j, num=4) # Straight line
array([0. +1.j, 0. +10.j, 0. +100.j, 0.+1000.j])
>>> np.geomspace(-1+0j, 1+0j, num=5) # Circle
array([-1.00000000e+00+1.22464680e-16j, -7.07106781e-01+7.07106781e-01j,
6.12323400e-17+1.00000000e+00j, 7.07106781e-01+7.07106781e-01j,
1.00000000e+00+0.00000000e+00j])
Graphical illustration of `endpoint` parameter:
>>> import matplotlib.pyplot as plt
>>> N = 10
>>> y = np.zeros(N)
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=True), y + 1, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.semilogx(np.geomspace(1, 1000, N, endpoint=False), y + 2, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.axis([0.5, 2000, 0, 3])
[0.5, 2000, 0, 3]
>>> plt.grid(True, color='0.7', linestyle='-', which='both', axis='both')
>>> plt.show()
get_include()
Return the directory that contains the NumPy \*.h header files.
Extension modules that need to compile against NumPy may need to use this
function to locate the appropriate include directory.
Notes
-----
When using ``setuptools``, for example in ``setup.py``::
import numpy as np
...
Extension('extension_name', ...
include_dirs=[np.get_include()])
...
Note that a CLI tool ``numpy-config`` was introduced in NumPy 2.0, using
that is likely preferred for build systems other than ``setuptools``::
$ numpy-config --cflags
-I/path/to/site-packages/numpy/_core/include
# Or rely on pkg-config:
$ export PKG_CONFIG_PATH=$(numpy-config --pkgconfigdir)
$ pkg-config --cflags
-I/path/to/site-packages/numpy/_core/include
Examples
--------
>>> np.get_include()
'.../site-packages/numpy/core/include' # may vary
get_printoptions()
Return the current print options.
Returns
-------
print_opts : dict
Dictionary of current print options with keys
- precision : int
- threshold : int
- edgeitems : int
- linewidth : int
- suppress : bool
- nanstr : str
- infstr : str
- sign : str
- formatter : dict of callables
- floatmode : str
- legacy : str or False
For a full description of these options, see `set_printoptions`.
See Also
--------
set_printoptions, printoptions
Examples
--------
>>> import numpy as np
>>> np.get_printoptions()
{'edgeitems': 3, 'threshold': 1000, ..., 'override_repr': None}
>>> np.get_printoptions()['linewidth']
75
>>> np.set_printoptions(linewidth=100)
>>> np.get_printoptions()['linewidth']
100
getbufsize()
Return the size of the buffer used in ufuncs.
Returns
-------
getbufsize : int
Size of ufunc buffer in bytes.
Examples
--------
>>> import numpy as np
>>> np.getbufsize()
8192
geterr()
Get the current way of handling floating-point errors.
Returns
-------
res : dict
A dictionary with keys "divide", "over", "under", and "invalid",
whose values are from the strings "ignore", "print", "log", "warn",
"raise", and "call". The keys represent possible floating-point
exceptions, and the values define how these exceptions are handled.
See Also
--------
geterrcall, seterr, seterrcall
Notes
-----
For complete documentation of the types of floating-point exceptions and
treatment options, see `seterr`.
Examples
--------
>>> import numpy as np
>>> np.geterr()
{'divide': 'warn', 'over': 'warn', 'under': 'ignore', 'invalid': 'warn'}
>>> np.arange(3.) / np.arange(3.) # doctest: +SKIP
array([nan, 1., 1.])
RuntimeWarning: invalid value encountered in divide
>>> oldsettings = np.seterr(all='warn', invalid='raise')
>>> np.geterr()
{'divide': 'warn', 'over': 'warn', 'under': 'warn', 'invalid': 'raise'}
>>> np.arange(3.) / np.arange(3.)
Traceback (most recent call last):
...
FloatingPointError: invalid value encountered in divide
>>> oldsettings = np.seterr(**oldsettings) # restore original
geterrcall()
Return the current callback function used on floating-point errors.
When the error handling for a floating-point error (one of "divide",
"over", "under", or "invalid") is set to 'call' or 'log', the function
that is called or the log instance that is written to is returned by
`geterrcall`. This function or log instance has been set with
`seterrcall`.
Returns
-------
errobj : callable, log instance or None
The current error handler. If no handler was set through `seterrcall`,
``None`` is returned.
See Also
--------
seterrcall, seterr, geterr
Notes
-----
For complete documentation of the types of floating-point exceptions and
treatment options, see `seterr`.
Examples
--------
>>> import numpy as np
>>> np.geterrcall() # we did not yet set a handler, returns None
>>> orig_settings = np.seterr(all='call')
>>> def err_handler(type, flag):
... print("Floating point error (%s), with flag %s" % (type, flag))
>>> old_handler = np.seterrcall(err_handler)
>>> np.array([1, 2, 3]) / 0.0
Floating point error (divide by zero), with flag 1
array([inf, inf, inf])
>>> cur_handler = np.geterrcall()
>>> cur_handler is err_handler
True
>>> old_settings = np.seterr(**orig_settings) # restore original
>>> old_handler = np.seterrcall(None) # restore original
gradient(f, *varargs, axis=None, edge_order=1)
Return the gradient of an N-dimensional array.
The gradient is computed using second order accurate central differences
in the interior points and either first or second order accurate one-sides
(forward or backwards) differences at the boundaries.
The returned gradient hence has the same shape as the input array.
Parameters
----------
f : array_like
An N-dimensional array containing samples of a scalar function.
varargs : list of scalar or array, optional
Spacing between f values. Default unitary spacing for all dimensions.
Spacing can be specified using:
1. single scalar to specify a sample distance for all dimensions.
2. N scalars to specify a constant sample distance for each dimension.
i.e. `dx`, `dy`, `dz`, ...
3. N arrays to specify the coordinates of the values along each
dimension of F. The length of the array must match the size of
the corresponding dimension
4. Any combination of N scalars/arrays with the meaning of 2. and 3.
If `axis` is given, the number of varargs must equal the number of axes.
Default: 1. (see Examples below).
edge_order : {1, 2}, optional
Gradient is calculated using N-th order accurate differences
at the boundaries. Default: 1.
.. versionadded:: 1.9.1
axis : None or int or tuple of ints, optional
Gradient is calculated only along the given axis or axes
The default (axis = None) is to calculate the gradient for all the axes
of the input array. axis may be negative, in which case it counts from
the last to the first axis.
.. versionadded:: 1.11.0
Returns
-------
gradient : ndarray or tuple of ndarray
A tuple of ndarrays (or a single ndarray if there is only one
dimension) corresponding to the derivatives of f with respect
to each dimension. Each derivative has the same shape as f.
Examples
--------
>>> import numpy as np
>>> f = np.array([1, 2, 4, 7, 11, 16])
>>> np.gradient(f)
array([1. , 1.5, 2.5, 3.5, 4.5, 5. ])
>>> np.gradient(f, 2)
array([0.5 , 0.75, 1.25, 1.75, 2.25, 2.5 ])
Spacing can be also specified with an array that represents the coordinates
of the values F along the dimensions.
For instance a uniform spacing:
>>> x = np.arange(f.size)
>>> np.gradient(f, x)
array([1. , 1.5, 2.5, 3.5, 4.5, 5. ])
Or a non uniform one:
>>> x = np.array([0., 1., 1.5, 3.5, 4., 6.])
>>> np.gradient(f, x)
array([1. , 3. , 3.5, 6.7, 6.9, 2.5])
For two dimensional arrays, the return will be two arrays ordered by
axis. In this example the first array stands for the gradient in
rows and the second one in columns direction:
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]]))
(array([[ 2., 2., -1.],
[ 2., 2., -1.]]),
array([[1. , 2.5, 4. ],
[1. , 1. , 1. ]]))
In this example the spacing is also specified:
uniform for axis=0 and non uniform for axis=1
>>> dx = 2.
>>> y = [1., 1.5, 3.5]
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]]), dx, y)
(array([[ 1. , 1. , -0.5],
[ 1. , 1. , -0.5]]),
array([[2. , 2. , 2. ],
[2. , 1.7, 0.5]]))
It is possible to specify how boundaries are treated using `edge_order`
>>> x = np.array([0, 1, 2, 3, 4])
>>> f = x**2
>>> np.gradient(f, edge_order=1)
array([1., 2., 4., 6., 7.])
>>> np.gradient(f, edge_order=2)
array([0., 2., 4., 6., 8.])
The `axis` keyword can be used to specify a subset of axes of which the
gradient is calculated
>>> np.gradient(np.array([[1, 2, 6], [3, 4, 5]]), axis=0)
array([[ 2., 2., -1.],
[ 2., 2., -1.]])
The `varargs` argument defines the spacing between sample points in the
input array. It can take two forms:
1. An array, specifying coordinates, which may be unevenly spaced:
>>> x = np.array([0., 2., 3., 6., 8.])
>>> y = x ** 2
>>> np.gradient(y, x, edge_order=2)
array([ 0., 4., 6., 12., 16.])
2. A scalar, representing the fixed sample distance:
>>> dx = 2
>>> x = np.array([0., 2., 4., 6., 8.])
>>> y = x ** 2
>>> np.gradient(y, dx, edge_order=2)
array([ 0., 4., 8., 12., 16.])
It's possible to provide different data for spacing along each dimension.
The number of arguments must match the number of dimensions in the input
data.
>>> dx = 2
>>> dy = 3
>>> x = np.arange(0, 6, dx)
>>> y = np.arange(0, 9, dy)
>>> xs, ys = np.meshgrid(x, y)
>>> zs = xs + 2 * ys
>>> np.gradient(zs, dy, dx) # Passing two scalars
(array([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]]),
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]))
Mixing scalars and arrays is also allowed:
>>> np.gradient(zs, y, dx) # Passing one array and one scalar
(array([[2., 2., 2.],
[2., 2., 2.],
[2., 2., 2.]]),
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]]))
Notes
-----
Assuming that :math:`f\in C^{3}` (i.e., :math:`f` has at least 3 continuous
derivatives) and let :math:`h_{*}` be a non-homogeneous stepsize, we
minimize the "consistency error" :math:`\eta_{i}` between the true gradient
and its estimate from a linear combination of the neighboring grid-points:
.. math::
\eta_{i} = f_{i}^{\left(1\right)} -
\left[ \alpha f\left(x_{i}\right) +
\beta f\left(x_{i} + h_{d}\right) +
\gamma f\left(x_{i}-h_{s}\right)
\right]
By substituting :math:`f(x_{i} + h_{d})` and :math:`f(x_{i} - h_{s})`
with their Taylor series expansion, this translates into solving
the following the linear system:
.. math::
\left\{
\begin{array}{r}
\alpha+\beta+\gamma=0 \\
\beta h_{d}-\gamma h_{s}=1 \\
\beta h_{d}^{2}+\gamma h_{s}^{2}=0
\end{array}
\right.
The resulting approximation of :math:`f_{i}^{(1)}` is the following:
.. math::
\hat f_{i}^{(1)} =
\frac{
h_{s}^{2}f\left(x_{i} + h_{d}\right)
+ \left(h_{d}^{2} - h_{s}^{2}\right)f\left(x_{i}\right)
- h_{d}^{2}f\left(x_{i}-h_{s}\right)}
{ h_{s}h_{d}\left(h_{d} + h_{s}\right)}
+ \mathcal{O}\left(\frac{h_{d}h_{s}^{2}
+ h_{s}h_{d}^{2}}{h_{d}
+ h_{s}}\right)
It is worth noting that if :math:`h_{s}=h_{d}`
(i.e., data are evenly spaced)
we find the standard second order approximation:
.. math::
\hat f_{i}^{(1)}=
\frac{f\left(x_{i+1}\right) - f\left(x_{i-1}\right)}{2h}
+ \mathcal{O}\left(h^{2}\right)
With a similar procedure the forward/backward approximations used for
boundaries can be derived.
References
----------
.. [1] Quarteroni A., Sacco R., Saleri F. (2007) Numerical Mathematics
(Texts in Applied Mathematics). New York: Springer.
.. [2] Durran D. R. (1999) Numerical Methods for Wave Equations
in Geophysical Fluid Dynamics. New York: Springer.
.. [3] Fornberg B. (1988) Generation of Finite Difference Formulas on
Arbitrarily Spaced Grids,
Mathematics of Computation 51, no. 184 : 699-706.
`PDF <https://www.ams.org/journals/mcom/1988-51-184/
S0025-5718-1988-0935077-0/S0025-5718-1988-0935077-0.pdf>`_.
hamming(M)
Return the Hamming window.
The Hamming window is a taper formed by using a weighted cosine.
Parameters
----------
M : int
Number of points in the output window. If zero or less, an
empty array is returned.
Returns
-------
out : ndarray
The window, with the maximum value normalized to one (the value
one appears only if the number of samples is odd).
See Also
--------
bartlett, blackman, hanning, kaiser
Notes
-----
The Hamming window is defined as
.. math:: w(n) = 0.54 - 0.46\cos\left(\frac{2\pi{n}}{M-1}\right)
\qquad 0 \leq n \leq M-1
The Hamming was named for R. W. Hamming, an associate of J. W. Tukey
and is described in Blackman and Tukey. It was recommended for
smoothing the truncated autocovariance function in the time domain.
Most references to the Hamming window come from the signal processing
literature, where it is used as one of many windowing functions for
smoothing values. It is also known as an apodization (which means
"removing the foot", i.e. smoothing discontinuities at the beginning
and end of the sampled signal) or tapering function.
References
----------
.. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power
spectra, Dover Publications, New York.
.. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The
University of Alberta Press, 1975, pp. 109-110.
.. [3] Wikipedia, "Window function",
https://en.wikipedia.org/wiki/Window_function
.. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
"Numerical Recipes", Cambridge University Press, 1986, page 425.
Examples
--------
>>> import numpy as np
>>> np.hamming(12)
array([ 0.08 , 0.15302337, 0.34890909, 0.60546483, 0.84123594, # may vary
0.98136677, 0.98136677, 0.84123594, 0.60546483, 0.34890909,
0.15302337, 0.08 ])
Plot the window and the frequency response.
.. plot::
:include-source:
import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.hamming(51)
plt.plot(window)
plt.title("Hamming window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of Hamming window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
hanning(M)
Return the Hanning window.
The Hanning window is a taper formed by using a weighted cosine.
Parameters
----------
M : int
Number of points in the output window. If zero or less, an
empty array is returned.
Returns
-------
out : ndarray, shape(M,)
The window, with the maximum value normalized to one (the value
one appears only if `M` is odd).
See Also
--------
bartlett, blackman, hamming, kaiser
Notes
-----
The Hanning window is defined as
.. math:: w(n) = 0.5 - 0.5\cos\left(\frac{2\pi{n}}{M-1}\right)
\qquad 0 \leq n \leq M-1
The Hanning was named for Julius von Hann, an Austrian meteorologist.
It is also known as the Cosine Bell. Some authors prefer that it be
called a Hann window, to help avoid confusion with the very similar
Hamming window.
Most references to the Hanning window come from the signal processing
literature, where it is used as one of many windowing functions for
smoothing values. It is also known as an apodization (which means
"removing the foot", i.e. smoothing discontinuities at the beginning
and end of the sampled signal) or tapering function.
References
----------
.. [1] Blackman, R.B. and Tukey, J.W., (1958) The measurement of power
spectra, Dover Publications, New York.
.. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics",
The University of Alberta Press, 1975, pp. 106-108.
.. [3] Wikipedia, "Window function",
https://en.wikipedia.org/wiki/Window_function
.. [4] W.H. Press, B.P. Flannery, S.A. Teukolsky, and W.T. Vetterling,
"Numerical Recipes", Cambridge University Press, 1986, page 425.
Examples
--------
>>> import numpy as np
>>> np.hanning(12)
array([0. , 0.07937323, 0.29229249, 0.57115742, 0.82743037,
0.97974649, 0.97974649, 0.82743037, 0.57115742, 0.29229249,
0.07937323, 0. ])
Plot the window and its frequency response.
.. plot::
:include-source:
import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.hanning(51)
plt.plot(window)
plt.title("Hann window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
with np.errstate(divide='ignore', invalid='ignore'):
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of the Hann window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
histogram(a, bins=10, range=None, density=None, weights=None)
Compute the histogram of a dataset.
Parameters
----------
a : array_like
Input data. The histogram is computed over the flattened array.
bins : int or sequence of scalars or str, optional
If `bins` is an int, it defines the number of equal-width
bins in the given range (10, by default). If `bins` is a
sequence, it defines a monotonically increasing array of bin edges,
including the rightmost edge, allowing for non-uniform bin widths.
.. versionadded:: 1.11.0
If `bins` is a string, it defines the method used to calculate the
optimal bin width, as defined by `histogram_bin_edges`.
range : (float, float), optional
The lower and upper range of the bins. If not provided, range
is simply ``(a.min(), a.max())``. Values outside the range are
ignored. The first element of the range must be less than or
equal to the second. `range` affects the automatic bin
computation as well. While bin width is computed to be optimal
based on the actual data within `range`, the bin count will fill
the entire range including portions containing no data.
weights : array_like, optional
An array of weights, of the same shape as `a`. Each value in
`a` only contributes its associated weight towards the bin count
(instead of 1). If `density` is True, the weights are
normalized, so that the integral of the density over the range
remains 1.
Please note that the ``dtype`` of `weights` will also become the
``dtype`` of the returned accumulator (`hist`), so it must be
large enough to hold accumulated values as well.
density : bool, optional
If ``False``, the result will contain the number of samples in
each bin. If ``True``, the result is the value of the
probability *density* function at the bin, normalized such that
the *integral* over the range is 1. Note that the sum of the
histogram values will not be equal to 1 unless bins of unity
width are chosen; it is not a probability *mass* function.
Returns
-------
hist : array
The values of the histogram. See `density` and `weights` for a
description of the possible semantics. If `weights` are given,
``hist.dtype`` will be taken from `weights`.
bin_edges : array of dtype float
Return the bin edges ``(length(hist)+1)``.
See Also
--------
histogramdd, bincount, searchsorted, digitize, histogram_bin_edges
Notes
-----
All but the last (righthand-most) bin is half-open. In other words,
if `bins` is::
[1, 2, 3, 4]
then the first bin is ``[1, 2)`` (including 1, but excluding 2) and
the second ``[2, 3)``. The last bin, however, is ``[3, 4]``, which
*includes* 4.
Examples
--------
>>> import numpy as np
>>> np.histogram([1, 2, 1], bins=[0, 1, 2, 3])
(array([0, 2, 1]), array([0, 1, 2, 3]))
>>> np.histogram(np.arange(4), bins=np.arange(5), density=True)
(array([0.25, 0.25, 0.25, 0.25]), array([0, 1, 2, 3, 4]))
>>> np.histogram([[1, 2, 1], [1, 0, 1]], bins=[0,1,2,3])
(array([1, 4, 1]), array([0, 1, 2, 3]))
>>> a = np.arange(5)
>>> hist, bin_edges = np.histogram(a, density=True)
>>> hist
array([0.5, 0. , 0.5, 0. , 0. , 0.5, 0. , 0.5, 0. , 0.5])
>>> hist.sum()
2.4999999999999996
>>> np.sum(hist * np.diff(bin_edges))
1.0
.. versionadded:: 1.11.0
Automated Bin Selection Methods example, using 2 peak random data
with 2000 points.
.. plot::
:include-source:
import matplotlib.pyplot as plt
import numpy as np
rng = np.random.RandomState(10) # deterministic random data
a = np.hstack((rng.normal(size=1000),
rng.normal(loc=5, scale=2, size=1000)))
plt.hist(a, bins='auto') # arguments are passed to np.histogram
plt.title("Histogram with 'auto' bins")
plt.show()
histogram2d(x, y, bins=10, range=None, density=None, weights=None)
Compute the bi-dimensional histogram of two data samples.
Parameters
----------
x : array_like, shape (N,)
An array containing the x coordinates of the points to be
histogrammed.
y : array_like, shape (N,)
An array containing the y coordinates of the points to be
histogrammed.
bins : int or array_like or [int, int] or [array, array], optional
The bin specification:
* If int, the number of bins for the two dimensions (nx=ny=bins).
* If array_like, the bin edges for the two dimensions
(x_edges=y_edges=bins).
* If [int, int], the number of bins in each dimension
(nx, ny = bins).
* If [array, array], the bin edges in each dimension
(x_edges, y_edges = bins).
* A combination [int, array] or [array, int], where int
is the number of bins and array is the bin edges.
range : array_like, shape(2,2), optional
The leftmost and rightmost edges of the bins along each dimension
(if not specified explicitly in the `bins` parameters):
``[[xmin, xmax], [ymin, ymax]]``. All values outside of this range
will be considered outliers and not tallied in the histogram.
density : bool, optional
If False, the default, returns the number of samples in each bin.
If True, returns the probability *density* function at the bin,
``bin_count / sample_count / bin_area``.
weights : array_like, shape(N,), optional
An array of values ``w_i`` weighing each sample ``(x_i, y_i)``.
Weights are normalized to 1 if `density` is True. If `density` is
False, the values of the returned histogram are equal to the sum of
the weights belonging to the samples falling into each bin.
Returns
-------
H : ndarray, shape(nx, ny)
The bi-dimensional histogram of samples `x` and `y`. Values in `x`
are histogrammed along the first dimension and values in `y` are
histogrammed along the second dimension.
xedges : ndarray, shape(nx+1,)
The bin edges along the first dimension.
yedges : ndarray, shape(ny+1,)
The bin edges along the second dimension.
See Also
--------
histogram : 1D histogram
histogramdd : Multidimensional histogram
Notes
-----
When `density` is True, then the returned histogram is the sample
density, defined such that the sum over bins of the product
``bin_value * bin_area`` is 1.
Please note that the histogram does not follow the Cartesian convention
where `x` values are on the abscissa and `y` values on the ordinate
axis. Rather, `x` is histogrammed along the first dimension of the
array (vertical), and `y` along the second dimension of the array
(horizontal). This ensures compatibility with `histogramdd`.
Examples
--------
>>> import numpy as np
>>> from matplotlib.image import NonUniformImage
>>> import matplotlib.pyplot as plt
Construct a 2-D histogram with variable bin width. First define the bin
edges:
>>> xedges = [0, 1, 3, 5]
>>> yedges = [0, 2, 3, 4, 6]
Next we create a histogram H with random bin content:
>>> x = np.random.normal(2, 1, 100)
>>> y = np.random.normal(1, 1, 100)
>>> H, xedges, yedges = np.histogram2d(x, y, bins=(xedges, yedges))
>>> # Histogram does not follow Cartesian convention (see Notes),
>>> # therefore transpose H for visualization purposes.
>>> H = H.T
:func:`imshow <matplotlib.pyplot.imshow>` can only display square bins:
>>> fig = plt.figure(figsize=(7, 3))
>>> ax = fig.add_subplot(131, title='imshow: square bins')
>>> plt.imshow(H, interpolation='nearest', origin='lower',
... extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
<matplotlib.image.AxesImage object at 0x...>
:func:`pcolormesh <matplotlib.pyplot.pcolormesh>` can display actual edges:
>>> ax = fig.add_subplot(132, title='pcolormesh: actual edges',
... aspect='equal')
>>> X, Y = np.meshgrid(xedges, yedges)
>>> ax.pcolormesh(X, Y, H)
<matplotlib.collections.QuadMesh object at 0x...>
:class:`NonUniformImage <matplotlib.image.NonUniformImage>` can be used to
display actual bin edges with interpolation:
>>> ax = fig.add_subplot(133, title='NonUniformImage: interpolated',
... aspect='equal', xlim=xedges[[0, -1]], ylim=yedges[[0, -1]])
>>> im = NonUniformImage(ax, interpolation='bilinear')
>>> xcenters = (xedges[:-1] + xedges[1:]) / 2
>>> ycenters = (yedges[:-1] + yedges[1:]) / 2
>>> im.set_data(xcenters, ycenters, H)
>>> ax.add_image(im)
>>> plt.show()
It is also possible to construct a 2-D histogram without specifying bin
edges:
>>> # Generate non-symmetric test data
>>> n = 10000
>>> x = np.linspace(1, 100, n)
>>> y = 2*np.log(x) + np.random.rand(n) - 0.5
>>> # Compute 2d histogram. Note the order of x/y and xedges/yedges
>>> H, yedges, xedges = np.histogram2d(y, x, bins=20)
Now we can plot the histogram using
:func:`pcolormesh <matplotlib.pyplot.pcolormesh>`, and a
:func:`hexbin <matplotlib.pyplot.hexbin>` for comparison.
>>> # Plot histogram using pcolormesh
>>> fig, (ax1, ax2) = plt.subplots(ncols=2, sharey=True)
>>> ax1.pcolormesh(xedges, yedges, H, cmap='rainbow')
>>> ax1.plot(x, 2*np.log(x), 'k-')
>>> ax1.set_xlim(x.min(), x.max())
>>> ax1.set_ylim(y.min(), y.max())
>>> ax1.set_xlabel('x')
>>> ax1.set_ylabel('y')
>>> ax1.set_title('histogram2d')
>>> ax1.grid()
>>> # Create hexbin plot for comparison
>>> ax2.hexbin(x, y, gridsize=20, cmap='rainbow')
>>> ax2.plot(x, 2*np.log(x), 'k-')
>>> ax2.set_title('hexbin')
>>> ax2.set_xlim(x.min(), x.max())
>>> ax2.set_xlabel('x')
>>> ax2.grid()
>>> plt.show()
histogram_bin_edges(a, bins=10, range=None, weights=None)
Function to calculate only the edges of the bins used by the `histogram`
function.
Parameters
----------
a : array_like
Input data. The histogram is computed over the flattened array.
bins : int or sequence of scalars or str, optional
If `bins` is an int, it defines the number of equal-width
bins in the given range (10, by default). If `bins` is a
sequence, it defines the bin edges, including the rightmost
edge, allowing for non-uniform bin widths.
If `bins` is a string from the list below, `histogram_bin_edges` will
use the method chosen to calculate the optimal bin width and
consequently the number of bins (see the Notes section for more detail
on the estimators) from the data that falls within the requested range.
While the bin width will be optimal for the actual data
in the range, the number of bins will be computed to fill the
entire range, including the empty portions. For visualisation,
using the 'auto' option is suggested. Weighted data is not
supported for automated bin size selection.
'auto'
Minimum bin width between the 'sturges' and 'fd' estimators.
Provides good all-around performance.
'fd' (Freedman Diaconis Estimator)
Robust (resilient to outliers) estimator that takes into
account data variability and data size.
'doane'
An improved version of Sturges' estimator that works better
with non-normal datasets.
'scott'
Less robust estimator that takes into account data variability
and data size.
'stone'
Estimator based on leave-one-out cross-validation estimate of
the integrated squared error. Can be regarded as a generalization
of Scott's rule.
'rice'
Estimator does not take variability into account, only data
size. Commonly overestimates number of bins required.
'sturges'
R's default method, only accounts for data size. Only
optimal for gaussian data and underestimates number of bins
for large non-gaussian datasets.
'sqrt'
Square root (of data size) estimator, used by Excel and
other programs for its speed and simplicity.
range : (float, float), optional
The lower and upper range of the bins. If not provided, range
is simply ``(a.min(), a.max())``. Values outside the range are
ignored. The first element of the range must be less than or
equal to the second. `range` affects the automatic bin
computation as well. While bin width is computed to be optimal
based on the actual data within `range`, the bin count will fill
the entire range including portions containing no data.
weights : array_like, optional
An array of weights, of the same shape as `a`. Each value in
`a` only contributes its associated weight towards the bin count
(instead of 1). This is currently not used by any of the bin estimators,
but may be in the future.
Returns
-------
bin_edges : array of dtype float
The edges to pass into `histogram`
See Also
--------
histogram
Notes
-----
The methods to estimate the optimal number of bins are well founded
in literature, and are inspired by the choices R provides for
histogram visualisation. Note that having the number of bins
proportional to :math:`n^{1/3}` is asymptotically optimal, which is
why it appears in most estimators. These are simply plug-in methods
that give good starting points for number of bins. In the equations
below, :math:`h` is the binwidth and :math:`n_h` is the number of
bins. All estimators that compute bin counts are recast to bin width
using the `ptp` of the data. The final bin count is obtained from
``np.round(np.ceil(range / h))``. The final bin width is often less
than what is returned by the estimators below.
'auto' (minimum bin width of the 'sturges' and 'fd' estimators)
A compromise to get a good value. For small datasets the Sturges
value will usually be chosen, while larger datasets will usually
default to FD. Avoids the overly conservative behaviour of FD
and Sturges for small and large datasets respectively.
Switchover point is usually :math:`a.size \approx 1000`.
'fd' (Freedman Diaconis Estimator)
.. math:: h = 2 \frac{IQR}{n^{1/3}}
The binwidth is proportional to the interquartile range (IQR)
and inversely proportional to cube root of a.size. Can be too
conservative for small datasets, but is quite good for large
datasets. The IQR is very robust to outliers.
'scott'
.. math:: h = \sigma \sqrt[3]{\frac{24 \sqrt{\pi}}{n}}
The binwidth is proportional to the standard deviation of the
data and inversely proportional to cube root of ``x.size``. Can
be too conservative for small datasets, but is quite good for
large datasets. The standard deviation is not very robust to
outliers. Values are very similar to the Freedman-Diaconis
estimator in the absence of outliers.
'rice'
.. math:: n_h = 2n^{1/3}
The number of bins is only proportional to cube root of
``a.size``. It tends to overestimate the number of bins and it
does not take into account data variability.
'sturges'
.. math:: n_h = \log _{2}(n) + 1
The number of bins is the base 2 log of ``a.size``. This
estimator assumes normality of data and is too conservative for
larger, non-normal datasets. This is the default method in R's
``hist`` method.
'doane'
.. math:: n_h = 1 + \log_{2}(n) +
\log_{2}\left(1 + \frac{|g_1|}{\sigma_{g_1}}\right)
g_1 = mean\left[\left(\frac{x - \mu}{\sigma}\right)^3\right]
\sigma_{g_1} = \sqrt{\frac{6(n - 2)}{(n + 1)(n + 3)}}
An improved version of Sturges' formula that produces better
estimates for non-normal datasets. This estimator attempts to
account for the skew of the data.
'sqrt'
.. math:: n_h = \sqrt n
The simplest and fastest estimator. Only takes into account the
data size.
Additionally, if the data is of integer dtype, then the binwidth will never
be less than 1.
Examples
--------
>>> import numpy as np
>>> arr = np.array([0, 0, 0, 1, 2, 3, 3, 4, 5])
>>> np.histogram_bin_edges(arr, bins='auto', range=(0, 1))
array([0. , 0.25, 0.5 , 0.75, 1. ])
>>> np.histogram_bin_edges(arr, bins=2)
array([0. , 2.5, 5. ])
For consistency with histogram, an array of pre-computed bins is
passed through unmodified:
>>> np.histogram_bin_edges(arr, [1, 2])
array([1, 2])
This function allows one set of bins to be computed, and reused across
multiple histograms:
>>> shared_bins = np.histogram_bin_edges(arr, bins='auto')
>>> shared_bins
array([0., 1., 2., 3., 4., 5.])
>>> group_id = np.array([0, 1, 1, 0, 1, 1, 0, 1, 1])
>>> hist_0, _ = np.histogram(arr[group_id == 0], bins=shared_bins)
>>> hist_1, _ = np.histogram(arr[group_id == 1], bins=shared_bins)
>>> hist_0; hist_1
array([1, 1, 0, 1, 0])
array([2, 0, 1, 1, 2])
Which gives more easily comparable results than using separate bins for
each histogram:
>>> hist_0, bins_0 = np.histogram(arr[group_id == 0], bins='auto')
>>> hist_1, bins_1 = np.histogram(arr[group_id == 1], bins='auto')
>>> hist_0; hist_1
array([1, 1, 1])
array([2, 1, 1, 2])
>>> bins_0; bins_1
array([0., 1., 2., 3.])
array([0. , 1.25, 2.5 , 3.75, 5. ])
histogramdd(sample, bins=10, range=None, density=None, weights=None)
Compute the multidimensional histogram of some data.
Parameters
----------
sample : (N, D) array, or (N, D) array_like
The data to be histogrammed.
Note the unusual interpretation of sample when an array_like:
* When an array, each row is a coordinate in a D-dimensional space -
such as ``histogramdd(np.array([p1, p2, p3]))``.
* When an array_like, each element is the list of values for single
coordinate - such as ``histogramdd((X, Y, Z))``.
The first form should be preferred.
bins : sequence or int, optional
The bin specification:
* A sequence of arrays describing the monotonically increasing bin
edges along each dimension.
* The number of bins for each dimension (nx, ny, ... =bins)
* The number of bins for all dimensions (nx=ny=...=bins).
range : sequence, optional
A sequence of length D, each an optional (lower, upper) tuple giving
the outer bin edges to be used if the edges are not given explicitly in
`bins`.
An entry of None in the sequence results in the minimum and maximum
values being used for the corresponding dimension.
The default, None, is equivalent to passing a tuple of D None values.
density : bool, optional
If False, the default, returns the number of samples in each bin.
If True, returns the probability *density* function at the bin,
``bin_count / sample_count / bin_volume``.
weights : (N,) array_like, optional
An array of values `w_i` weighing each sample `(x_i, y_i, z_i, ...)`.
Weights are normalized to 1 if density is True. If density is False,
the values of the returned histogram are equal to the sum of the
weights belonging to the samples falling into each bin.
Returns
-------
H : ndarray
The multidimensional histogram of sample x. See density and weights
for the different possible semantics.
edges : tuple of ndarrays
A tuple of D arrays describing the bin edges for each dimension.
See Also
--------
histogram: 1-D histogram
histogram2d: 2-D histogram
Examples
--------
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> r = rng.normal(size=(100,3))
>>> H, edges = np.histogramdd(r, bins = (5, 8, 4))
>>> H.shape, edges[0].size, edges[1].size, edges[2].size
((5, 8, 4), 6, 9, 5)
hsplit(ary, indices_or_sections)
Split an array into multiple sub-arrays horizontally (column-wise).
Please refer to the `split` documentation. `hsplit` is equivalent
to `split` with ``axis=1``, the array is always split along the second
axis except for 1-D arrays, where it is split at ``axis=0``.
See Also
--------
split : Split an array into multiple sub-arrays of equal size.
Examples
--------
>>> import numpy as np
>>> x = np.arange(16.0).reshape(4, 4)
>>> x
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.]])
>>> np.hsplit(x, 2)
[array([[ 0., 1.],
[ 4., 5.],
[ 8., 9.],
[12., 13.]]),
array([[ 2., 3.],
[ 6., 7.],
[10., 11.],
[14., 15.]])]
>>> np.hsplit(x, np.array([3, 6]))
[array([[ 0., 1., 2.],
[ 4., 5., 6.],
[ 8., 9., 10.],
[12., 13., 14.]]),
array([[ 3.],
[ 7.],
[11.],
[15.]]),
array([], shape=(4, 0), dtype=float64)]
With a higher dimensional array the split is still along the second axis.
>>> x = np.arange(8.0).reshape(2, 2, 2)
>>> x
array([[[0., 1.],
[2., 3.]],
[[4., 5.],
[6., 7.]]])
>>> np.hsplit(x, 2)
[array([[[0., 1.]],
[[4., 5.]]]),
array([[[2., 3.]],
[[6., 7.]]])]
With a 1-D array, the split is along axis 0.
>>> x = np.array([0, 1, 2, 3, 4, 5])
>>> np.hsplit(x, 2)
[array([0, 1, 2]), array([3, 4, 5])]
hstack(tup, *, dtype=None, casting='same_kind')
Stack arrays in sequence horizontally (column wise).
This is equivalent to concatenation along the second axis, except for 1-D
arrays where it concatenates along the first axis. Rebuilds arrays divided
by `hsplit`.
This function makes most sense for arrays with up to 3 dimensions. For
instance, for pixel-data with a height (first axis), width (second axis),
and r/g/b channels (third axis). The functions `concatenate`, `stack` and
`block` provide more general stacking and concatenation operations.
Parameters
----------
tup : sequence of ndarrays
The arrays must have the same shape along all but the second axis,
except 1-D arrays which can be any length.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.24
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
.. versionadded:: 1.24
Returns
-------
stacked : ndarray
The array formed by stacking the given arrays.
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
block : Assemble an nd-array from nested lists of blocks.
vstack : Stack arrays in sequence vertically (row wise).
dstack : Stack arrays in sequence depth wise (along third axis).
column_stack : Stack 1-D arrays as columns into a 2-D array.
hsplit : Split an array into multiple sub-arrays
horizontally (column-wise).
unstack : Split an array into a tuple of sub-arrays along an axis.
Examples
--------
>>> import numpy as np
>>> a = np.array((1,2,3))
>>> b = np.array((4,5,6))
>>> np.hstack((a,b))
array([1, 2, 3, 4, 5, 6])
>>> a = np.array([[1],[2],[3]])
>>> b = np.array([[4],[5],[6]])
>>> np.hstack((a,b))
array([[1, 4],
[2, 5],
[3, 6]])
i0(x)
Modified Bessel function of the first kind, order 0.
Usually denoted :math:`I_0`.
Parameters
----------
x : array_like of float
Argument of the Bessel function.
Returns
-------
out : ndarray, shape = x.shape, dtype = float
The modified Bessel function evaluated at each of the elements of `x`.
See Also
--------
scipy.special.i0, scipy.special.iv, scipy.special.ive
Notes
-----
The scipy implementation is recommended over this function: it is a
proper ufunc written in C, and more than an order of magnitude faster.
We use the algorithm published by Clenshaw [1]_ and referenced by
Abramowitz and Stegun [2]_, for which the function domain is
partitioned into the two intervals [0,8] and (8,inf), and Chebyshev
polynomial expansions are employed in each interval. Relative error on
the domain [0,30] using IEEE arithmetic is documented [3]_ as having a
peak of 5.8e-16 with an rms of 1.4e-16 (n = 30000).
References
----------
.. [1] C. W. Clenshaw, "Chebyshev series for mathematical functions", in
*National Physical Laboratory Mathematical Tables*, vol. 5, London:
Her Majesty's Stationery Office, 1962.
.. [2] M. Abramowitz and I. A. Stegun, *Handbook of Mathematical
Functions*, 10th printing, New York: Dover, 1964, pp. 379.
https://personal.math.ubc.ca/~cbm/aands/page_379.htm
.. [3] https://metacpan.org/pod/distribution/Math-Cephes/lib/Math/Cephes.pod#i0:-Modified-Bessel-function-of-order-zero
Examples
--------
>>> import numpy as np
>>> np.i0(0.)
array(1.0)
>>> np.i0([0, 1, 2, 3])
array([1. , 1.26606588, 2.2795853 , 4.88079259])
identity(n, dtype=None, *, like=None)
Return the identity array.
The identity array is a square array with ones on
the main diagonal.
Parameters
----------
n : int
Number of rows (and columns) in `n` x `n` output.
dtype : data-type, optional
Data-type of the output. Defaults to ``float``.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
`n` x `n` array with its main diagonal set to one,
and all other elements 0.
Examples
--------
>>> import numpy as np
>>> np.identity(3)
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
imag(val)
Return the imaginary part of the complex argument.
Parameters
----------
val : array_like
Input array.
Returns
-------
out : ndarray or scalar
The imaginary component of the complex argument. If `val` is real,
the type of `val` is used for the output. If `val` has complex
elements, the returned type is float.
See Also
--------
real, angle, real_if_close
Examples
--------
>>> import numpy as np
>>> a = np.array([1+2j, 3+4j, 5+6j])
>>> a.imag
array([2., 4., 6.])
>>> a.imag = np.array([8, 10, 12])
>>> a
array([1. +8.j, 3.+10.j, 5.+12.j])
>>> np.imag(1 + 1j)
1.0
in1d(ar1, ar2, assume_unique=False, invert=False, *, kind=None)
Test whether each element of a 1-D array is also present in a second array.
.. deprecated:: 2.0
Use :func:`isin` instead of `in1d` for new code.
Returns a boolean array the same length as `ar1` that is True
where an element of `ar1` is in `ar2` and False otherwise.
Parameters
----------
ar1 : (M,) array_like
Input array.
ar2 : array_like
The values against which to test each value of `ar1`.
assume_unique : bool, optional
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. Default is False.
invert : bool, optional
If True, the values in the returned array are inverted (that is,
False where an element of `ar1` is in `ar2` and True otherwise).
Default is False. ``np.in1d(a, b, invert=True)`` is equivalent
to (but is faster than) ``np.invert(in1d(a, b))``.
kind : {None, 'sort', 'table'}, optional
The algorithm to use. This will not affect the final result,
but will affect the speed and memory use. The default, None,
will select automatically based on memory considerations.
* If 'sort', will use a mergesort-based approach. This will have
a memory usage of roughly 6 times the sum of the sizes of
`ar1` and `ar2`, not accounting for size of dtypes.
* If 'table', will use a lookup table approach similar
to a counting sort. This is only available for boolean and
integer arrays. This will have a memory usage of the
size of `ar1` plus the max-min value of `ar2`. `assume_unique`
has no effect when the 'table' option is used.
* If None, will automatically choose 'table' if
the required memory allocation is less than or equal to
6 times the sum of the sizes of `ar1` and `ar2`,
otherwise will use 'sort'. This is done to not use
a large amount of memory by default, even though
'table' may be faster in most cases. If 'table' is chosen,
`assume_unique` will have no effect.
.. versionadded:: 1.8.0
Returns
-------
in1d : (M,) ndarray, bool
The values `ar1[in1d]` are in `ar2`.
See Also
--------
isin : Version of this function that preserves the
shape of ar1.
Notes
-----
`in1d` can be considered as an element-wise function version of the
python keyword `in`, for 1-D sequences. ``in1d(a, b)`` is roughly
equivalent to ``np.array([item in b for item in a])``.
However, this idea fails if `ar2` is a set, or similar (non-sequence)
container: As ``ar2`` is converted to an array, in those cases
``asarray(ar2)`` is an object array rather than the expected array of
contained values.
Using ``kind='table'`` tends to be faster than `kind='sort'` if the
following relationship is true:
``log10(len(ar2)) > (log10(max(ar2)-min(ar2)) - 2.27) / 0.927``,
but may use greater memory. The default value for `kind` will
be automatically selected based only on memory usage, so one may
manually set ``kind='table'`` if memory constraints can be relaxed.
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
>>> test = np.array([0, 1, 2, 5, 0])
>>> states = [0, 2]
>>> mask = np.in1d(test, states)
>>> mask
array([ True, False, True, False, True])
>>> test[mask]
array([0, 2, 0])
>>> mask = np.in1d(test, states, invert=True)
>>> mask
array([False, True, False, True, False])
>>> test[mask]
array([1, 5])
indices(dimensions, dtype=<class 'int'>, sparse=False)
Return an array representing the indices of a grid.
Compute an array where the subarrays contain index values 0, 1, ...
varying only along the corresponding axis.
Parameters
----------
dimensions : sequence of ints
The shape of the grid.
dtype : dtype, optional
Data type of the result.
sparse : boolean, optional
Return a sparse representation of the grid instead of a dense
representation. Default is False.
.. versionadded:: 1.17
Returns
-------
grid : one ndarray or tuple of ndarrays
If sparse is False:
Returns one array of grid indices,
``grid.shape = (len(dimensions),) + tuple(dimensions)``.
If sparse is True:
Returns a tuple of arrays, with
``grid[i].shape = (1, ..., 1, dimensions[i], 1, ..., 1)`` with
dimensions[i] in the ith place
See Also
--------
mgrid, ogrid, meshgrid
Notes
-----
The output shape in the dense case is obtained by prepending the number
of dimensions in front of the tuple of dimensions, i.e. if `dimensions`
is a tuple ``(r0, ..., rN-1)`` of length ``N``, the output shape is
``(N, r0, ..., rN-1)``.
The subarrays ``grid[k]`` contains the N-D array of indices along the
``k-th`` axis. Explicitly::
grid[k, i0, i1, ..., iN-1] = ik
Examples
--------
>>> import numpy as np
>>> grid = np.indices((2, 3))
>>> grid.shape
(2, 2, 3)
>>> grid[0] # row indices
array([[0, 0, 0],
[1, 1, 1]])
>>> grid[1] # column indices
array([[0, 1, 2],
[0, 1, 2]])
The indices can be used as an index into an array.
>>> x = np.arange(20).reshape(5, 4)
>>> row, col = np.indices((2, 3))
>>> x[row, col]
array([[0, 1, 2],
[4, 5, 6]])
Note that it would be more straightforward in the above example to
extract the required elements directly with ``x[:2, :3]``.
If sparse is set to true, the grid will be returned in a sparse
representation.
>>> i, j = np.indices((2, 3), sparse=True)
>>> i.shape
(2, 1)
>>> j.shape
(1, 3)
>>> i # row indices
array([[0],
[1]])
>>> j # column indices
array([[0, 1, 2]])
info(object=None, maxwidth=76, output=None, toplevel='numpy')
Get help information for an array, function, class, or module.
Parameters
----------
object : object or str, optional
Input object or name to get information about. If `object` is
an `ndarray` instance, information about the array is printed.
If `object` is a numpy object, its docstring is given. If it is
a string, available modules are searched for matching objects.
If None, information about `info` itself is returned.
maxwidth : int, optional
Printing width.
output : file like object, optional
File like object that the output is written to, default is
``None``, in which case ``sys.stdout`` will be used.
The object has to be opened in 'w' or 'a' mode.
toplevel : str, optional
Start search at this level.
Notes
-----
When used interactively with an object, ``np.info(obj)`` is equivalent
to ``help(obj)`` on the Python prompt or ``obj?`` on the IPython
prompt.
Examples
--------
>>> np.info(np.polyval) # doctest: +SKIP
polyval(p, x)
Evaluate the polynomial p at x.
...
When using a string for `object` it is possible to get multiple results.
>>> np.info('fft') # doctest: +SKIP
*** Found in numpy ***
Core FFT routines
...
*** Found in numpy.fft ***
fft(a, n=None, axis=-1)
...
*** Repeat reference found in numpy.fft.fftpack ***
*** Total of 3 references found. ***
When the argument is an array, information about the array is printed.
>>> a = np.array([[1 + 2j, 3, -4], [-5j, 6, 0]], dtype=np.complex64)
>>> np.info(a)
class: ndarray
shape: (2, 3)
strides: (24, 8)
itemsize: 8
aligned: True
contiguous: True
fortran: False
data pointer: 0x562b6e0d2860 # may vary
byteorder: little
byteswap: False
type: complex64
inner(...)
inner(a, b, /)
Inner product of two arrays.
Ordinary inner product of vectors for 1-D arrays (without complex
conjugation), in higher dimensions a sum product over the last axes.
Parameters
----------
a, b : array_like
If `a` and `b` are nonscalar, their last dimensions must match.
Returns
-------
out : ndarray
If `a` and `b` are both
scalars or both 1-D arrays then a scalar is returned; otherwise
an array is returned.
``out.shape = (*a.shape[:-1], *b.shape[:-1])``
Raises
------
ValueError
If both `a` and `b` are nonscalar and their last dimensions have
different sizes.
See Also
--------
tensordot : Sum products over arbitrary axes.
dot : Generalised matrix product, using second last dimension of `b`.
einsum : Einstein summation convention.
Notes
-----
For vectors (1-D arrays) it computes the ordinary inner-product::
np.inner(a, b) = sum(a[:]*b[:])
More generally, if ``ndim(a) = r > 0`` and ``ndim(b) = s > 0``::
np.inner(a, b) = np.tensordot(a, b, axes=(-1,-1))
or explicitly::
np.inner(a, b)[i0,...,ir-2,j0,...,js-2]
= sum(a[i0,...,ir-2,:]*b[j0,...,js-2,:])
In addition `a` or `b` may be scalars, in which case::
np.inner(a,b) = a*b
Examples
--------
Ordinary inner product for vectors:
>>> import numpy as np
>>> a = np.array([1,2,3])
>>> b = np.array([0,1,0])
>>> np.inner(a, b)
2
Some multidimensional examples:
>>> a = np.arange(24).reshape((2,3,4))
>>> b = np.arange(4)
>>> c = np.inner(a, b)
>>> c.shape
(2, 3)
>>> c
array([[ 14, 38, 62],
[ 86, 110, 134]])
>>> a = np.arange(2).reshape((1,1,2))
>>> b = np.arange(6).reshape((3,2))
>>> c = np.inner(a, b)
>>> c.shape
(1, 1, 3)
>>> c
array([[[1, 3, 5]]])
An example where `b` is a scalar:
>>> np.inner(np.eye(2), 7)
array([[7., 0.],
[0., 7.]])
insert(arr, obj, values, axis=None)
Insert values along the given axis before the given indices.
Parameters
----------
arr : array_like
Input array.
obj : int, slice or sequence of ints
Object that defines the index or indices before which `values` is
inserted.
.. versionadded:: 1.8.0
Support for multiple insertions when `obj` is a single scalar or a
sequence with one element (similar to calling insert multiple
times).
values : array_like
Values to insert into `arr`. If the type of `values` is different
from that of `arr`, `values` is converted to the type of `arr`.
`values` should be shaped so that ``arr[...,obj,...] = values``
is legal.
axis : int, optional
Axis along which to insert `values`. If `axis` is None then `arr`
is flattened first.
Returns
-------
out : ndarray
A copy of `arr` with `values` inserted. Note that `insert`
does not occur in-place: a new array is returned. If
`axis` is None, `out` is a flattened array.
See Also
--------
append : Append elements at the end of an array.
concatenate : Join a sequence of arrays along an existing axis.
delete : Delete elements from an array.
Notes
-----
Note that for higher dimensional inserts ``obj=0`` behaves very different
from ``obj=[0]`` just like ``arr[:,0,:] = values`` is different from
``arr[:,[0],:] = values``. This is because of the difference between basic
and advanced :ref:`indexing <basics.indexing>`.
Examples
--------
>>> import numpy as np
>>> a = np.arange(6).reshape(3, 2)
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
>>> np.insert(a, 1, 6)
array([0, 6, 1, 2, 3, 4, 5])
>>> np.insert(a, 1, 6, axis=1)
array([[0, 6, 1],
[2, 6, 3],
[4, 6, 5]])
Difference between sequence and scalars,
showing how ``obj=[1]`` behaves different from ``obj=1``:
>>> np.insert(a, [1], [[7],[8],[9]], axis=1)
array([[0, 7, 1],
[2, 8, 3],
[4, 9, 5]])
>>> np.insert(a, 1, [[7],[8],[9]], axis=1)
array([[0, 7, 8, 9, 1],
[2, 7, 8, 9, 3],
[4, 7, 8, 9, 5]])
>>> np.array_equal(np.insert(a, 1, [7, 8, 9], axis=1),
... np.insert(a, [1], [[7],[8],[9]], axis=1))
True
>>> b = a.flatten()
>>> b
array([0, 1, 2, 3, 4, 5])
>>> np.insert(b, [2, 2], [6, 7])
array([0, 1, 6, 7, 2, 3, 4, 5])
>>> np.insert(b, slice(2, 4), [7, 8])
array([0, 1, 7, 2, 8, 3, 4, 5])
>>> np.insert(b, [2, 2], [7.13, False]) # type casting
array([0, 1, 7, 0, 2, 3, 4, 5])
>>> x = np.arange(8).reshape(2, 4)
>>> idx = (1, 3)
>>> np.insert(x, idx, 999, axis=1)
array([[ 0, 999, 1, 2, 999, 3],
[ 4, 999, 5, 6, 999, 7]])
interp(x, xp, fp, left=None, right=None, period=None)
One-dimensional linear interpolation for monotonically increasing sample points.
Returns the one-dimensional piecewise linear interpolant to a function
with given discrete data points (`xp`, `fp`), evaluated at `x`.
Parameters
----------
x : array_like
The x-coordinates at which to evaluate the interpolated values.
xp : 1-D sequence of floats
The x-coordinates of the data points, must be increasing if argument
`period` is not specified. Otherwise, `xp` is internally sorted after
normalizing the periodic boundaries with ``xp = xp % period``.
fp : 1-D sequence of float or complex
The y-coordinates of the data points, same length as `xp`.
left : optional float or complex corresponding to fp
Value to return for `x < xp[0]`, default is `fp[0]`.
right : optional float or complex corresponding to fp
Value to return for `x > xp[-1]`, default is `fp[-1]`.
period : None or float, optional
A period for the x-coordinates. This parameter allows the proper
interpolation of angular x-coordinates. Parameters `left` and `right`
are ignored if `period` is specified.
.. versionadded:: 1.10.0
Returns
-------
y : float or complex (corresponding to fp) or ndarray
The interpolated values, same shape as `x`.
Raises
------
ValueError
If `xp` and `fp` have different length
If `xp` or `fp` are not 1-D sequences
If `period == 0`
See Also
--------
scipy.interpolate
Warnings
--------
The x-coordinate sequence is expected to be increasing, but this is not
explicitly enforced. However, if the sequence `xp` is non-increasing,
interpolation results are meaningless.
Note that, since NaN is unsortable, `xp` also cannot contain NaNs.
A simple check for `xp` being strictly increasing is::
np.all(np.diff(xp) > 0)
Examples
--------
>>> import numpy as np
>>> xp = [1, 2, 3]
>>> fp = [3, 2, 0]
>>> np.interp(2.5, xp, fp)
1.0
>>> np.interp([0, 1, 1.5, 2.72, 3.14], xp, fp)
array([3. , 3. , 2.5 , 0.56, 0. ])
>>> UNDEF = -99.0
>>> np.interp(3.14, xp, fp, right=UNDEF)
-99.0
Plot an interpolant to the sine function:
>>> x = np.linspace(0, 2*np.pi, 10)
>>> y = np.sin(x)
>>> xvals = np.linspace(0, 2*np.pi, 50)
>>> yinterp = np.interp(xvals, x, y)
>>> import matplotlib.pyplot as plt
>>> plt.plot(x, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(xvals, yinterp, '-x')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.show()
Interpolation with periodic x-coordinates:
>>> x = [-180, -170, -185, 185, -10, -5, 0, 365]
>>> xp = [190, -190, 350, -350]
>>> fp = [5, 10, 3, 4]
>>> np.interp(x, xp, fp, period=360)
array([7.5 , 5. , 8.75, 6.25, 3. , 3.25, 3.5 , 3.75])
Complex interpolation:
>>> x = [1.5, 4.0]
>>> xp = [2,3,5]
>>> fp = [1.0j, 0, 2+3j]
>>> np.interp(x, xp, fp)
array([0.+1.j , 1.+1.5j])
intersect1d(ar1, ar2, assume_unique=False, return_indices=False)
Find the intersection of two arrays.
Return the sorted, unique values that are in both of the input arrays.
Parameters
----------
ar1, ar2 : array_like
Input arrays. Will be flattened if not already 1D.
assume_unique : bool
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. If True but ``ar1`` or ``ar2`` are not
unique, incorrect results and out-of-bounds indices could result.
Default is False.
return_indices : bool
If True, the indices which correspond to the intersection of the two
arrays are returned. The first instance of a value is used if there are
multiple. Default is False.
.. versionadded:: 1.15.0
Returns
-------
intersect1d : ndarray
Sorted 1D array of common and unique elements.
comm1 : ndarray
The indices of the first occurrences of the common values in `ar1`.
Only provided if `return_indices` is True.
comm2 : ndarray
The indices of the first occurrences of the common values in `ar2`.
Only provided if `return_indices` is True.
Examples
--------
>>> import numpy as np
>>> np.intersect1d([1, 3, 4, 3], [3, 1, 2, 1])
array([1, 3])
To intersect more than two arrays, use functools.reduce:
>>> from functools import reduce
>>> reduce(np.intersect1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
array([3])
To return the indices of the values common to the input arrays
along with the intersected values:
>>> x = np.array([1, 1, 2, 3, 4])
>>> y = np.array([2, 1, 4, 6])
>>> xy, x_ind, y_ind = np.intersect1d(x, y, return_indices=True)
>>> x_ind, y_ind
(array([0, 2, 4]), array([1, 0, 2]))
>>> xy, x[x_ind], y[y_ind]
(array([1, 2, 4]), array([1, 2, 4]), array([1, 2, 4]))
is_busday(...)
is_busday(
dates,
weekmask='1111100',
holidays=None,
busdaycal=None,
out=None
)
Calculates which of the given dates are valid days, and which are not.
.. versionadded:: 1.7.0
Parameters
----------
dates : array_like of datetime64[D]
The array of dates to process.
weekmask : str or array_like of bool, optional
A seven-element array indicating which of Monday through Sunday are
valid days. May be specified as a length-seven list or array, like
[1,1,1,1,1,0,0]; a length-seven string, like '1111100'; or a string
like "Mon Tue Wed Thu Fri", made up of 3-character abbreviations for
weekdays, optionally separated by white space. Valid abbreviations
are: Mon Tue Wed Thu Fri Sat Sun
holidays : array_like of datetime64[D], optional
An array of dates to consider as invalid dates. They may be
specified in any order, and NaT (not-a-time) dates are ignored.
This list is saved in a normalized form that is suited for
fast calculations of valid days.
busdaycal : busdaycalendar, optional
A `busdaycalendar` object which specifies the valid days. If this
parameter is provided, neither weekmask nor holidays may be
provided.
out : array of bool, optional
If provided, this array is filled with the result.
Returns
-------
out : array of bool
An array with the same shape as ``dates``, containing True for
each valid day, and False for each invalid day.
See Also
--------
busdaycalendar : An object that specifies a custom set of valid days.
busday_offset : Applies an offset counted in valid days.
busday_count : Counts how many valid days are in a half-open date range.
Examples
--------
>>> import numpy as np
>>> # The weekdays are Friday, Saturday, and Monday
... np.is_busday(['2011-07-01', '2011-07-02', '2011-07-18'],
... holidays=['2011-07-01', '2011-07-04', '2011-07-17'])
array([False, False, True])
isclose(a, b, rtol=1e-05, atol=1e-08, equal_nan=False)
Returns a boolean array where two arrays are element-wise equal within a
tolerance.
The tolerance values are positive, typically very small numbers. The
relative difference (`rtol` * abs(`b`)) and the absolute difference
`atol` are added together to compare against the absolute difference
between `a` and `b`.
.. warning:: The default `atol` is not appropriate for comparing numbers
with magnitudes much smaller than one (see Notes).
Parameters
----------
a, b : array_like
Input arrays to compare.
rtol : array_like
The relative tolerance parameter (see Notes).
atol : array_like
The absolute tolerance parameter (see Notes).
equal_nan : bool
Whether to compare NaN's as equal. If True, NaN's in `a` will be
considered equal to NaN's in `b` in the output array.
Returns
-------
y : array_like
Returns a boolean array of where `a` and `b` are equal within the
given tolerance. If both `a` and `b` are scalars, returns a single
boolean value.
See Also
--------
allclose
math.isclose
Notes
-----
.. versionadded:: 1.7.0
For finite values, isclose uses the following equation to test whether
two floating point values are equivalent.::
absolute(a - b) <= (atol + rtol * absolute(b))
Unlike the built-in `math.isclose`, the above equation is not symmetric
in `a` and `b` -- it assumes `b` is the reference value -- so that
`isclose(a, b)` might be different from `isclose(b, a)`.
The default value of `atol` is not appropriate when the reference value
`b` has magnitude smaller than one. For example, it is unlikely that
``a = 1e-9`` and ``b = 2e-9`` should be considered "close", yet
``isclose(1e-9, 2e-9)`` is ``True`` with default settings. Be sure
to select `atol` for the use case at hand, especially for defining the
threshold below which a non-zero value in `a` will be considered "close"
to a very small or zero value in `b`.
`isclose` is not defined for non-numeric data types.
:class:`bool` is considered a numeric data-type for this purpose.
Examples
--------
>>> import numpy as np
>>> np.isclose([1e10,1e-7], [1.00001e10,1e-8])
array([ True, False])
>>> np.isclose([1e10,1e-8], [1.00001e10,1e-9])
array([ True, True])
>>> np.isclose([1e10,1e-8], [1.0001e10,1e-9])
array([False, True])
>>> np.isclose([1.0, np.nan], [1.0, np.nan])
array([ True, False])
>>> np.isclose([1.0, np.nan], [1.0, np.nan], equal_nan=True)
array([ True, True])
>>> np.isclose([1e-8, 1e-7], [0.0, 0.0])
array([ True, False])
>>> np.isclose([1e-100, 1e-7], [0.0, 0.0], atol=0.0)
array([False, False])
>>> np.isclose([1e-10, 1e-10], [1e-20, 0.0])
array([ True, True])
>>> np.isclose([1e-10, 1e-10], [1e-20, 0.999999e-10], atol=0.0)
array([False, True])
iscomplex(x)
Returns a bool array, where True if input element is complex.
What is tested is whether the input has a non-zero imaginary part, not if
the input type is complex.
Parameters
----------
x : array_like
Input array.
Returns
-------
out : ndarray of bools
Output array.
See Also
--------
isreal
iscomplexobj : Return True if x is a complex type or an array of complex
numbers.
Examples
--------
>>> import numpy as np
>>> np.iscomplex([1+1j, 1+0j, 4.5, 3, 2, 2j])
array([ True, False, False, False, False, True])
iscomplexobj(x)
Check for a complex type or an array of complex numbers.
The type of the input is checked, not the value. Even if the input
has an imaginary part equal to zero, `iscomplexobj` evaluates to True.
Parameters
----------
x : any
The input can be of any type and shape.
Returns
-------
iscomplexobj : bool
The return value, True if `x` is of a complex type or has at least
one complex element.
See Also
--------
isrealobj, iscomplex
Examples
--------
>>> import numpy as np
>>> np.iscomplexobj(1)
False
>>> np.iscomplexobj(1+0j)
True
>>> np.iscomplexobj([3, 1+0j, True])
True
isdtype(dtype, kind)
Determine if a provided dtype is of a specified data type ``kind``.
This function only supports built-in NumPy's data types.
Third-party dtypes are not yet supported.
Parameters
----------
dtype : dtype
The input dtype.
kind : dtype or str or tuple of dtypes/strs.
dtype or dtype kind. Allowed dtype kinds are:
* ``'bool'`` : boolean kind
* ``'signed integer'`` : signed integer data types
* ``'unsigned integer'`` : unsigned integer data types
* ``'integral'`` : integer data types
* ``'real floating'`` : real-valued floating-point data types
* ``'complex floating'`` : complex floating-point data types
* ``'numeric'`` : numeric data types
Returns
-------
out : bool
See Also
--------
issubdtype
Examples
--------
>>> import numpy as np
>>> np.isdtype(np.float32, np.float64)
False
>>> np.isdtype(np.float32, "real floating")
True
>>> np.isdtype(np.complex128, ("real floating", "complex floating"))
True
isfortran(a)
Check if the array is Fortran contiguous but *not* C contiguous.
This function is obsolete. If you only want to check if an array is Fortran
contiguous use ``a.flags.f_contiguous`` instead.
Parameters
----------
a : ndarray
Input array.
Returns
-------
isfortran : bool
Returns True if the array is Fortran contiguous but *not* C contiguous.
Examples
--------
np.array allows to specify whether the array is written in C-contiguous
order (last index varies the fastest), or FORTRAN-contiguous order in
memory (first index varies the fastest).
>>> import numpy as np
>>> a = np.array([[1, 2, 3], [4, 5, 6]], order='C')
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> np.isfortran(a)
False
>>> b = np.array([[1, 2, 3], [4, 5, 6]], order='F')
>>> b
array([[1, 2, 3],
[4, 5, 6]])
>>> np.isfortran(b)
True
The transpose of a C-ordered array is a FORTRAN-ordered array.
>>> a = np.array([[1, 2, 3], [4, 5, 6]], order='C')
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> np.isfortran(a)
False
>>> b = a.T
>>> b
array([[1, 4],
[2, 5],
[3, 6]])
>>> np.isfortran(b)
True
C-ordered arrays evaluate as False even if they are also FORTRAN-ordered.
>>> np.isfortran(np.array([1, 2], order='F'))
False
isin(element, test_elements, assume_unique=False, invert=False, *, kind=None)
Calculates ``element in test_elements``, broadcasting over `element` only.
Returns a boolean array of the same shape as `element` that is True
where an element of `element` is in `test_elements` and False otherwise.
Parameters
----------
element : array_like
Input array.
test_elements : array_like
The values against which to test each value of `element`.
This argument is flattened if it is an array or array_like.
See notes for behavior with non-array-like parameters.
assume_unique : bool, optional
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. Default is False.
invert : bool, optional
If True, the values in the returned array are inverted, as if
calculating `element not in test_elements`. Default is False.
``np.isin(a, b, invert=True)`` is equivalent to (but faster
than) ``np.invert(np.isin(a, b))``.
kind : {None, 'sort', 'table'}, optional
The algorithm to use. This will not affect the final result,
but will affect the speed and memory use. The default, None,
will select automatically based on memory considerations.
* If 'sort', will use a mergesort-based approach. This will have
a memory usage of roughly 6 times the sum of the sizes of
`element` and `test_elements`, not accounting for size of dtypes.
* If 'table', will use a lookup table approach similar
to a counting sort. This is only available for boolean and
integer arrays. This will have a memory usage of the
size of `element` plus the max-min value of `test_elements`.
`assume_unique` has no effect when the 'table' option is used.
* If None, will automatically choose 'table' if
the required memory allocation is less than or equal to
6 times the sum of the sizes of `element` and `test_elements`,
otherwise will use 'sort'. This is done to not use
a large amount of memory by default, even though
'table' may be faster in most cases. If 'table' is chosen,
`assume_unique` will have no effect.
Returns
-------
isin : ndarray, bool
Has the same shape as `element`. The values `element[isin]`
are in `test_elements`.
Notes
-----
`isin` is an element-wise function version of the python keyword `in`.
``isin(a, b)`` is roughly equivalent to
``np.array([item in b for item in a])`` if `a` and `b` are 1-D sequences.
`element` and `test_elements` are converted to arrays if they are not
already. If `test_elements` is a set (or other non-sequence collection)
it will be converted to an object array with one element, rather than an
array of the values contained in `test_elements`. This is a consequence
of the `array` constructor's way of handling non-sequence collections.
Converting the set to a list usually gives the desired behavior.
Using ``kind='table'`` tends to be faster than `kind='sort'` if the
following relationship is true:
``log10(len(test_elements)) >
(log10(max(test_elements)-min(test_elements)) - 2.27) / 0.927``,
but may use greater memory. The default value for `kind` will
be automatically selected based only on memory usage, so one may
manually set ``kind='table'`` if memory constraints can be relaxed.
.. versionadded:: 1.13.0
Examples
--------
>>> import numpy as np
>>> element = 2*np.arange(4).reshape((2, 2))
>>> element
array([[0, 2],
[4, 6]])
>>> test_elements = [1, 2, 4, 8]
>>> mask = np.isin(element, test_elements)
>>> mask
array([[False, True],
[ True, False]])
>>> element[mask]
array([2, 4])
The indices of the matched values can be obtained with `nonzero`:
>>> np.nonzero(mask)
(array([0, 1]), array([1, 0]))
The test can also be inverted:
>>> mask = np.isin(element, test_elements, invert=True)
>>> mask
array([[ True, False],
[False, True]])
>>> element[mask]
array([0, 6])
Because of how `array` handles sets, the following does not
work as expected:
>>> test_set = {1, 2, 4, 8}
>>> np.isin(element, test_set)
array([[False, False],
[False, False]])
Casting the set to a list gives the expected result:
>>> np.isin(element, list(test_set))
array([[False, True],
[ True, False]])
isneginf(x, out=None)
Test element-wise for negative infinity, return result as bool array.
Parameters
----------
x : array_like
The input array.
out : array_like, optional
A location into which the result is stored. If provided, it must have a
shape that the input broadcasts to. If not provided or None, a
freshly-allocated boolean array is returned.
Returns
-------
out : ndarray
A boolean array with the same dimensions as the input.
If second argument is not supplied then a numpy boolean array is
returned with values True where the corresponding element of the
input is negative infinity and values False where the element of
the input is not negative infinity.
If a second argument is supplied the result is stored there. If the
type of that array is a numeric type the result is represented as
zeros and ones, if the type is boolean then as False and True. The
return value `out` is then a reference to that array.
See Also
--------
isinf, isposinf, isnan, isfinite
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754).
Errors result if the second argument is also supplied when x is a scalar
input, if first and second arguments have different shapes, or if the
first argument has complex values.
Examples
--------
>>> import numpy as np
>>> np.isneginf(-np.inf)
True
>>> np.isneginf(np.inf)
False
>>> np.isneginf([-np.inf, 0., np.inf])
array([ True, False, False])
>>> x = np.array([-np.inf, 0., np.inf])
>>> y = np.array([2, 2, 2])
>>> np.isneginf(x, y)
array([1, 0, 0])
>>> y
array([1, 0, 0])
isposinf(x, out=None)
Test element-wise for positive infinity, return result as bool array.
Parameters
----------
x : array_like
The input array.
out : array_like, optional
A location into which the result is stored. If provided, it must have a
shape that the input broadcasts to. If not provided or None, a
freshly-allocated boolean array is returned.
Returns
-------
out : ndarray
A boolean array with the same dimensions as the input.
If second argument is not supplied then a boolean array is returned
with values True where the corresponding element of the input is
positive infinity and values False where the element of the input is
not positive infinity.
If a second argument is supplied the result is stored there. If the
type of that array is a numeric type the result is represented as zeros
and ones, if the type is boolean then as False and True.
The return value `out` is then a reference to that array.
See Also
--------
isinf, isneginf, isfinite, isnan
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754).
Errors result if the second argument is also supplied when x is a scalar
input, if first and second arguments have different shapes, or if the
first argument has complex values
Examples
--------
>>> import numpy as np
>>> np.isposinf(np.inf)
True
>>> np.isposinf(-np.inf)
False
>>> np.isposinf([-np.inf, 0., np.inf])
array([False, False, True])
>>> x = np.array([-np.inf, 0., np.inf])
>>> y = np.array([2, 2, 2])
>>> np.isposinf(x, y)
array([0, 0, 1])
>>> y
array([0, 0, 1])
isreal(x)
Returns a bool array, where True if input element is real.
If element has complex type with zero imaginary part, the return value
for that element is True.
Parameters
----------
x : array_like
Input array.
Returns
-------
out : ndarray, bool
Boolean array of same shape as `x`.
Notes
-----
`isreal` may behave unexpectedly for string or object arrays (see examples)
See Also
--------
iscomplex
isrealobj : Return True if x is not a complex type.
Examples
--------
>>> import numpy as np
>>> a = np.array([1+1j, 1+0j, 4.5, 3, 2, 2j], dtype=complex)
>>> np.isreal(a)
array([False, True, True, True, True, False])
The function does not work on string arrays.
>>> a = np.array([2j, "a"], dtype="U")
>>> np.isreal(a) # Warns about non-elementwise comparison
False
Returns True for all elements in input array of ``dtype=object`` even if
any of the elements is complex.
>>> a = np.array([1, "2", 3+4j], dtype=object)
>>> np.isreal(a)
array([ True, True, True])
isreal should not be used with object arrays
>>> a = np.array([1+2j, 2+1j], dtype=object)
>>> np.isreal(a)
array([ True, True])
isrealobj(x)
Return True if x is a not complex type or an array of complex numbers.
The type of the input is checked, not the value. So even if the input
has an imaginary part equal to zero, `isrealobj` evaluates to False
if the data type is complex.
Parameters
----------
x : any
The input can be of any type and shape.
Returns
-------
y : bool
The return value, False if `x` is of a complex type.
See Also
--------
iscomplexobj, isreal
Notes
-----
The function is only meant for arrays with numerical values but it
accepts all other objects. Since it assumes array input, the return
value of other objects may be True.
>>> np.isrealobj('A string')
True
>>> np.isrealobj(False)
True
>>> np.isrealobj(None)
True
Examples
--------
>>> import numpy as np
>>> np.isrealobj(1)
True
>>> np.isrealobj(1+0j)
False
>>> np.isrealobj([3, 1+0j, True])
False
isscalar(element)
Returns True if the type of `element` is a scalar type.
Parameters
----------
element : any
Input argument, can be of any type and shape.
Returns
-------
val : bool
True if `element` is a scalar type, False if it is not.
See Also
--------
ndim : Get the number of dimensions of an array
Notes
-----
If you need a stricter way to identify a *numerical* scalar, use
``isinstance(x, numbers.Number)``, as that returns ``False`` for most
non-numerical elements such as strings.
In most cases ``np.ndim(x) == 0`` should be used instead of this function,
as that will also return true for 0d arrays. This is how numpy overloads
functions in the style of the ``dx`` arguments to `gradient` and
the ``bins`` argument to `histogram`. Some key differences:
+------------------------------------+---------------+-------------------+
| x |``isscalar(x)``|``np.ndim(x) == 0``|
+====================================+===============+===================+
| PEP 3141 numeric objects | ``True`` | ``True`` |
| (including builtins) | | |
+------------------------------------+---------------+-------------------+
| builtin string and buffer objects | ``True`` | ``True`` |
+------------------------------------+---------------+-------------------+
| other builtin objects, like | ``False`` | ``True`` |
| `pathlib.Path`, `Exception`, | | |
| the result of `re.compile` | | |
+------------------------------------+---------------+-------------------+
| third-party objects like | ``False`` | ``True`` |
| `matplotlib.figure.Figure` | | |
+------------------------------------+---------------+-------------------+
| zero-dimensional numpy arrays | ``False`` | ``True`` |
+------------------------------------+---------------+-------------------+
| other numpy arrays | ``False`` | ``False`` |
+------------------------------------+---------------+-------------------+
| `list`, `tuple`, and other | ``False`` | ``False`` |
| sequence objects | | |
+------------------------------------+---------------+-------------------+
Examples
--------
>>> import numpy as np
>>> np.isscalar(3.1)
True
>>> np.isscalar(np.array(3.1))
False
>>> np.isscalar([3.1])
False
>>> np.isscalar(False)
True
>>> np.isscalar('numpy')
True
NumPy supports PEP 3141 numbers:
>>> from fractions import Fraction
>>> np.isscalar(Fraction(5, 17))
True
>>> from numbers import Number
>>> np.isscalar(Number())
True
issubdtype(arg1, arg2)
Returns True if first argument is a typecode lower/equal in type hierarchy.
This is like the builtin :func:`issubclass`, but for `dtype`\ s.
Parameters
----------
arg1, arg2 : dtype_like
`dtype` or object coercible to one
Returns
-------
out : bool
See Also
--------
:ref:`arrays.scalars` : Overview of the numpy type hierarchy.
Examples
--------
`issubdtype` can be used to check the type of arrays:
>>> ints = np.array([1, 2, 3], dtype=np.int32)
>>> np.issubdtype(ints.dtype, np.integer)
True
>>> np.issubdtype(ints.dtype, np.floating)
False
>>> floats = np.array([1, 2, 3], dtype=np.float32)
>>> np.issubdtype(floats.dtype, np.integer)
False
>>> np.issubdtype(floats.dtype, np.floating)
True
Similar types of different sizes are not subdtypes of each other:
>>> np.issubdtype(np.float64, np.float32)
False
>>> np.issubdtype(np.float32, np.float64)
False
but both are subtypes of `floating`:
>>> np.issubdtype(np.float64, np.floating)
True
>>> np.issubdtype(np.float32, np.floating)
True
For convenience, dtype-like objects are allowed too:
>>> np.issubdtype('S1', np.bytes_)
True
>>> np.issubdtype('i4', np.signedinteger)
True
iterable(y)
Check whether or not an object can be iterated over.
Parameters
----------
y : object
Input object.
Returns
-------
b : bool
Return ``True`` if the object has an iterator method or is a
sequence and ``False`` otherwise.
Examples
--------
>>> import numpy as np
>>> np.iterable([1, 2, 3])
True
>>> np.iterable(2)
False
Notes
-----
In most cases, the results of ``np.iterable(obj)`` are consistent with
``isinstance(obj, collections.abc.Iterable)``. One notable exception is
the treatment of 0-dimensional arrays::
>>> from collections.abc import Iterable
>>> a = np.array(1.0) # 0-dimensional numpy array
>>> isinstance(a, Iterable)
True
>>> np.iterable(a)
False
ix_(*args)
Construct an open mesh from multiple sequences.
This function takes N 1-D sequences and returns N outputs with N
dimensions each, such that the shape is 1 in all but one dimension
and the dimension with the non-unit shape value cycles through all
N dimensions.
Using `ix_` one can quickly construct index arrays that will index
the cross product. ``a[np.ix_([1,3],[2,5])]`` returns the array
``[[a[1,2] a[1,5]], [a[3,2] a[3,5]]]``.
Parameters
----------
args : 1-D sequences
Each sequence should be of integer or boolean type.
Boolean sequences will be interpreted as boolean masks for the
corresponding dimension (equivalent to passing in
``np.nonzero(boolean_sequence)``).
Returns
-------
out : tuple of ndarrays
N arrays with N dimensions each, with N the number of input
sequences. Together these arrays form an open mesh.
See Also
--------
ogrid, mgrid, meshgrid
Examples
--------
>>> import numpy as np
>>> a = np.arange(10).reshape(2, 5)
>>> a
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> ixgrid = np.ix_([0, 1], [2, 4])
>>> ixgrid
(array([[0],
[1]]), array([[2, 4]]))
>>> ixgrid[0].shape, ixgrid[1].shape
((2, 1), (1, 2))
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
>>> ixgrid = np.ix_([True, True], [2, 4])
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
>>> ixgrid = np.ix_([True, True], [False, False, True, False, True])
>>> a[ixgrid]
array([[2, 4],
[7, 9]])
kaiser(M, beta)
Return the Kaiser window.
The Kaiser window is a taper formed by using a Bessel function.
Parameters
----------
M : int
Number of points in the output window. If zero or less, an
empty array is returned.
beta : float
Shape parameter for window.
Returns
-------
out : array
The window, with the maximum value normalized to one (the value
one appears only if the number of samples is odd).
See Also
--------
bartlett, blackman, hamming, hanning
Notes
-----
The Kaiser window is defined as
.. math:: w(n) = I_0\left( \beta \sqrt{1-\frac{4n^2}{(M-1)^2}}
\right)/I_0(\beta)
with
.. math:: \quad -\frac{M-1}{2} \leq n \leq \frac{M-1}{2},
where :math:`I_0` is the modified zeroth-order Bessel function.
The Kaiser was named for Jim Kaiser, who discovered a simple
approximation to the DPSS window based on Bessel functions. The Kaiser
window is a very good approximation to the Digital Prolate Spheroidal
Sequence, or Slepian window, which is the transform which maximizes the
energy in the main lobe of the window relative to total energy.
The Kaiser can approximate many other windows by varying the beta
parameter.
==== =======================
beta Window shape
==== =======================
0 Rectangular
5 Similar to a Hamming
6 Similar to a Hanning
8.6 Similar to a Blackman
==== =======================
A beta value of 14 is probably a good starting point. Note that as beta
gets large, the window narrows, and so the number of samples needs to be
large enough to sample the increasingly narrow spike, otherwise NaNs will
get returned.
Most references to the Kaiser window come from the signal processing
literature, where it is used as one of many windowing functions for
smoothing values. It is also known as an apodization (which means
"removing the foot", i.e. smoothing discontinuities at the beginning
and end of the sampled signal) or tapering function.
References
----------
.. [1] J. F. Kaiser, "Digital Filters" - Ch 7 in "Systems analysis by
digital computer", Editors: F.F. Kuo and J.F. Kaiser, p 218-285.
John Wiley and Sons, New York, (1966).
.. [2] E.R. Kanasewich, "Time Sequence Analysis in Geophysics", The
University of Alberta Press, 1975, pp. 177-178.
.. [3] Wikipedia, "Window function",
https://en.wikipedia.org/wiki/Window_function
Examples
--------
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> np.kaiser(12, 14)
array([7.72686684e-06, 3.46009194e-03, 4.65200189e-02, # may vary
2.29737120e-01, 5.99885316e-01, 9.45674898e-01,
9.45674898e-01, 5.99885316e-01, 2.29737120e-01,
4.65200189e-02, 3.46009194e-03, 7.72686684e-06])
Plot the window and the frequency response.
.. plot::
:include-source:
import matplotlib.pyplot as plt
from numpy.fft import fft, fftshift
window = np.kaiser(51, 14)
plt.plot(window)
plt.title("Kaiser window")
plt.ylabel("Amplitude")
plt.xlabel("Sample")
plt.show()
plt.figure()
A = fft(window, 2048) / 25.5
mag = np.abs(fftshift(A))
freq = np.linspace(-0.5, 0.5, len(A))
response = 20 * np.log10(mag)
response = np.clip(response, -100, 100)
plt.plot(freq, response)
plt.title("Frequency response of Kaiser window")
plt.ylabel("Magnitude [dB]")
plt.xlabel("Normalized frequency [cycles per sample]")
plt.axis('tight')
plt.show()
kron(a, b)
Kronecker product of two arrays.
Computes the Kronecker product, a composite array made of blocks of the
second array scaled by the first.
Parameters
----------
a, b : array_like
Returns
-------
out : ndarray
See Also
--------
outer : The outer product
Notes
-----
The function assumes that the number of dimensions of `a` and `b`
are the same, if necessary prepending the smallest with ones.
If ``a.shape = (r0,r1,..,rN)`` and ``b.shape = (s0,s1,...,sN)``,
the Kronecker product has shape ``(r0*s0, r1*s1, ..., rN*SN)``.
The elements are products of elements from `a` and `b`, organized
explicitly by::
kron(a,b)[k0,k1,...,kN] = a[i0,i1,...,iN] * b[j0,j1,...,jN]
where::
kt = it * st + jt, t = 0,...,N
In the common 2-D case (N=1), the block structure can be visualized::
[[ a[0,0]*b, a[0,1]*b, ... , a[0,-1]*b ],
[ ... ... ],
[ a[-1,0]*b, a[-1,1]*b, ... , a[-1,-1]*b ]]
Examples
--------
>>> import numpy as np
>>> np.kron([1,10,100], [5,6,7])
array([ 5, 6, 7, ..., 500, 600, 700])
>>> np.kron([5,6,7], [1,10,100])
array([ 5, 50, 500, ..., 7, 70, 700])
>>> np.kron(np.eye(2), np.ones((2,2)))
array([[1., 1., 0., 0.],
[1., 1., 0., 0.],
[0., 0., 1., 1.],
[0., 0., 1., 1.]])
>>> a = np.arange(100).reshape((2,5,2,5))
>>> b = np.arange(24).reshape((2,3,4))
>>> c = np.kron(a,b)
>>> c.shape
(2, 10, 6, 20)
>>> I = (1,3,0,2)
>>> J = (0,2,1)
>>> J1 = (0,) + J # extend to ndim=4
>>> S1 = (1,) + b.shape
>>> K = tuple(np.array(I) * np.array(S1) + np.array(J1))
>>> c[K] == a[I]*b[J]
True
lexsort(...)
lexsort(keys, axis=-1)
Perform an indirect stable sort using a sequence of keys.
Given multiple sorting keys, lexsort returns an array of integer indices
that describes the sort order by multiple keys. The last key in the
sequence is used for the primary sort order, ties are broken by the
second-to-last key, and so on.
Parameters
----------
keys : (k, m, n, ...) array-like
The `k` keys to be sorted. The *last* key (e.g, the last
row if `keys` is a 2D array) is the primary sort key.
Each element of `keys` along the zeroth axis must be
an array-like object of the same shape.
axis : int, optional
Axis to be indirectly sorted. By default, sort over the last axis
of each sequence. Separate slices along `axis` sorted over
independently; see last example.
Returns
-------
indices : (m, n, ...) ndarray of ints
Array of indices that sort the keys along the specified axis.
See Also
--------
argsort : Indirect sort.
ndarray.sort : In-place sort.
sort : Return a sorted copy of an array.
Examples
--------
Sort names: first by surname, then by name.
>>> import numpy as np
>>> surnames = ('Hertz', 'Galilei', 'Hertz')
>>> first_names = ('Heinrich', 'Galileo', 'Gustav')
>>> ind = np.lexsort((first_names, surnames))
>>> ind
array([1, 2, 0])
>>> [surnames[i] + ", " + first_names[i] for i in ind]
['Galilei, Galileo', 'Hertz, Gustav', 'Hertz, Heinrich']
Sort according to two numerical keys, first by elements
of ``a``, then breaking ties according to elements of ``b``:
>>> a = [1, 5, 1, 4, 3, 4, 4] # First sequence
>>> b = [9, 4, 0, 4, 0, 2, 1] # Second sequence
>>> ind = np.lexsort((b, a)) # Sort by `a`, then by `b`
>>> ind
array([2, 0, 4, 6, 5, 3, 1])
>>> [(a[i], b[i]) for i in ind]
[(1, 0), (1, 9), (3, 0), (4, 1), (4, 2), (4, 4), (5, 4)]
Compare against `argsort`, which would sort each key independently.
>>> np.argsort((b, a), kind='stable')
array([[2, 4, 6, 5, 1, 3, 0],
[0, 2, 4, 3, 5, 6, 1]])
To sort lexicographically with `argsort`, we would need to provide a
structured array.
>>> x = np.array([(ai, bi) for ai, bi in zip(a, b)],
... dtype = np.dtype([('x', int), ('y', int)]))
>>> np.argsort(x) # or np.argsort(x, order=('x', 'y'))
array([2, 0, 4, 6, 5, 3, 1])
The zeroth axis of `keys` always corresponds with the sequence of keys,
so 2D arrays are treated just like other sequences of keys.
>>> arr = np.asarray([b, a])
>>> ind2 = np.lexsort(arr)
>>> np.testing.assert_equal(ind2, ind)
Accordingly, the `axis` parameter refers to an axis of *each* key, not of
the `keys` argument itself. For instance, the array ``arr`` is treated as
a sequence of two 1-D keys, so specifying ``axis=0`` is equivalent to
using the default axis, ``axis=-1``.
>>> np.testing.assert_equal(np.lexsort(arr, axis=0),
... np.lexsort(arr, axis=-1))
For higher-dimensional arrays, the axis parameter begins to matter. The
resulting array has the same shape as each key, and the values are what
we would expect if `lexsort` were performed on corresponding slices
of the keys independently. For instance,
>>> x = [[1, 2, 3, 4],
... [4, 3, 2, 1],
... [2, 1, 4, 3]]
>>> y = [[2, 2, 1, 1],
... [1, 2, 1, 2],
... [1, 1, 2, 1]]
>>> np.lexsort((x, y), axis=1)
array([[2, 3, 0, 1],
[2, 0, 3, 1],
[1, 0, 3, 2]])
Each row of the result is what we would expect if we were to perform
`lexsort` on the corresponding row of the keys:
>>> for i in range(3):
... print(np.lexsort((x[i], y[i])))
[2 3 0 1]
[2 0 3 1]
[1 0 3 2]
linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None, axis=0, *, device=None)
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
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.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.
:ref:`how-to-partition`
Examples
--------
>>> import numpy as np
>>> 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')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(x2, y + 0.5, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.ylim([-0.5, 1])
(-0.5, 1)
>>> plt.show()
load(file, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding='ASCII', *, max_header_size=10000)
Load arrays or pickled objects from ``.npy``, ``.npz`` or pickled files.
.. warning:: Loading files that contain object arrays uses the ``pickle``
module, which is not secure against erroneous or maliciously
constructed data. Consider passing ``allow_pickle=False`` to
load data that is known not to contain object arrays for the
safer handling of untrusted sources.
Parameters
----------
file : file-like object, string, or pathlib.Path
The file to read. File-like objects must support the
``seek()`` and ``read()`` methods and must always
be opened in binary mode. Pickled files require that the
file-like object support the ``readline()`` method as well.
mmap_mode : {None, 'r+', 'r', 'w+', 'c'}, optional
If not None, then memory-map the file, using the given mode (see
`numpy.memmap` for a detailed description of the modes). A
memory-mapped array is kept on disk. However, it can be accessed
and sliced like any ndarray. Memory mapping is especially useful
for accessing small fragments of large files without reading the
entire file into memory.
allow_pickle : bool, optional
Allow loading pickled object arrays stored in npy files. Reasons for
disallowing pickles include security, as loading pickled data can
execute arbitrary code. If pickles are disallowed, loading object
arrays will fail. Default: False
.. versionchanged:: 1.16.3
Made default False in response to CVE-2019-6446.
fix_imports : bool, optional
Only useful when loading Python 2 generated pickled files on Python 3,
which includes npy/npz files containing object arrays. If `fix_imports`
is True, pickle will try to map the old Python 2 names to the new names
used in Python 3.
encoding : str, optional
What encoding to use when reading Python 2 strings. Only useful when
loading Python 2 generated pickled files in Python 3, which includes
npy/npz files containing object arrays. Values other than 'latin1',
'ASCII', and 'bytes' are not allowed, as they can corrupt numerical
data. Default: 'ASCII'
max_header_size : int, optional
Maximum allowed size of the header. Large headers may not be safe
to load securely and thus require explicitly passing a larger value.
See :py:func:`ast.literal_eval()` for details.
This option is ignored when `allow_pickle` is passed. In that case
the file is by definition trusted and the limit is unnecessary.
Returns
-------
result : array, tuple, dict, etc.
Data stored in the file. For ``.npz`` files, the returned instance
of NpzFile class must be closed to avoid leaking file descriptors.
Raises
------
OSError
If the input file does not exist or cannot be read.
UnpicklingError
If ``allow_pickle=True``, but the file cannot be loaded as a pickle.
ValueError
The file contains an object array, but ``allow_pickle=False`` given.
EOFError
When calling ``np.load`` multiple times on the same file handle,
if all data has already been read
See Also
--------
save, savez, savez_compressed, loadtxt
memmap : Create a memory-map to an array stored in a file on disk.
lib.format.open_memmap : Create or load a memory-mapped ``.npy`` file.
Notes
-----
- If the file contains pickle data, then whatever object is stored
in the pickle is returned.
- If the file is a ``.npy`` file, then a single array is returned.
- If the file is a ``.npz`` file, then a dictionary-like object is
returned, containing ``{filename: array}`` key-value pairs, one for
each file in the archive.
- If the file is a ``.npz`` file, the returned value supports the
context manager protocol in a similar fashion to the open function::
with load('foo.npz') as data:
a = data['a']
The underlying file descriptor is closed when exiting the 'with'
block.
Examples
--------
>>> import numpy as np
Store data to disk, and load it again:
>>> np.save('/tmp/123', np.array([[1, 2, 3], [4, 5, 6]]))
>>> np.load('/tmp/123.npy')
array([[1, 2, 3],
[4, 5, 6]])
Store compressed data to disk, and load it again:
>>> a=np.array([[1, 2, 3], [4, 5, 6]])
>>> b=np.array([1, 2])
>>> np.savez('/tmp/123.npz', a=a, b=b)
>>> data = np.load('/tmp/123.npz')
>>> data['a']
array([[1, 2, 3],
[4, 5, 6]])
>>> data['b']
array([1, 2])
>>> data.close()
Mem-map the stored array, and then access the second row
directly from disk:
>>> X = np.load('/tmp/123.npy', mmap_mode='r')
>>> X[1, :]
memmap([4, 5, 6])
loadtxt(fname, dtype=<class 'float'>, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=None, max_rows=None, *, quotechar=None, like=None)
Load data from a text file.
Parameters
----------
fname : file, str, pathlib.Path, list of str, generator
File, filename, list, or generator to read. If the filename
extension is ``.gz`` or ``.bz2``, the file is first decompressed. Note
that generators must return bytes or strings. The strings
in a list or produced by a generator are treated as lines.
dtype : data-type, optional
Data-type of the resulting array; default: float. If this is a
structured data-type, the resulting array will be 1-dimensional, and
each row will be interpreted as an element of the array. In this
case, the number of columns used must match the number of fields in
the data-type.
comments : str or sequence of str or None, optional
The characters or list of characters used to indicate the start of a
comment. None implies no comments. For backwards compatibility, byte
strings will be decoded as 'latin1'. The default is '#'.
delimiter : str, optional
The character used to separate the values. For backwards compatibility,
byte strings will be decoded as 'latin1'. The default is whitespace.
.. versionchanged:: 1.23.0
Only single character delimiters are supported. Newline characters
cannot be used as the delimiter.
converters : dict or callable, optional
Converter functions to customize value parsing. If `converters` is
callable, the function is applied to all columns, else it must be a
dict that maps column number to a parser function.
See examples for further details.
Default: None.
.. versionchanged:: 1.23.0
The ability to pass a single callable to be applied to all columns
was added.
skiprows : int, optional
Skip the first `skiprows` lines, including comments; default: 0.
usecols : int or sequence, optional
Which columns to read, with 0 being the first. For example,
``usecols = (1,4,5)`` will extract the 2nd, 5th and 6th columns.
The default, None, results in all columns being read.
.. versionchanged:: 1.11.0
When a single column has to be read it is possible to use
an integer instead of a tuple. E.g ``usecols = 3`` reads the
fourth column the same way as ``usecols = (3,)`` would.
unpack : bool, optional
If True, the returned array is transposed, so that arguments may be
unpacked using ``x, y, z = loadtxt(...)``. When used with a
structured data-type, arrays are returned for each field.
Default is False.
ndmin : int, optional
The returned array will have at least `ndmin` dimensions.
Otherwise mono-dimensional axes will be squeezed.
Legal values: 0 (default), 1 or 2.
.. versionadded:: 1.6.0
encoding : str, optional
Encoding used to decode the inputfile. Does not apply to input streams.
The special value 'bytes' enables backward compatibility workarounds
that ensures you receive byte arrays as results if possible and passes
'latin1' encoded strings to converters. Override this value to receive
unicode arrays and pass strings as input to converters. If set to None
the system default is used. The default value is 'bytes'.
.. versionadded:: 1.14.0
.. versionchanged:: 2.0
Before NumPy 2, the default was ``'bytes'`` for Python 2
compatibility. The default is now ``None``.
max_rows : int, optional
Read `max_rows` rows of content after `skiprows` lines. The default is
to read all the rows. Note that empty rows containing no data such as
empty lines and comment lines are not counted towards `max_rows`,
while such lines are counted in `skiprows`.
.. versionadded:: 1.16.0
.. versionchanged:: 1.23.0
Lines containing no data, including comment lines (e.g., lines
starting with '#' or as specified via `comments`) are not counted
towards `max_rows`.
quotechar : unicode character or None, optional
The character used to denote the start and end of a quoted item.
Occurrences of the delimiter or comment characters are ignored within
a quoted item. The default value is ``quotechar=None``, which means
quoting support is disabled.
If two consecutive instances of `quotechar` are found within a quoted
field, the first is treated as an escape character. See examples.
.. versionadded:: 1.23.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Data read from the text file.
See Also
--------
load, fromstring, fromregex
genfromtxt : Load data with missing values handled as specified.
scipy.io.loadmat : reads MATLAB data files
Notes
-----
This function aims to be a fast reader for simply formatted files. The
`genfromtxt` function provides more sophisticated handling of, e.g.,
lines with missing values.
Each row in the input text file must have the same number of values to be
able to read all values. If all rows do not have same number of values, a
subset of up to n columns (where n is the least number of values present
in all rows) can be read by specifying the columns via `usecols`.
.. versionadded:: 1.10.0
The strings produced by the Python float.hex method can be used as
input for floats.
Examples
--------
>>> import numpy as np
>>> from io import StringIO # StringIO behaves like a file object
>>> c = StringIO("0 1\n2 3")
>>> np.loadtxt(c)
array([[0., 1.],
[2., 3.]])
>>> d = StringIO("M 21 72\nF 35 58")
>>> np.loadtxt(d, dtype={'names': ('gender', 'age', 'weight'),
... 'formats': ('S1', 'i4', 'f4')})
array([(b'M', 21, 72.), (b'F', 35, 58.)],
dtype=[('gender', 'S1'), ('age', '<i4'), ('weight', '<f4')])
>>> c = StringIO("1,0,2\n3,0,4")
>>> x, y = np.loadtxt(c, delimiter=',', usecols=(0, 2), unpack=True)
>>> x
array([1., 3.])
>>> y
array([2., 4.])
The `converters` argument is used to specify functions to preprocess the
text prior to parsing. `converters` can be a dictionary that maps
preprocessing functions to each column:
>>> s = StringIO("1.618, 2.296\n3.141, 4.669\n")
>>> conv = {
... 0: lambda x: np.floor(float(x)), # conversion fn for column 0
... 1: lambda x: np.ceil(float(x)), # conversion fn for column 1
... }
>>> np.loadtxt(s, delimiter=",", converters=conv)
array([[1., 3.],
[3., 5.]])
`converters` can be a callable instead of a dictionary, in which case it
is applied to all columns:
>>> s = StringIO("0xDE 0xAD\n0xC0 0xDE")
>>> import functools
>>> conv = functools.partial(int, base=16)
>>> np.loadtxt(s, converters=conv)
array([[222., 173.],
[192., 222.]])
This example shows how `converters` can be used to convert a field
with a trailing minus sign into a negative number.
>>> s = StringIO("10.01 31.25-\n19.22 64.31\n17.57- 63.94")
>>> def conv(fld):
... return -float(fld[:-1]) if fld.endswith("-") else float(fld)
...
>>> np.loadtxt(s, converters=conv)
array([[ 10.01, -31.25],
[ 19.22, 64.31],
[-17.57, 63.94]])
Using a callable as the converter can be particularly useful for handling
values with different formatting, e.g. floats with underscores:
>>> s = StringIO("1 2.7 100_000")
>>> np.loadtxt(s, converters=float)
array([1.e+00, 2.7e+00, 1.e+05])
This idea can be extended to automatically handle values specified in
many different formats, such as hex values:
>>> def conv(val):
... try:
... return float(val)
... except ValueError:
... return float.fromhex(val)
>>> s = StringIO("1, 2.5, 3_000, 0b4, 0x1.4000000000000p+2")
>>> np.loadtxt(s, delimiter=",", converters=conv)
array([1.0e+00, 2.5e+00, 3.0e+03, 1.8e+02, 5.0e+00])
Or a format where the ``-`` sign comes after the number:
>>> s = StringIO("10.01 31.25-\n19.22 64.31\n17.57- 63.94")
>>> conv = lambda x: -float(x[:-1]) if x.endswith("-") else float(x)
>>> np.loadtxt(s, converters=conv)
array([[ 10.01, -31.25],
[ 19.22, 64.31],
[-17.57, 63.94]])
Support for quoted fields is enabled with the `quotechar` parameter.
Comment and delimiter characters are ignored when they appear within a
quoted item delineated by `quotechar`:
>>> s = StringIO('"alpha, #42", 10.0\n"beta, #64", 2.0\n')
>>> dtype = np.dtype([("label", "U12"), ("value", float)])
>>> np.loadtxt(s, dtype=dtype, delimiter=",", quotechar='"')
array([('alpha, #42', 10.), ('beta, #64', 2.)],
dtype=[('label', '<U12'), ('value', '<f8')])
Quoted fields can be separated by multiple whitespace characters:
>>> s = StringIO('"alpha, #42" 10.0\n"beta, #64" 2.0\n')
>>> dtype = np.dtype([("label", "U12"), ("value", float)])
>>> np.loadtxt(s, dtype=dtype, delimiter=None, quotechar='"')
array([('alpha, #42', 10.), ('beta, #64', 2.)],
dtype=[('label', '<U12'), ('value', '<f8')])
Two consecutive quote characters within a quoted field are treated as a
single escaped character:
>>> s = StringIO('"Hello, my name is ""Monty""!"')
>>> np.loadtxt(s, dtype="U", delimiter=",", quotechar='"')
array('Hello, my name is "Monty"!', dtype='<U26')
Read subset of columns when all rows do not contain equal number of values:
>>> d = StringIO("1 2\n2 4\n3 9 12\n4 16 20")
>>> np.loadtxt(d, usecols=(0, 1))
array([[ 1., 2.],
[ 2., 4.],
[ 3., 9.],
[ 4., 16.]])
logspace(start, stop, num=50, endpoint=True, base=10.0, dtype=None, axis=0)
Return numbers spaced evenly on a log scale.
In linear space, the sequence starts at ``base ** start``
(`base` to the power of `start`) and ends with ``base ** stop``
(see `endpoint` below).
.. versionchanged:: 1.16.0
Non-scalar `start` and `stop` are now supported.
.. versionchanged:: 1.25.0
Non-scalar 'base` is now supported
Parameters
----------
start : array_like
``base ** start`` is the starting value of the sequence.
stop : array_like
``base ** stop`` is the final value of the sequence, unless `endpoint`
is False. In that case, ``num + 1`` values are spaced over the
interval in log-space, of which all but the last (a sequence of
length `num`) are returned.
num : integer, optional
Number of samples to generate. Default is 50.
endpoint : boolean, optional
If true, `stop` is the last sample. Otherwise, it is not included.
Default is True.
base : array_like, optional
The base of the log space. The step size between the elements in
``ln(samples) / ln(base)`` (or ``log_base(samples)``) is uniform.
Default is 10.0.
dtype : dtype
The type of the output array. If `dtype` is not given, the data type
is inferred from `start` and `stop`. The inferred type will never be
an integer; `float` is chosen even if the arguments would produce an
array of integers.
axis : int, optional
The axis in the result to store the samples. Relevant only if start,
stop, or base 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
`num` samples, equally spaced on a log scale.
See Also
--------
arange : Similar to linspace, with the step size specified instead of the
number of samples. Note that, when used with a float endpoint, the
endpoint may or may not be included.
linspace : Similar to logspace, but with the samples uniformly distributed
in linear space, instead of log space.
geomspace : Similar to logspace, but with endpoints specified directly.
:ref:`how-to-partition`
Notes
-----
If base is a scalar, logspace is equivalent to the code
>>> y = np.linspace(start, stop, num=num, endpoint=endpoint)
... # doctest: +SKIP
>>> power(base, y).astype(dtype)
... # doctest: +SKIP
Examples
--------
>>> import numpy as np
>>> np.logspace(2.0, 3.0, num=4)
array([ 100. , 215.443469 , 464.15888336, 1000. ])
>>> np.logspace(2.0, 3.0, num=4, endpoint=False)
array([100. , 177.827941 , 316.22776602, 562.34132519])
>>> np.logspace(2.0, 3.0, num=4, base=2.0)
array([4. , 5.0396842 , 6.34960421, 8. ])
>>> np.logspace(2.0, 3.0, num=4, base=[2.0, 3.0], axis=-1)
array([[ 4. , 5.0396842 , 6.34960421, 8. ],
[ 9. , 12.98024613, 18.72075441, 27. ]])
Graphical illustration:
>>> import matplotlib.pyplot as plt
>>> N = 10
>>> x1 = np.logspace(0.1, 1, N, endpoint=True)
>>> x2 = np.logspace(0.1, 1, N, endpoint=False)
>>> y = np.zeros(N)
>>> plt.plot(x1, y, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.plot(x2, y + 0.5, 'o')
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.ylim([-0.5, 1])
(-0.5, 1)
>>> plt.show()
mask_indices(n, mask_func, k=0)
Return the indices to access (n, n) arrays, given a masking function.
Assume `mask_func` is a function that, for a square array a of size
``(n, n)`` with a possible offset argument `k`, when called as
``mask_func(a, k)`` returns a new array with zeros in certain locations
(functions like `triu` or `tril` do precisely this). Then this function
returns the indices where the non-zero values would be located.
Parameters
----------
n : int
The returned indices will be valid to access arrays of shape (n, n).
mask_func : callable
A function whose call signature is similar to that of `triu`, `tril`.
That is, ``mask_func(x, k)`` returns a boolean array, shaped like `x`.
`k` is an optional argument to the function.
k : scalar
An optional argument which is passed through to `mask_func`. Functions
like `triu`, `tril` take a second argument that is interpreted as an
offset.
Returns
-------
indices : tuple of arrays.
The `n` arrays of indices corresponding to the locations where
``mask_func(np.ones((n, n)), k)`` is True.
See Also
--------
triu, tril, triu_indices, tril_indices
Notes
-----
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
These are the indices that would allow you to access the upper triangular
part of any 3x3 array:
>>> iu = np.mask_indices(3, np.triu)
For example, if `a` is a 3x3 array:
>>> a = np.arange(9).reshape(3, 3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> a[iu]
array([0, 1, 2, 4, 5, 8])
An offset can be passed also to the masking function. This gets us the
indices starting on the first diagonal right of the main one:
>>> iu1 = np.mask_indices(3, np.triu, 1)
with which we now extract only three elements:
>>> a[iu1]
array([1, 2, 5])
matrix_transpose(x, /)
Transposes a matrix (or a stack of matrices) ``x``.
This function is Array API compatible.
Parameters
----------
x : array_like
Input array having shape (..., M, N) and whose two innermost
dimensions form ``MxN`` matrices.
Returns
-------
out : ndarray
An array containing the transpose for each matrix and having shape
(..., N, M).
See Also
--------
transpose : Generic transpose method.
Examples
--------
>>> import numpy as np
>>> np.matrix_transpose([[1, 2], [3, 4]])
array([[1, 3],
[2, 4]])
>>> np.matrix_transpose([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
array([[[1, 3],
[2, 4]],
[[5, 7],
[6, 8]]])
max(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the maximum of an array or maximum along an axis.
Parameters
----------
a : array_like
Input data.
axis : None or int or tuple of ints, optional
Axis or axes along which to operate. By default, flattened input is
used.
.. versionadded:: 1.7.0
If this is a tuple of ints, the maximum is selected over multiple axes,
instead of a single axis or all the axes as before.
out : ndarray, optional
Alternative output array in which to place the result. Must
be of the same shape and buffer length as the expected output.
See :ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the ``max`` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
initial : scalar, optional
The minimum value of an output element. Must be present to allow
computation on empty slice. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.15.0
where : array_like of bool, optional
Elements to compare for the maximum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.17.0
Returns
-------
max : ndarray or scalar
Maximum of `a`. If `axis` is None, the result is a scalar value.
If `axis` is an int, the result is an array of dimension
``a.ndim - 1``. If `axis` is a tuple, the result is an array of
dimension ``a.ndim - len(axis)``.
See Also
--------
amin :
The minimum value of an array along a given axis, propagating any NaNs.
nanmax :
The maximum value of an array along a given axis, ignoring any NaNs.
maximum :
Element-wise maximum of two arrays, propagating any NaNs.
fmax :
Element-wise maximum of two arrays, ignoring any NaNs.
argmax :
Return the indices of the maximum values.
nanmin, minimum, fmin
Notes
-----
NaN values are propagated, that is if at least one item is NaN, the
corresponding max value will be NaN as well. To ignore NaN values
(MATLAB behavior), please use nanmax.
Don't use `~numpy.max` for element-wise comparison of 2 arrays; when
``a.shape[0]`` is 2, ``maximum(a[0], a[1])`` is faster than
``max(a, axis=0)``.
Examples
--------
>>> import numpy as np
>>> a = np.arange(4).reshape((2,2))
>>> a
array([[0, 1],
[2, 3]])
>>> np.max(a) # Maximum of the flattened array
3
>>> np.max(a, axis=0) # Maxima along the first axis
array([2, 3])
>>> np.max(a, axis=1) # Maxima along the second axis
array([1, 3])
>>> np.max(a, where=[False, True], initial=-1, axis=0)
array([-1, 3])
>>> b = np.arange(5, dtype=float)
>>> b[2] = np.nan
>>> np.max(b)
np.float64(nan)
>>> np.max(b, where=~np.isnan(b), initial=-1)
4.0
>>> np.nanmax(b)
4.0
You can use an initial value to compute the maximum of an empty slice, or
to initialize it to a different value:
>>> np.max([[-50], [10]], axis=-1, initial=0)
array([ 0, 10])
Notice that the initial value is used as one of the elements for which the
maximum is determined, unlike for the default argument Python's max
function, which is only used for empty iterables.
>>> np.max([5], initial=6)
6
>>> max([5], default=6)
5
may_share_memory(...)
may_share_memory(a, b, /, max_work=None)
Determine if two arrays might share memory
A return of True does not necessarily mean that the two arrays
share any element. It just means that they *might*.
Only the memory bounds of a and b are checked by default.
Parameters
----------
a, b : ndarray
Input arrays
max_work : int, optional
Effort to spend on solving the overlap problem. See
`shares_memory` for details. Default for ``may_share_memory``
is to do a bounds check.
Returns
-------
out : bool
See Also
--------
shares_memory
Examples
--------
>>> import numpy as np
>>> np.may_share_memory(np.array([1,2]), np.array([5,8,9]))
False
>>> x = np.zeros([3, 4])
>>> np.may_share_memory(x[:,0], x[:,1])
True
mean(a, axis=None, dtype=None, out=None, keepdims=<no value>, *, where=<no value>)
Compute the arithmetic mean along the specified axis.
Returns the average of the array elements. The average is taken over
the flattened array by default, otherwise over the specified axis.
`float64` intermediate and return values are used for integer inputs.
Parameters
----------
a : array_like
Array containing numbers whose mean is desired. If `a` is not an
array, a conversion is attempted.
axis : None or int or tuple of ints, optional
Axis or axes along which the means are computed. The default is to
compute the mean of the flattened array.
.. versionadded:: 1.7.0
If this is a tuple of ints, a mean is performed over multiple axes,
instead of a single axis or all the axes as before.
dtype : data-type, optional
Type to use in computing the mean. For integer inputs, the default
is `float64`; for floating point inputs, it is the same as the
input dtype.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``; if provided, it must have the same shape as the
expected output, but the type will be cast if necessary.
See :ref:`ufuncs-output-type` for more details.
See :ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `mean` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
where : array_like of bool, optional
Elements to include in the mean. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.20.0
Returns
-------
m : ndarray, see dtype parameter above
If `out=None`, returns a new array containing the mean values,
otherwise a reference to the output array is returned.
See Also
--------
average : Weighted average
std, var, nanmean, nanstd, nanvar
Notes
-----
The arithmetic mean is the sum of the elements along the axis divided
by the number of elements.
Note that for floating-point input, the mean is computed using the
same precision the input has. Depending on the input data, this can
cause the results to be inaccurate, especially for `float32` (see
example below). Specifying a higher-precision accumulator using the
`dtype` keyword can alleviate this issue.
By default, `float16` results are computed using `float32` intermediates
for extra precision.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> np.mean(a)
2.5
>>> np.mean(a, axis=0)
array([2., 3.])
>>> np.mean(a, axis=1)
array([1.5, 3.5])
In single precision, `mean` can be inaccurate:
>>> a = np.zeros((2, 512*512), dtype=np.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> np.mean(a)
0.54999924
Computing the mean in float64 is more accurate:
>>> np.mean(a, dtype=np.float64)
0.55000000074505806 # may vary
Specifying a where argument:
>>> a = np.array([[5, 9, 13], [14, 10, 12], [11, 15, 19]])
>>> np.mean(a)
12.0
>>> np.mean(a, where=[[True], [False], [False]])
9.0
median(a, axis=None, out=None, overwrite_input=False, keepdims=False)
Compute the median along the specified axis.
Returns the median of the array elements.
Parameters
----------
a : array_like
Input array or object that can be converted to an array.
axis : {int, sequence of int, None}, optional
Axis or axes along which the medians are computed. The default,
axis=None, will compute the median along a flattened version of
the array.
.. versionadded:: 1.9.0
If a sequence of axes, the array is first flattened along the
given axes, then the median is computed along the resulting
flattened axis.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output,
but the type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow use of memory of input array `a` for
calculations. The input array will be modified by the call to
`median`. This will save memory when you do not need to preserve
the contents of the input array. Treat the input as undefined,
but it will probably be fully or partially sorted. Default is
False. If `overwrite_input` is ``True`` and `a` is not already an
`ndarray`, an error will be raised.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `arr`.
.. versionadded:: 1.9.0
Returns
-------
median : ndarray
A new array holding the result. If the input contains integers
or floats smaller than ``float64``, then the output data-type is
``np.float64``. Otherwise, the data-type of the output is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
mean, percentile
Notes
-----
Given a vector ``V`` of length ``N``, the median of ``V`` is the
middle value of a sorted copy of ``V``, ``V_sorted`` - i
e., ``V_sorted[(N-1)/2]``, when ``N`` is odd, and the average of the
two middle values of ``V_sorted`` when ``N`` is even.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10, 7, 4],
[ 3, 2, 1]])
>>> np.median(a)
np.float64(3.5)
>>> np.median(a, axis=0)
array([6.5, 4.5, 2.5])
>>> np.median(a, axis=1)
array([7., 2.])
>>> np.median(a, axis=(0, 1))
np.float64(3.5)
>>> m = np.median(a, axis=0)
>>> out = np.zeros_like(m)
>>> np.median(a, axis=0, out=m)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
>>> b = a.copy()
>>> np.median(b, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a==b)
>>> b = a.copy()
>>> np.median(b, axis=None, overwrite_input=True)
np.float64(3.5)
>>> assert not np.all(a==b)
meshgrid(*xi, copy=True, sparse=False, indexing='xy')
Return a tuple of coordinate matrices from coordinate vectors.
Make N-D coordinate arrays for vectorized evaluations of
N-D scalar/vector fields over N-D grids, given
one-dimensional coordinate arrays x1, x2,..., xn.
.. versionchanged:: 1.9
1-D and 0-D cases are allowed.
Parameters
----------
x1, x2,..., xn : array_like
1-D arrays representing the coordinates of a grid.
indexing : {'xy', 'ij'}, optional
Cartesian ('xy', default) or matrix ('ij') indexing of output.
See Notes for more details.
.. versionadded:: 1.7.0
sparse : bool, optional
If True the shape of the returned coordinate array for dimension *i*
is reduced from ``(N1, ..., Ni, ... Nn)`` to
``(1, ..., 1, Ni, 1, ..., 1)``. These sparse coordinate grids are
intended to be use with :ref:`basics.broadcasting`. When all
coordinates are used in an expression, broadcasting still leads to a
fully-dimensonal result array.
Default is False.
.. versionadded:: 1.7.0
copy : bool, optional
If False, a view into the original arrays are returned in order to
conserve memory. Default is True. Please note that
``sparse=False, copy=False`` will likely return non-contiguous
arrays. Furthermore, more than one element of a broadcast array
may refer to a single memory location. If you need to write to the
arrays, make copies first.
.. versionadded:: 1.7.0
Returns
-------
X1, X2,..., XN : tuple of ndarrays
For vectors `x1`, `x2`,..., `xn` with lengths ``Ni=len(xi)``,
returns ``(N1, N2, N3,..., Nn)`` shaped arrays if indexing='ij'
or ``(N2, N1, N3,..., Nn)`` shaped arrays if indexing='xy'
with the elements of `xi` repeated to fill the matrix along
the first dimension for `x1`, the second for `x2` and so on.
Notes
-----
This function supports both indexing conventions through the indexing
keyword argument. Giving the string 'ij' returns a meshgrid with
matrix indexing, while 'xy' returns a meshgrid with Cartesian indexing.
In the 2-D case with inputs of length M and N, the outputs are of shape
(N, M) for 'xy' indexing and (M, N) for 'ij' indexing. In the 3-D case
with inputs of length M, N and P, outputs are of shape (N, M, P) for
'xy' indexing and (M, N, P) for 'ij' indexing. The difference is
illustrated by the following code snippet::
xv, yv = np.meshgrid(x, y, indexing='ij')
for i in range(nx):
for j in range(ny):
# treat xv[i,j], yv[i,j]
xv, yv = np.meshgrid(x, y, indexing='xy')
for i in range(nx):
for j in range(ny):
# treat xv[j,i], yv[j,i]
In the 1-D and 0-D case, the indexing and sparse keywords have no effect.
See Also
--------
mgrid : Construct a multi-dimensional "meshgrid" using indexing notation.
ogrid : Construct an open multi-dimensional "meshgrid" using indexing
notation.
:ref:`how-to-index`
Examples
--------
>>> import numpy as np
>>> nx, ny = (3, 2)
>>> x = np.linspace(0, 1, nx)
>>> y = np.linspace(0, 1, ny)
>>> xv, yv = np.meshgrid(x, y)
>>> xv
array([[0. , 0.5, 1. ],
[0. , 0.5, 1. ]])
>>> yv
array([[0., 0., 0.],
[1., 1., 1.]])
The result of `meshgrid` is a coordinate grid:
>>> import matplotlib.pyplot as plt
>>> plt.plot(xv, yv, marker='o', color='k', linestyle='none')
>>> plt.show()
You can create sparse output arrays to save memory and computation time.
>>> xv, yv = np.meshgrid(x, y, sparse=True)
>>> xv
array([[0. , 0.5, 1. ]])
>>> yv
array([[0.],
[1.]])
`meshgrid` is very useful to evaluate functions on a grid. If the
function depends on all coordinates, both dense and sparse outputs can be
used.
>>> x = np.linspace(-5, 5, 101)
>>> y = np.linspace(-5, 5, 101)
>>> # full coordinate arrays
>>> xx, yy = np.meshgrid(x, y)
>>> zz = np.sqrt(xx**2 + yy**2)
>>> xx.shape, yy.shape, zz.shape
((101, 101), (101, 101), (101, 101))
>>> # sparse coordinate arrays
>>> xs, ys = np.meshgrid(x, y, sparse=True)
>>> zs = np.sqrt(xs**2 + ys**2)
>>> xs.shape, ys.shape, zs.shape
((1, 101), (101, 1), (101, 101))
>>> np.array_equal(zz, zs)
True
>>> h = plt.contourf(x, y, zs)
>>> plt.axis('scaled')
>>> plt.colorbar()
>>> plt.show()
min(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the minimum of an array or minimum along an axis.
Parameters
----------
a : array_like
Input data.
axis : None or int or tuple of ints, optional
Axis or axes along which to operate. By default, flattened input is
used.
.. versionadded:: 1.7.0
If this is a tuple of ints, the minimum is selected over multiple axes,
instead of a single axis or all the axes as before.
out : ndarray, optional
Alternative output array in which to place the result. Must
be of the same shape and buffer length as the expected output.
See :ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the ``min`` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
initial : scalar, optional
The maximum value of an output element. Must be present to allow
computation on empty slice. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.15.0
where : array_like of bool, optional
Elements to compare for the minimum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.17.0
Returns
-------
min : ndarray or scalar
Minimum of `a`. If `axis` is None, the result is a scalar value.
If `axis` is an int, the result is an array of dimension
``a.ndim - 1``. If `axis` is a tuple, the result is an array of
dimension ``a.ndim - len(axis)``.
See Also
--------
amax :
The maximum value of an array along a given axis, propagating any NaNs.
nanmin :
The minimum value of an array along a given axis, ignoring any NaNs.
minimum :
Element-wise minimum of two arrays, propagating any NaNs.
fmin :
Element-wise minimum of two arrays, ignoring any NaNs.
argmin :
Return the indices of the minimum values.
nanmax, maximum, fmax
Notes
-----
NaN values are propagated, that is if at least one item is NaN, the
corresponding min value will be NaN as well. To ignore NaN values
(MATLAB behavior), please use nanmin.
Don't use `~numpy.min` for element-wise comparison of 2 arrays; when
``a.shape[0]`` is 2, ``minimum(a[0], a[1])`` is faster than
``min(a, axis=0)``.
Examples
--------
>>> import numpy as np
>>> a = np.arange(4).reshape((2,2))
>>> a
array([[0, 1],
[2, 3]])
>>> np.min(a) # Minimum of the flattened array
0
>>> np.min(a, axis=0) # Minima along the first axis
array([0, 1])
>>> np.min(a, axis=1) # Minima along the second axis
array([0, 2])
>>> np.min(a, where=[False, True], initial=10, axis=0)
array([10, 1])
>>> b = np.arange(5, dtype=float)
>>> b[2] = np.nan
>>> np.min(b)
np.float64(nan)
>>> np.min(b, where=~np.isnan(b), initial=10)
0.0
>>> np.nanmin(b)
0.0
>>> np.min([[-50], [10]], axis=-1, initial=0)
array([-50, 0])
Notice that the initial value is used as one of the elements for which the
minimum is determined, unlike for the default argument Python's max
function, which is only used for empty iterables.
Notice that this isn't the same as Python's ``default`` argument.
>>> np.min([6], initial=5)
5
>>> min([6], default=5)
6
min_scalar_type(...)
min_scalar_type(a, /)
For scalar ``a``, returns the data type with the smallest size
and smallest scalar kind which can hold its value. For non-scalar
array ``a``, returns the vector's dtype unmodified.
Floating point values are not demoted to integers,
and complex values are not demoted to floats.
Parameters
----------
a : scalar or array_like
The value whose minimal data type is to be found.
Returns
-------
out : dtype
The minimal data type.
Notes
-----
.. versionadded:: 1.6.0
See Also
--------
result_type, promote_types, dtype, can_cast
Examples
--------
>>> import numpy as np
>>> np.min_scalar_type(10)
dtype('uint8')
>>> np.min_scalar_type(-260)
dtype('int16')
>>> np.min_scalar_type(3.1)
dtype('float16')
>>> np.min_scalar_type(1e50)
dtype('float64')
>>> np.min_scalar_type(np.arange(4,dtype='f8'))
dtype('float64')
mintypecode(typechars, typeset='GDFgdf', default='d')
Return the character for the minimum-size type to which given types can
be safely cast.
The returned type character must represent the smallest size dtype such
that an array of the returned type can handle the data from an array of
all types in `typechars` (or if `typechars` is an array, then its
dtype.char).
Parameters
----------
typechars : list of str or array_like
If a list of strings, each string should represent a dtype.
If array_like, the character representation of the array dtype is used.
typeset : str or list of str, optional
The set of characters that the returned character is chosen from.
The default set is 'GDFgdf'.
default : str, optional
The default character, this is returned if none of the characters in
`typechars` matches a character in `typeset`.
Returns
-------
typechar : str
The character representing the minimum-size type that was found.
See Also
--------
dtype
Examples
--------
>>> import numpy as np
>>> np.mintypecode(['d', 'f', 'S'])
'd'
>>> x = np.array([1.1, 2-3.j])
>>> np.mintypecode(x)
'D'
>>> np.mintypecode('abceh', default='G')
'G'
moveaxis(a, source, destination)
Move axes of an array to new positions.
Other axes remain in their original order.
.. versionadded:: 1.11.0
Parameters
----------
a : np.ndarray
The array whose axes should be reordered.
source : int or sequence of int
Original positions of the axes to move. These must be unique.
destination : int or sequence of int
Destination positions for each of the original axes. These must also be
unique.
Returns
-------
result : np.ndarray
Array with moved axes. This array is a view of the input array.
See Also
--------
transpose : Permute the dimensions of an array.
swapaxes : Interchange two axes of an array.
Examples
--------
>>> import numpy as np
>>> x = np.zeros((3, 4, 5))
>>> np.moveaxis(x, 0, -1).shape
(4, 5, 3)
>>> np.moveaxis(x, -1, 0).shape
(5, 3, 4)
These all achieve the same result:
>>> np.transpose(x).shape
(5, 4, 3)
>>> np.swapaxes(x, 0, -1).shape
(5, 4, 3)
>>> np.moveaxis(x, [0, 1], [-1, -2]).shape
(5, 4, 3)
>>> np.moveaxis(x, [0, 1, 2], [-1, -2, -3]).shape
(5, 4, 3)
nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)
Replace NaN with zero and infinity with large finite numbers (default
behaviour) or with the numbers defined by the user using the `nan`,
`posinf` and/or `neginf` keywords.
If `x` is inexact, NaN is replaced by zero or by the user defined value in
`nan` keyword, infinity is replaced by the largest finite floating point
values representable by ``x.dtype`` or by the user defined value in
`posinf` keyword and -infinity is replaced by the most negative finite
floating point values representable by ``x.dtype`` or by the user defined
value in `neginf` keyword.
For complex dtypes, the above is applied to each of the real and
imaginary components of `x` separately.
If `x` is not inexact, then no replacements are made.
Parameters
----------
x : scalar or array_like
Input data.
copy : bool, optional
Whether to create a copy of `x` (True) or to replace values
in-place (False). The in-place operation only occurs if
casting to an array does not require a copy.
Default is True.
.. versionadded:: 1.13
nan : int, float, optional
Value to be used to fill NaN values. If no value is passed
then NaN values will be replaced with 0.0.
.. versionadded:: 1.17
posinf : int, float, optional
Value to be used to fill positive infinity values. If no value is
passed then positive infinity values will be replaced with a very
large number.
.. versionadded:: 1.17
neginf : int, float, optional
Value to be used to fill negative infinity values. If no value is
passed then negative infinity values will be replaced with a very
small (or negative) number.
.. versionadded:: 1.17
Returns
-------
out : ndarray
`x`, with the non-finite values replaced. If `copy` is False, this may
be `x` itself.
See Also
--------
isinf : Shows which elements are positive or negative infinity.
isneginf : Shows which elements are negative infinity.
isposinf : Shows which elements are positive infinity.
isnan : Shows which elements are Not a Number (NaN).
isfinite : Shows which elements are finite (not NaN, not infinity)
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Examples
--------
>>> import numpy as np
>>> np.nan_to_num(np.inf)
1.7976931348623157e+308
>>> np.nan_to_num(-np.inf)
-1.7976931348623157e+308
>>> np.nan_to_num(np.nan)
0.0
>>> x = np.array([np.inf, -np.inf, np.nan, -128, 128])
>>> np.nan_to_num(x)
array([ 1.79769313e+308, -1.79769313e+308, 0.00000000e+000, # may vary
-1.28000000e+002, 1.28000000e+002])
>>> np.nan_to_num(x, nan=-9999, posinf=33333333, neginf=33333333)
array([ 3.3333333e+07, 3.3333333e+07, -9.9990000e+03,
-1.2800000e+02, 1.2800000e+02])
>>> y = np.array([complex(np.inf, np.nan), np.nan, complex(np.nan, np.inf)])
array([ 1.79769313e+308, -1.79769313e+308, 0.00000000e+000, # may vary
-1.28000000e+002, 1.28000000e+002])
>>> np.nan_to_num(y)
array([ 1.79769313e+308 +0.00000000e+000j, # may vary
0.00000000e+000 +0.00000000e+000j,
0.00000000e+000 +1.79769313e+308j])
>>> np.nan_to_num(y, nan=111111, posinf=222222)
array([222222.+111111.j, 111111. +0.j, 111111.+222222.j])
nanargmax(a, axis=None, out=None, *, keepdims=<no value>)
Return the indices of the maximum values in the specified axis ignoring
NaNs. For all-NaN slices ``ValueError`` is raised. Warning: the
results cannot be trusted if a slice contains only NaNs and -Infs.
Parameters
----------
a : array_like
Input data.
axis : int, optional
Axis along which to operate. By default flattened input is used.
out : array, optional
If provided, the result will be inserted into this array. It should
be of the appropriate shape and dtype.
.. versionadded:: 1.22.0
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the array.
.. versionadded:: 1.22.0
Returns
-------
index_array : ndarray
An array of indices or a single index value.
See Also
--------
argmax, nanargmin
Examples
--------
>>> import numpy as np
>>> a = np.array([[np.nan, 4], [2, 3]])
>>> np.argmax(a)
0
>>> np.nanargmax(a)
1
>>> np.nanargmax(a, axis=0)
array([1, 0])
>>> np.nanargmax(a, axis=1)
array([1, 1])
nanargmin(a, axis=None, out=None, *, keepdims=<no value>)
Return the indices of the minimum values in the specified axis ignoring
NaNs. For all-NaN slices ``ValueError`` is raised. Warning: the results
cannot be trusted if a slice contains only NaNs and Infs.
Parameters
----------
a : array_like
Input data.
axis : int, optional
Axis along which to operate. By default flattened input is used.
out : array, optional
If provided, the result will be inserted into this array. It should
be of the appropriate shape and dtype.
.. versionadded:: 1.22.0
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the array.
.. versionadded:: 1.22.0
Returns
-------
index_array : ndarray
An array of indices or a single index value.
See Also
--------
argmin, nanargmax
Examples
--------
>>> import numpy as np
>>> a = np.array([[np.nan, 4], [2, 3]])
>>> np.argmin(a)
0
>>> np.nanargmin(a)
2
>>> np.nanargmin(a, axis=0)
array([1, 1])
>>> np.nanargmin(a, axis=1)
array([1, 0])
nancumprod(a, axis=None, dtype=None, out=None)
Return the cumulative product of array elements over a given axis treating Not a
Numbers (NaNs) as one. The cumulative product does not change when NaNs are
encountered and leading NaNs are replaced by ones.
Ones are returned for slices that are all-NaN or empty.
.. versionadded:: 1.12.0
Parameters
----------
a : array_like
Input array.
axis : int, optional
Axis along which the cumulative product is computed. By default
the input is flattened.
dtype : dtype, optional
Type of the returned array, as well as of the accumulator in which
the elements are multiplied. If *dtype* is not specified, it
defaults to the dtype of `a`, unless `a` has an integer dtype with
a precision less than that of the default platform integer. In
that case, the default platform integer is used instead.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type of the resulting values will be cast if necessary.
Returns
-------
nancumprod : ndarray
A new array holding the result is returned unless `out` is
specified, in which case it is returned.
See Also
--------
numpy.cumprod : Cumulative product across array propagating NaNs.
isnan : Show which elements are NaN.
Examples
--------
>>> import numpy as np
>>> np.nancumprod(1)
array([1])
>>> np.nancumprod([1])
array([1])
>>> np.nancumprod([1, np.nan])
array([1., 1.])
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nancumprod(a)
array([1., 2., 6., 6.])
>>> np.nancumprod(a, axis=0)
array([[1., 2.],
[3., 2.]])
>>> np.nancumprod(a, axis=1)
array([[1., 2.],
[3., 3.]])
nancumsum(a, axis=None, dtype=None, out=None)
Return the cumulative sum of array elements over a given axis treating Not a
Numbers (NaNs) as zero. The cumulative sum does not change when NaNs are
encountered and leading NaNs are replaced by zeros.
Zeros are returned for slices that are all-NaN or empty.
.. versionadded:: 1.12.0
Parameters
----------
a : array_like
Input array.
axis : int, optional
Axis along which the cumulative sum is computed. The default
(None) is to compute the cumsum over the flattened array.
dtype : dtype, optional
Type of the returned array and of the accumulator in which the
elements are summed. If `dtype` is not specified, it defaults
to the dtype of `a`, unless `a` has an integer dtype with a
precision less than that of the default platform integer. In
that case, the default platform integer is used.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output
but the type will be cast if necessary. See :ref:`ufuncs-output-type` for
more details.
Returns
-------
nancumsum : ndarray.
A new array holding the result is returned unless `out` is
specified, in which it is returned. The result has the same
size as `a`, and the same shape as `a` if `axis` is not None
or `a` is a 1-d array.
See Also
--------
numpy.cumsum : Cumulative sum across array propagating NaNs.
isnan : Show which elements are NaN.
Examples
--------
>>> import numpy as np
>>> np.nancumsum(1)
array([1])
>>> np.nancumsum([1])
array([1])
>>> np.nancumsum([1, np.nan])
array([1., 1.])
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nancumsum(a)
array([1., 3., 6., 6.])
>>> np.nancumsum(a, axis=0)
array([[1., 2.],
[4., 2.]])
>>> np.nancumsum(a, axis=1)
array([[1., 3.],
[3., 3.]])
nanmax(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the maximum of an array or maximum along an axis, ignoring any
NaNs. When all-NaN slices are encountered a ``RuntimeWarning`` is
raised and NaN is returned for that slice.
Parameters
----------
a : array_like
Array containing numbers whose maximum is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the maximum is computed. The default is to compute
the maximum of the flattened array.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``; if provided, it must have the same shape as the
expected output, but the type will be cast if necessary. See
:ref:`ufuncs-output-type` for more details.
.. versionadded:: 1.8.0
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If the value is anything but the default, then
`keepdims` will be passed through to the `max` method
of sub-classes of `ndarray`. If the sub-classes methods
does not implement `keepdims` any exceptions will be raised.
.. versionadded:: 1.8.0
initial : scalar, optional
The minimum value of an output element. Must be present to allow
computation on empty slice. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
where : array_like of bool, optional
Elements to compare for the maximum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
Returns
-------
nanmax : ndarray
An array with the same shape as `a`, with the specified axis removed.
If `a` is a 0-d array, or if axis is None, an ndarray scalar is
returned. The same dtype as `a` is returned.
See Also
--------
nanmin :
The minimum value of an array along a given axis, ignoring any NaNs.
amax :
The maximum value of an array along a given axis, propagating any NaNs.
fmax :
Element-wise maximum of two arrays, ignoring any NaNs.
maximum :
Element-wise maximum of two arrays, propagating any NaNs.
isnan :
Shows which elements are Not a Number (NaN).
isfinite:
Shows which elements are neither NaN nor infinity.
amin, fmin, minimum
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Positive infinity is treated as a very large number and negative
infinity is treated as a very small (i.e. negative) number.
If the input has a integer type the function is equivalent to np.max.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nanmax(a)
3.0
>>> np.nanmax(a, axis=0)
array([3., 2.])
>>> np.nanmax(a, axis=1)
array([2., 3.])
When positive infinity and negative infinity are present:
>>> np.nanmax([1, 2, np.nan, -np.inf])
2.0
>>> np.nanmax([1, 2, np.nan, np.inf])
inf
nanmean(a, axis=None, dtype=None, out=None, keepdims=<no value>, *, where=<no value>)
Compute the arithmetic mean along the specified axis, ignoring NaNs.
Returns the average of the array elements. The average is taken over
the flattened array by default, otherwise over the specified axis.
`float64` intermediate and return values are used for integer inputs.
For all-NaN slices, NaN is returned and a `RuntimeWarning` is raised.
.. versionadded:: 1.8.0
Parameters
----------
a : array_like
Array containing numbers whose mean is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the means are computed. The default is to compute
the mean of the flattened array.
dtype : data-type, optional
Type to use in computing the mean. For integer inputs, the default
is `float64`; for inexact inputs, it is the same as the input
dtype.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``; if provided, it must have the same shape as the
expected output, but the type will be cast if necessary.
See :ref:`ufuncs-output-type` for more details.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If the value is anything but the default, then
`keepdims` will be passed through to the `mean` or `sum` methods
of sub-classes of `ndarray`. If the sub-classes methods
does not implement `keepdims` any exceptions will be raised.
where : array_like of bool, optional
Elements to include in the mean. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
Returns
-------
m : ndarray, see dtype parameter above
If `out=None`, returns a new array containing the mean values,
otherwise a reference to the output array is returned. Nan is
returned for slices that contain only NaNs.
See Also
--------
average : Weighted average
mean : Arithmetic mean taken while not ignoring NaNs
var, nanvar
Notes
-----
The arithmetic mean is the sum of the non-NaN elements along the axis
divided by the number of non-NaN elements.
Note that for floating-point input, the mean is computed using the same
precision the input has. Depending on the input data, this can cause
the results to be inaccurate, especially for `float32`. Specifying a
higher-precision accumulator using the `dtype` keyword can alleviate
this issue.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, np.nan], [3, 4]])
>>> np.nanmean(a)
2.6666666666666665
>>> np.nanmean(a, axis=0)
array([2., 4.])
>>> np.nanmean(a, axis=1)
array([1., 3.5]) # may vary
nanmedian(a, axis=None, out=None, overwrite_input=False, keepdims=<no value>)
Compute the median along the specified axis, while ignoring NaNs.
Returns the median of the array elements.
.. versionadded:: 1.9.0
Parameters
----------
a : array_like
Input array or object that can be converted to an array.
axis : {int, sequence of int, None}, optional
Axis or axes along which the medians are computed. The default
is to compute the median along a flattened version of the array.
A sequence of axes is supported since version 1.9.0.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output,
but the type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow use of memory of input array `a` for
calculations. The input array will be modified by the call to
`median`. This will save memory when you do not need to preserve
the contents of the input array. Treat the input as undefined,
but it will probably be fully or partially sorted. Default is
False. If `overwrite_input` is ``True`` and `a` is not already an
`ndarray`, an error will be raised.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If this is anything but the default value it will be passed
through (in the special case of an empty array) to the
`mean` function of the underlying array. If the array is
a sub-class and `mean` does not have the kwarg `keepdims` this
will raise a RuntimeError.
Returns
-------
median : ndarray
A new array holding the result. If the input contains integers
or floats smaller than ``float64``, then the output data-type is
``np.float64``. Otherwise, the data-type of the output is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
mean, median, percentile
Notes
-----
Given a vector ``V`` of length ``N``, the median of ``V`` is the
middle value of a sorted copy of ``V``, ``V_sorted`` - i.e.,
``V_sorted[(N-1)/2]``, when ``N`` is odd and the average of the two
middle values of ``V_sorted`` when ``N`` is even.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10.0, 7, 4], [3, 2, 1]])
>>> a[0, 1] = np.nan
>>> a
array([[10., nan, 4.],
[ 3., 2., 1.]])
>>> np.median(a)
np.float64(nan)
>>> np.nanmedian(a)
3.0
>>> np.nanmedian(a, axis=0)
array([6.5, 2. , 2.5])
>>> np.median(a, axis=1)
array([nan, 2.])
>>> b = a.copy()
>>> np.nanmedian(b, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a==b)
>>> b = a.copy()
>>> np.nanmedian(b, axis=None, overwrite_input=True)
3.0
>>> assert not np.all(a==b)
nanmin(a, axis=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return minimum of an array or minimum along an axis, ignoring any NaNs.
When all-NaN slices are encountered a ``RuntimeWarning`` is raised and
Nan is returned for that slice.
Parameters
----------
a : array_like
Array containing numbers whose minimum is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the minimum is computed. The default is to compute
the minimum of the flattened array.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``; if provided, it must have the same shape as the
expected output, but the type will be cast if necessary. See
:ref:`ufuncs-output-type` for more details.
.. versionadded:: 1.8.0
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If the value is anything but the default, then
`keepdims` will be passed through to the `min` method
of sub-classes of `ndarray`. If the sub-classes methods
does not implement `keepdims` any exceptions will be raised.
.. versionadded:: 1.8.0
initial : scalar, optional
The maximum value of an output element. Must be present to allow
computation on empty slice. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
where : array_like of bool, optional
Elements to compare for the minimum. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
Returns
-------
nanmin : ndarray
An array with the same shape as `a`, with the specified axis
removed. If `a` is a 0-d array, or if axis is None, an ndarray
scalar is returned. The same dtype as `a` is returned.
See Also
--------
nanmax :
The maximum value of an array along a given axis, ignoring any NaNs.
amin :
The minimum value of an array along a given axis, propagating any NaNs.
fmin :
Element-wise minimum of two arrays, ignoring any NaNs.
minimum :
Element-wise minimum of two arrays, propagating any NaNs.
isnan :
Shows which elements are Not a Number (NaN).
isfinite:
Shows which elements are neither NaN nor infinity.
amax, fmax, maximum
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Positive infinity is treated as a very large number and negative
infinity is treated as a very small (i.e. negative) number.
If the input has a integer type the function is equivalent to np.min.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nanmin(a)
1.0
>>> np.nanmin(a, axis=0)
array([1., 2.])
>>> np.nanmin(a, axis=1)
array([1., 3.])
When positive infinity and negative infinity are present:
>>> np.nanmin([1, 2, np.nan, np.inf])
1.0
>>> np.nanmin([1, 2, np.nan, -np.inf])
-inf
nanpercentile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=<no value>, *, weights=None, interpolation=None)
Compute the qth percentile of the data along the specified axis,
while ignoring nan values.
Returns the qth percentile(s) of the array elements.
.. versionadded:: 1.9.0
Parameters
----------
a : array_like
Input array or object that can be converted to an array, containing
nan values to be ignored.
q : array_like of float
Percentile or sequence of percentiles to compute, which must be
between 0 and 100 inclusive.
axis : {int, tuple of int, None}, optional
Axis or axes along which the percentiles are computed. The default
is to compute the percentile(s) along a flattened version of the
array.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape and buffer length as the expected output, but the
type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow the input array `a` to be modified by
intermediate calculations, to save memory. In this case, the
contents of the input `a` after this function completes is
undefined.
method : str, optional
This parameter specifies the method to use for estimating the
percentile. There are many different methods, some unique to NumPy.
See the notes for explanation. The options sorted by their R type
as summarized in the H&F paper [1]_ are:
1. 'inverted_cdf'
2. 'averaged_inverted_cdf'
3. 'closest_observation'
4. 'interpolated_inverted_cdf'
5. 'hazen'
6. 'weibull'
7. 'linear' (default)
8. 'median_unbiased'
9. 'normal_unbiased'
The first three methods are discontinuous. NumPy further defines the
following discontinuous variations of the default 'linear' (7.) option:
* 'lower'
* 'higher',
* 'midpoint'
* 'nearest'
.. versionchanged:: 1.22.0
This argument was previously called "interpolation" and only
offered the "linear" default and last four options.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left in
the result as dimensions with size one. With this option, the
result will broadcast correctly against the original array `a`.
If this is anything but the default value it will be passed
through (in the special case of an empty array) to the
`mean` function of the underlying array. If the array is
a sub-class and `mean` does not have the kwarg `keepdims` this
will raise a RuntimeError.
weights : array_like, optional
An array of weights associated with the values in `a`. Each value in
`a` contributes to the percentile according to its associated weight.
The weights array can either be 1-D (in which case its length must be
the size of `a` along the given axis) or of the same shape as `a`.
If `weights=None`, then all data in `a` are assumed to have a
weight equal to one.
Only `method="inverted_cdf"` supports weights.
.. versionadded:: 2.0.0
interpolation : str, optional
Deprecated name for the method keyword argument.
.. deprecated:: 1.22.0
Returns
-------
percentile : scalar or ndarray
If `q` is a single percentile and `axis=None`, then the result
is a scalar. If multiple percentiles are given, first axis of
the result corresponds to the percentiles. The other axes are
the axes that remain after the reduction of `a`. If the input
contains integers or floats smaller than ``float64``, the output
data-type is ``float64``. Otherwise, the output data-type is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
nanmean
nanmedian : equivalent to ``nanpercentile(..., 50)``
percentile, median, mean
nanquantile : equivalent to nanpercentile, except q in range [0, 1].
Notes
-----
The behavior of `numpy.nanpercentile` with percentage `q` is that of
`numpy.quantile` with argument ``q/100`` (ignoring nan values).
For more information, please see `numpy.quantile`.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10., 7., 4.], [3., 2., 1.]])
>>> a[0][1] = np.nan
>>> a
array([[10., nan, 4.],
[ 3., 2., 1.]])
>>> np.percentile(a, 50)
np.float64(nan)
>>> np.nanpercentile(a, 50)
3.0
>>> np.nanpercentile(a, 50, axis=0)
array([6.5, 2. , 2.5])
>>> np.nanpercentile(a, 50, axis=1, keepdims=True)
array([[7.],
[2.]])
>>> m = np.nanpercentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.nanpercentile(a, 50, axis=0, out=out)
array([6.5, 2. , 2.5])
>>> m
array([6.5, 2. , 2.5])
>>> b = a.copy()
>>> np.nanpercentile(b, 50, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a==b)
References
----------
.. [1] R. J. Hyndman and Y. Fan,
"Sample quantiles in statistical packages,"
The American Statistician, 50(4), pp. 361-365, 1996
nanprod(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the product of array elements over a given axis treating Not a
Numbers (NaNs) as ones.
One is returned for slices that are all-NaN or empty.
.. versionadded:: 1.10.0
Parameters
----------
a : array_like
Array containing numbers whose product is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the product is computed. The default is to compute
the product of the flattened array.
dtype : data-type, optional
The type of the returned array and of the accumulator in which the
elements are summed. By default, the dtype of `a` is used. An
exception is when `a` has an integer type with less precision than
the platform (u)intp. In that case, the default will be either
(u)int32 or (u)int64 depending on whether the platform is 32 or 64
bits. For inexact inputs, dtype must be inexact.
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``. If provided, it must have the same shape as the
expected output, but the type will be cast if necessary. See
:ref:`ufuncs-output-type` for more details. The casting of NaN to integer
can yield unexpected results.
keepdims : bool, optional
If True, the axes which are reduced are left in the result as
dimensions with size one. With this option, the result will
broadcast correctly against the original `arr`.
initial : scalar, optional
The starting value for this product. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
where : array_like of bool, optional
Elements to include in the product. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.22.0
Returns
-------
nanprod : ndarray
A new array holding the result is returned unless `out` is
specified, in which case it is returned.
See Also
--------
numpy.prod : Product across array propagating NaNs.
isnan : Show which elements are NaN.
Examples
--------
>>> import numpy as np
>>> np.nanprod(1)
1
>>> np.nanprod([1])
1
>>> np.nanprod([1, np.nan])
1.0
>>> a = np.array([[1, 2], [3, np.nan]])
>>> np.nanprod(a)
6.0
>>> np.nanprod(a, axis=0)
array([3., 2.])
nanquantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=<no value>, *, weights=None, interpolation=None)
Compute the qth quantile of the data along the specified axis,
while ignoring nan values.
Returns the qth quantile(s) of the array elements.
.. versionadded:: 1.15.0
Parameters
----------
a : array_like
Input array or object that can be converted to an array, containing
nan values to be ignored
q : array_like of float
Probability or sequence of probabilities for the quantiles to compute.
Values must be between 0 and 1 inclusive.
axis : {int, tuple of int, None}, optional
Axis or axes along which the quantiles are computed. The
default is to compute the quantile(s) along a flattened
version of the array.
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output,
but the type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow the input array `a` to be modified by intermediate
calculations, to save memory. In this case, the contents of the input
`a` after this function completes is undefined.
method : str, optional
This parameter specifies the method to use for estimating the
quantile. There are many different methods, some unique to NumPy.
See the notes for explanation. The options sorted by their R type
as summarized in the H&F paper [1]_ are:
1. 'inverted_cdf'
2. 'averaged_inverted_cdf'
3. 'closest_observation'
4. 'interpolated_inverted_cdf'
5. 'hazen'
6. 'weibull'
7. 'linear' (default)
8. 'median_unbiased'
9. 'normal_unbiased'
The first three methods are discontinuous. NumPy further defines the
following discontinuous variations of the default 'linear' (7.) option:
* 'lower'
* 'higher',
* 'midpoint'
* 'nearest'
.. versionchanged:: 1.22.0
This argument was previously called "interpolation" and only
offered the "linear" default and last four options.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left in
the result as dimensions with size one. With this option, the
result will broadcast correctly against the original array `a`.
If this is anything but the default value it will be passed
through (in the special case of an empty array) to the
`mean` function of the underlying array. If the array is
a sub-class and `mean` does not have the kwarg `keepdims` this
will raise a RuntimeError.
weights : array_like, optional
An array of weights associated with the values in `a`. Each value in
`a` contributes to the quantile according to its associated weight.
The weights array can either be 1-D (in which case its length must be
the size of `a` along the given axis) or of the same shape as `a`.
If `weights=None`, then all data in `a` are assumed to have a
weight equal to one.
Only `method="inverted_cdf"` supports weights.
.. versionadded:: 2.0.0
interpolation : str, optional
Deprecated name for the method keyword argument.
.. deprecated:: 1.22.0
Returns
-------
quantile : scalar or ndarray
If `q` is a single probability and `axis=None`, then the result
is a scalar. If multiple probability levels are given, first axis of
the result corresponds to the quantiles. The other axes are
the axes that remain after the reduction of `a`. If the input
contains integers or floats smaller than ``float64``, the output
data-type is ``float64``. Otherwise, the output data-type is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
quantile
nanmean, nanmedian
nanmedian : equivalent to ``nanquantile(..., 0.5)``
nanpercentile : same as nanquantile, but with q in the range [0, 100].
Notes
-----
The behavior of `numpy.nanquantile` is the same as that of
`numpy.quantile` (ignoring nan values).
For more information, please see `numpy.quantile`.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10., 7., 4.], [3., 2., 1.]])
>>> a[0][1] = np.nan
>>> a
array([[10., nan, 4.],
[ 3., 2., 1.]])
>>> np.quantile(a, 0.5)
np.float64(nan)
>>> np.nanquantile(a, 0.5)
3.0
>>> np.nanquantile(a, 0.5, axis=0)
array([6.5, 2. , 2.5])
>>> np.nanquantile(a, 0.5, axis=1, keepdims=True)
array([[7.],
[2.]])
>>> m = np.nanquantile(a, 0.5, axis=0)
>>> out = np.zeros_like(m)
>>> np.nanquantile(a, 0.5, axis=0, out=out)
array([6.5, 2. , 2.5])
>>> m
array([6.5, 2. , 2.5])
>>> b = a.copy()
>>> np.nanquantile(b, 0.5, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a==b)
References
----------
.. [1] R. J. Hyndman and Y. Fan,
"Sample quantiles in statistical packages,"
The American Statistician, 50(4), pp. 361-365, 1996
nanstd(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>, mean=<no value>, correction=<no value>)
Compute the standard deviation along the specified axis, while
ignoring NaNs.
Returns the standard deviation, a measure of the spread of a
distribution, of the non-NaN array elements. The standard deviation is
computed for the flattened array by default, otherwise over the
specified axis.
For all-NaN slices or slices with zero degrees of freedom, NaN is
returned and a `RuntimeWarning` is raised.
.. versionadded:: 1.8.0
Parameters
----------
a : array_like
Calculate the standard deviation of the non-NaN values.
axis : {int, tuple of int, None}, optional
Axis or axes along which the standard deviation is computed. The default is
to compute the standard deviation of the flattened array.
dtype : dtype, optional
Type to use in computing the standard deviation. For arrays of
integer type the default is float64, for arrays of float types it
is the same as the array type.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape as the expected output but the type (of the
calculated values) will be cast if necessary.
ddof : {int, float}, optional
Means Delta Degrees of Freedom. The divisor used in calculations
is ``N - ddof``, where ``N`` represents the number of non-NaN
elements. By default `ddof` is zero.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If this value is anything but the default it is passed through
as-is to the relevant functions of the sub-classes. If these
functions do not have a `keepdims` kwarg, a RuntimeError will
be raised.
where : array_like of bool, optional
Elements to include in the standard deviation.
See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
mean : array_like, optional
Provide the mean to prevent its recalculation. The mean should have
a shape as if it was calculated with ``keepdims=True``.
The axis for the calculation of the mean should be the same as used in
the call to this std function.
.. versionadded:: 1.26.0
correction : {int, float}, optional
Array API compatible name for the ``ddof`` parameter. Only one of them
can be provided at the same time.
.. versionadded:: 2.0.0
Returns
-------
standard_deviation : ndarray, see dtype parameter above.
If `out` is None, return a new array containing the standard
deviation, otherwise return a reference to the output array. If
ddof is >= the number of non-NaN elements in a slice or the slice
contains only NaNs, then the result for that slice is NaN.
See Also
--------
var, mean, std
nanvar, nanmean
:ref:`ufuncs-output-type`
Notes
-----
The standard deviation is the square root of the average of the squared
deviations from the mean: ``std = sqrt(mean(abs(x - x.mean())**2))``.
The average squared deviation is normally calculated as
``x.sum() / N``, where ``N = len(x)``. If, however, `ddof` is
specified, the divisor ``N - ddof`` is used instead. In standard
statistical practice, ``ddof=1`` provides an unbiased estimator of the
variance of the infinite population. ``ddof=0`` provides a maximum
likelihood estimate of the variance for normally distributed variables.
The standard deviation computed in this function is the square root of
the estimated variance, so even with ``ddof=1``, it will not be an
unbiased estimate of the standard deviation per se.
Note that, for complex numbers, `std` takes the absolute value before
squaring, so that the result is always real and nonnegative.
For floating-point input, the *std* is computed using the same
precision the input has. Depending on the input data, this can cause
the results to be inaccurate, especially for float32 (see example
below). Specifying a higher-accuracy accumulator using the `dtype`
keyword can alleviate this issue.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, np.nan], [3, 4]])
>>> np.nanstd(a)
1.247219128924647
>>> np.nanstd(a, axis=0)
array([1., 0.])
>>> np.nanstd(a, axis=1)
array([0., 0.5]) # may vary
nansum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the sum of array elements over a given axis treating Not a
Numbers (NaNs) as zero.
In NumPy versions <= 1.9.0 Nan is returned for slices that are all-NaN or
empty. In later versions zero is returned.
Parameters
----------
a : array_like
Array containing numbers whose sum is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the sum is computed. The default is to compute the
sum of the flattened array.
dtype : data-type, optional
The type of the returned array and of the accumulator in which the
elements are summed. By default, the dtype of `a` is used. An
exception is when `a` has an integer type with less precision than
the platform (u)intp. In that case, the default will be either
(u)int32 or (u)int64 depending on whether the platform is 32 or 64
bits. For inexact inputs, dtype must be inexact.
.. versionadded:: 1.8.0
out : ndarray, optional
Alternate output array in which to place the result. The default
is ``None``. If provided, it must have the same shape as the
expected output, but the type will be cast if necessary. See
:ref:`ufuncs-output-type` for more details. The casting of NaN to integer
can yield unexpected results.
.. versionadded:: 1.8.0
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
If the value is anything but the default, then
`keepdims` will be passed through to the `mean` or `sum` methods
of sub-classes of `ndarray`. If the sub-classes methods
does not implement `keepdims` any exceptions will be raised.
.. versionadded:: 1.8.0
initial : scalar, optional
Starting value for the sum. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
where : array_like of bool, optional
Elements to include in the sum. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.22.0
Returns
-------
nansum : ndarray.
A new array holding the result is returned unless `out` is
specified, in which it is returned. The result has the same
size as `a`, and the same shape as `a` if `axis` is not None
or `a` is a 1-d array.
See Also
--------
numpy.sum : Sum across array propagating NaNs.
isnan : Show which elements are NaN.
isfinite : Show which elements are not NaN or +/-inf.
Notes
-----
If both positive and negative infinity are present, the sum will be Not
A Number (NaN).
Examples
--------
>>> import numpy as np
>>> np.nansum(1)
1
>>> np.nansum([1])
1
>>> np.nansum([1, np.nan])
1.0
>>> a = np.array([[1, 1], [1, np.nan]])
>>> np.nansum(a)
3.0
>>> np.nansum(a, axis=0)
array([2., 1.])
>>> np.nansum([1, np.nan, np.inf])
inf
>>> np.nansum([1, np.nan, -np.inf])
-inf
>>> from numpy.testing import suppress_warnings
>>> with np.errstate(invalid="ignore"):
... np.nansum([1, np.nan, np.inf, -np.inf]) # both +/- infinity present
np.float64(nan)
nanvar(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>, mean=<no value>, correction=<no value>)
Compute the variance along the specified axis, while ignoring NaNs.
Returns the variance of the array elements, a measure of the spread of
a distribution. The variance is computed for the flattened array by
default, otherwise over the specified axis.
For all-NaN slices or slices with zero degrees of freedom, NaN is
returned and a `RuntimeWarning` is raised.
.. versionadded:: 1.8.0
Parameters
----------
a : array_like
Array containing numbers whose variance is desired. If `a` is not an
array, a conversion is attempted.
axis : {int, tuple of int, None}, optional
Axis or axes along which the variance is computed. The default is to compute
the variance of the flattened array.
dtype : data-type, optional
Type to use in computing the variance. For arrays of integer type
the default is `float64`; for arrays of float types it is the same as
the array type.
out : ndarray, optional
Alternate output array in which to place the result. It must have
the same shape as the expected output, but the type is cast if
necessary.
ddof : {int, float}, optional
"Delta Degrees of Freedom": the divisor used in the calculation is
``N - ddof``, where ``N`` represents the number of non-NaN
elements. By default `ddof` is zero.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the original `a`.
where : array_like of bool, optional
Elements to include in the variance. See `~numpy.ufunc.reduce` for
details.
.. versionadded:: 1.22.0
mean : array_like, optional
Provide the mean to prevent its recalculation. The mean should have
a shape as if it was calculated with ``keepdims=True``.
The axis for the calculation of the mean should be the same as used in
the call to this var function.
.. versionadded:: 1.26.0
correction : {int, float}, optional
Array API compatible name for the ``ddof`` parameter. Only one of them
can be provided at the same time.
.. versionadded:: 2.0.0
Returns
-------
variance : ndarray, see dtype parameter above
If `out` is None, return a new array containing the variance,
otherwise return a reference to the output array. If ddof is >= the
number of non-NaN elements in a slice or the slice contains only
NaNs, then the result for that slice is NaN.
See Also
--------
std : Standard deviation
mean : Average
var : Variance while not ignoring NaNs
nanstd, nanmean
:ref:`ufuncs-output-type`
Notes
-----
The variance is the average of the squared deviations from the mean,
i.e., ``var = mean(abs(x - x.mean())**2)``.
The mean is normally calculated as ``x.sum() / N``, where ``N = len(x)``.
If, however, `ddof` is specified, the divisor ``N - ddof`` is used
instead. In standard statistical practice, ``ddof=1`` provides an
unbiased estimator of the variance of a hypothetical infinite
population. ``ddof=0`` provides a maximum likelihood estimate of the
variance for normally distributed variables.
Note that for complex numbers, the absolute value is taken before
squaring, so that the result is always real and nonnegative.
For floating-point input, the variance is computed using the same
precision the input has. Depending on the input data, this can cause
the results to be inaccurate, especially for `float32` (see example
below). Specifying a higher-accuracy accumulator using the ``dtype``
keyword can alleviate this issue.
For this function to work on sub-classes of ndarray, they must define
`sum` with the kwarg `keepdims`
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, np.nan], [3, 4]])
>>> np.nanvar(a)
1.5555555555555554
>>> np.nanvar(a, axis=0)
array([1., 0.])
>>> np.nanvar(a, axis=1)
array([0., 0.25]) # may vary
ndim(a)
Return the number of dimensions of an array.
Parameters
----------
a : array_like
Input array. If it is not already an ndarray, a conversion is
attempted.
Returns
-------
number_of_dimensions : int
The number of dimensions in `a`. Scalars are zero-dimensional.
See Also
--------
ndarray.ndim : equivalent method
shape : dimensions of array
ndarray.shape : dimensions of array
Examples
--------
>>> import numpy as np
>>> np.ndim([[1,2,3],[4,5,6]])
2
>>> np.ndim(np.array([[1,2,3],[4,5,6]]))
2
>>> np.ndim(1)
0
nested_iters(...)
nested_iters(op, axes, flags=None, op_flags=None, op_dtypes=None, order="K", casting="safe", buffersize=0)
Create nditers for use in nested loops
Create a tuple of `nditer` objects which iterate in nested loops over
different axes of the op argument. The first iterator is used in the
outermost loop, the last in the innermost loop. Advancing one will change
the subsequent iterators to point at its new element.
Parameters
----------
op : ndarray or sequence of array_like
The array(s) to iterate over.
axes : list of list of int
Each item is used as an "op_axes" argument to an nditer
flags, op_flags, op_dtypes, order, casting, buffersize (optional)
See `nditer` parameters of the same name
Returns
-------
iters : tuple of nditer
An nditer for each item in `axes`, outermost first
See Also
--------
nditer
Examples
--------
Basic usage. Note how y is the "flattened" version of
[a[:, 0, :], a[:, 1, 0], a[:, 2, :]] since we specified
the first iter's axes as [1]
>>> import numpy as np
>>> a = np.arange(12).reshape(2, 3, 2)
>>> i, j = np.nested_iters(a, [[1], [0, 2]], flags=["multi_index"])
>>> for x in i:
... print(i.multi_index)
... for y in j:
... print('', j.multi_index, y)
(0,)
(0, 0) 0
(0, 1) 1
(1, 0) 6
(1, 1) 7
(1,)
(0, 0) 2
(0, 1) 3
(1, 0) 8
(1, 1) 9
(2,)
(0, 0) 4
(0, 1) 5
(1, 0) 10
(1, 1) 11
nonzero(a)
Return the indices of the elements that are non-zero.
Returns a tuple of arrays, one for each dimension of `a`,
containing the indices of the non-zero elements in that
dimension. The values in `a` are always tested and returned in
row-major, C-style order.
To group the indices by element, rather than dimension, use `argwhere`,
which returns a row for each non-zero element.
.. note::
When called on a zero-d array or scalar, ``nonzero(a)`` is treated
as ``nonzero(atleast_1d(a))``.
.. deprecated:: 1.17.0
Use `atleast_1d` explicitly if this behavior is deliberate.
Parameters
----------
a : array_like
Input array.
Returns
-------
tuple_of_arrays : tuple
Indices of elements that are non-zero.
See Also
--------
flatnonzero :
Return indices that are non-zero in the flattened version of the input
array.
ndarray.nonzero :
Equivalent ndarray method.
count_nonzero :
Counts the number of non-zero elements in the input array.
Notes
-----
While the nonzero values can be obtained with ``a[nonzero(a)]``, it is
recommended to use ``x[x.astype(bool)]`` or ``x[x != 0]`` instead, which
will correctly handle 0-d arrays.
Examples
--------
>>> import numpy as np
>>> x = np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]])
>>> x
array([[3, 0, 0],
[0, 4, 0],
[5, 6, 0]])
>>> np.nonzero(x)
(array([0, 1, 2, 2]), array([0, 1, 0, 1]))
>>> x[np.nonzero(x)]
array([3, 4, 5, 6])
>>> np.transpose(np.nonzero(x))
array([[0, 0],
[1, 1],
[2, 0],
[2, 1]])
A common use for ``nonzero`` is to find the indices of an array, where
a condition is True. Given an array `a`, the condition `a` > 3 is a
boolean array and since False is interpreted as 0, np.nonzero(a > 3)
yields the indices of the `a` where the condition is true.
>>> a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> a > 3
array([[False, False, False],
[ True, True, True],
[ True, True, True]])
>>> np.nonzero(a > 3)
(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))
Using this result to index `a` is equivalent to using the mask directly:
>>> a[np.nonzero(a > 3)]
array([4, 5, 6, 7, 8, 9])
>>> a[a > 3] # prefer this spelling
array([4, 5, 6, 7, 8, 9])
``nonzero`` can also be called as a method of the array.
>>> (a > 3).nonzero()
(array([1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2]))
ones(shape, dtype=None, order='C', *, device=None, like=None)
Return a new array of given shape and type, filled with ones.
Parameters
----------
shape : int or sequence of ints
Shape of the new array, e.g., ``(2, 3)`` or ``2``.
dtype : data-type, optional
The desired data-type for the array, e.g., `numpy.int8`. Default is
`numpy.float64`.
order : {'C', 'F'}, optional, default: C
Whether to store multi-dimensional data in row-major
(C-style) or column-major (Fortran-style) order in
memory.
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array of ones with the given shape, dtype, and order.
See Also
--------
ones_like : Return an array of ones with shape and type of input.
empty : Return a new uninitialized array.
zeros : Return a new array setting values to zero.
full : Return a new array of given shape filled with value.
Examples
--------
>>> import numpy as np
>>> np.ones(5)
array([1., 1., 1., 1., 1.])
>>> np.ones((5,), dtype=int)
array([1, 1, 1, 1, 1])
>>> np.ones((2, 1))
array([[1.],
[1.]])
>>> s = (2,2)
>>> np.ones(s)
array([[1., 1.],
[1., 1.]])
ones_like(a, dtype=None, order='K', subok=True, shape=None, *, device=None)
Return an array of ones with the same shape and type as a given array.
Parameters
----------
a : array_like
The shape and data-type of `a` define these same attributes of
the returned array.
dtype : data-type, optional
Overrides the data type of the result.
.. versionadded:: 1.6.0
order : {'C', 'F', 'A', or 'K'}, optional
Overrides the memory layout of the result. 'C' means C-order,
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
'C' otherwise. 'K' means match the layout of `a` as closely
as possible.
.. versionadded:: 1.6.0
subok : bool, optional.
If True, then the newly created array will use the sub-class
type of `a`, otherwise it will be a base-class array. Defaults
to True.
shape : int or sequence of ints, optional.
Overrides the shape of the result. If order='K' and the number of
dimensions is unchanged, will try to keep order, otherwise,
order='C' is implied.
.. versionadded:: 1.17.0
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
Returns
-------
out : ndarray
Array of ones with the same shape and type as `a`.
See Also
--------
empty_like : Return an empty array with shape and type of input.
zeros_like : Return an array of zeros with shape and type of input.
full_like : Return a new array with shape of input filled with value.
ones : Return a new array setting values to one.
Examples
--------
>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> np.ones_like(x)
array([[1, 1, 1],
[1, 1, 1]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.ones_like(y)
array([1., 1., 1.])
outer(a, b, out=None)
Compute the outer product of two vectors.
Given two vectors `a` and `b` of length ``M`` and ``N``, respectively,
the outer product [1]_ is::
[[a_0*b_0 a_0*b_1 ... a_0*b_{N-1} ]
[a_1*b_0 .
[ ... .
[a_{M-1}*b_0 a_{M-1}*b_{N-1} ]]
Parameters
----------
a : (M,) array_like
First input vector. Input is flattened if
not already 1-dimensional.
b : (N,) array_like
Second input vector. Input is flattened if
not already 1-dimensional.
out : (M, N) ndarray, optional
A location where the result is stored
.. versionadded:: 1.9.0
Returns
-------
out : (M, N) ndarray
``out[i, j] = a[i] * b[j]``
See also
--------
inner
einsum : ``einsum('i,j->ij', a.ravel(), b.ravel())`` is the equivalent.
ufunc.outer : A generalization to dimensions other than 1D and other
operations. ``np.multiply.outer(a.ravel(), b.ravel())``
is the equivalent.
linalg.outer : An Array API compatible variation of ``np.outer``,
which accepts 1-dimensional inputs only.
tensordot : ``np.tensordot(a.ravel(), b.ravel(), axes=((), ()))``
is the equivalent.
References
----------
.. [1] G. H. Golub and C. F. Van Loan, *Matrix Computations*, 3rd
ed., Baltimore, MD, Johns Hopkins University Press, 1996,
pg. 8.
Examples
--------
Make a (*very* coarse) grid for computing a Mandelbrot set:
>>> import numpy as np
>>> rl = np.outer(np.ones((5,)), np.linspace(-2, 2, 5))
>>> rl
array([[-2., -1., 0., 1., 2.],
[-2., -1., 0., 1., 2.],
[-2., -1., 0., 1., 2.],
[-2., -1., 0., 1., 2.],
[-2., -1., 0., 1., 2.]])
>>> im = np.outer(1j*np.linspace(2, -2, 5), np.ones((5,)))
>>> im
array([[0.+2.j, 0.+2.j, 0.+2.j, 0.+2.j, 0.+2.j],
[0.+1.j, 0.+1.j, 0.+1.j, 0.+1.j, 0.+1.j],
[0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
[0.-1.j, 0.-1.j, 0.-1.j, 0.-1.j, 0.-1.j],
[0.-2.j, 0.-2.j, 0.-2.j, 0.-2.j, 0.-2.j]])
>>> grid = rl + im
>>> grid
array([[-2.+2.j, -1.+2.j, 0.+2.j, 1.+2.j, 2.+2.j],
[-2.+1.j, -1.+1.j, 0.+1.j, 1.+1.j, 2.+1.j],
[-2.+0.j, -1.+0.j, 0.+0.j, 1.+0.j, 2.+0.j],
[-2.-1.j, -1.-1.j, 0.-1.j, 1.-1.j, 2.-1.j],
[-2.-2.j, -1.-2.j, 0.-2.j, 1.-2.j, 2.-2.j]])
An example using a "vector" of letters:
>>> x = np.array(['a', 'b', 'c'], dtype=object)
>>> np.outer(x, [1, 2, 3])
array([['a', 'aa', 'aaa'],
['b', 'bb', 'bbb'],
['c', 'cc', 'ccc']], dtype=object)
packbits(...)
packbits(a, /, axis=None, bitorder='big')
Packs the elements of a binary-valued array into bits in a uint8 array.
The result is padded to full bytes by inserting zero bits at the end.
Parameters
----------
a : array_like
An array of integers or booleans whose elements should be packed to
bits.
axis : int, optional
The dimension over which bit-packing is done.
``None`` implies packing the flattened array.
bitorder : {'big', 'little'}, optional
The order of the input bits. 'big' will mimic bin(val),
``[0, 0, 0, 0, 0, 0, 1, 1] => 3 = 0b00000011``, 'little' will
reverse the order so ``[1, 1, 0, 0, 0, 0, 0, 0] => 3``.
Defaults to 'big'.
.. versionadded:: 1.17.0
Returns
-------
packed : ndarray
Array of type uint8 whose elements represent bits corresponding to the
logical (0 or nonzero) value of the input elements. The shape of
`packed` has the same number of dimensions as the input (unless `axis`
is None, in which case the output is 1-D).
See Also
--------
unpackbits: Unpacks elements of a uint8 array into a binary-valued output
array.
Examples
--------
>>> import numpy as np
>>> a = np.array([[[1,0,1],
... [0,1,0]],
... [[1,1,0],
... [0,0,1]]])
>>> b = np.packbits(a, axis=-1)
>>> b
array([[[160],
[ 64]],
[[192],
[ 32]]], dtype=uint8)
Note that in binary 160 = 1010 0000, 64 = 0100 0000, 192 = 1100 0000,
and 32 = 0010 0000.
pad(array, pad_width, mode='constant', **kwargs)
Pad an array.
Parameters
----------
array : array_like of rank N
The array to pad.
pad_width : {sequence, array_like, int}
Number of values padded to the edges of each axis.
``((before_1, after_1), ... (before_N, after_N))`` unique pad widths
for each axis.
``(before, after)`` or ``((before, after),)`` yields same before
and after pad for each axis.
``(pad,)`` or ``int`` is a shortcut for before = after = pad width
for all axes.
mode : str or function, optional
One of the following string values or a user supplied function.
'constant' (default)
Pads with a constant value.
'edge'
Pads with the edge values of array.
'linear_ramp'
Pads with the linear ramp between end_value and the
array edge value.
'maximum'
Pads with the maximum value of all or part of the
vector along each axis.
'mean'
Pads with the mean value of all or part of the
vector along each axis.
'median'
Pads with the median value of all or part of the
vector along each axis.
'minimum'
Pads with the minimum value of all or part of the
vector along each axis.
'reflect'
Pads with the reflection of the vector mirrored on
the first and last values of the vector along each
axis.
'symmetric'
Pads with the reflection of the vector mirrored
along the edge of the array.
'wrap'
Pads with the wrap of the vector along the axis.
The first values are used to pad the end and the
end values are used to pad the beginning.
'empty'
Pads with undefined values.
.. versionadded:: 1.17
<function>
Padding function, see Notes.
stat_length : sequence or int, optional
Used in 'maximum', 'mean', 'median', and 'minimum'. Number of
values at edge of each axis used to calculate the statistic value.
``((before_1, after_1), ... (before_N, after_N))`` unique statistic
lengths for each axis.
``(before, after)`` or ``((before, after),)`` yields same before
and after statistic lengths for each axis.
``(stat_length,)`` or ``int`` is a shortcut for
``before = after = statistic`` length for all axes.
Default is ``None``, to use the entire axis.
constant_values : sequence or scalar, optional
Used in 'constant'. The values to set the padded values for each
axis.
``((before_1, after_1), ... (before_N, after_N))`` unique pad constants
for each axis.
``(before, after)`` or ``((before, after),)`` yields same before
and after constants for each axis.
``(constant,)`` or ``constant`` is a shortcut for
``before = after = constant`` for all axes.
Default is 0.
end_values : sequence or scalar, optional
Used in 'linear_ramp'. The values used for the ending value of the
linear_ramp and that will form the edge of the padded array.
``((before_1, after_1), ... (before_N, after_N))`` unique end values
for each axis.
``(before, after)`` or ``((before, after),)`` yields same before
and after end values for each axis.
``(constant,)`` or ``constant`` is a shortcut for
``before = after = constant`` for all axes.
Default is 0.
reflect_type : {'even', 'odd'}, optional
Used in 'reflect', and 'symmetric'. The 'even' style is the
default with an unaltered reflection around the edge value. For
the 'odd' style, the extended part of the array is created by
subtracting the reflected values from two times the edge value.
Returns
-------
pad : ndarray
Padded array of rank equal to `array` with shape increased
according to `pad_width`.
Notes
-----
.. versionadded:: 1.7.0
For an array with rank greater than 1, some of the padding of later
axes is calculated from padding of previous axes. This is easiest to
think about with a rank 2 array where the corners of the padded array
are calculated by using padded values from the first axis.
The padding function, if used, should modify a rank 1 array in-place. It
has the following signature::
padding_func(vector, iaxis_pad_width, iaxis, kwargs)
where
vector : ndarray
A rank 1 array already padded with zeros. Padded values are
vector[:iaxis_pad_width[0]] and vector[-iaxis_pad_width[1]:].
iaxis_pad_width : tuple
A 2-tuple of ints, iaxis_pad_width[0] represents the number of
values padded at the beginning of vector where
iaxis_pad_width[1] represents the number of values padded at
the end of vector.
iaxis : int
The axis currently being calculated.
kwargs : dict
Any keyword arguments the function requires.
Examples
--------
>>> import numpy as np
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'constant', constant_values=(4, 6))
array([4, 4, 1, ..., 6, 6, 6])
>>> np.pad(a, (2, 3), 'edge')
array([1, 1, 1, ..., 5, 5, 5])
>>> np.pad(a, (2, 3), 'linear_ramp', end_values=(5, -4))
array([ 5, 3, 1, 2, 3, 4, 5, 2, -1, -4])
>>> np.pad(a, (2,), 'maximum')
array([5, 5, 1, 2, 3, 4, 5, 5, 5])
>>> np.pad(a, (2,), 'mean')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> np.pad(a, (2,), 'median')
array([3, 3, 1, 2, 3, 4, 5, 3, 3])
>>> a = [[1, 2], [3, 4]]
>>> np.pad(a, ((3, 2), (2, 3)), 'minimum')
array([[1, 1, 1, 2, 1, 1, 1],
[1, 1, 1, 2, 1, 1, 1],
[1, 1, 1, 2, 1, 1, 1],
[1, 1, 1, 2, 1, 1, 1],
[3, 3, 3, 4, 3, 3, 3],
[1, 1, 1, 2, 1, 1, 1],
[1, 1, 1, 2, 1, 1, 1]])
>>> a = [1, 2, 3, 4, 5]
>>> np.pad(a, (2, 3), 'reflect')
array([3, 2, 1, 2, 3, 4, 5, 4, 3, 2])
>>> np.pad(a, (2, 3), 'reflect', reflect_type='odd')
array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> np.pad(a, (2, 3), 'symmetric')
array([2, 1, 1, 2, 3, 4, 5, 5, 4, 3])
>>> np.pad(a, (2, 3), 'symmetric', reflect_type='odd')
array([0, 1, 1, 2, 3, 4, 5, 5, 6, 7])
>>> np.pad(a, (2, 3), 'wrap')
array([4, 5, 1, 2, 3, 4, 5, 1, 2, 3])
>>> def pad_with(vector, pad_width, iaxis, kwargs):
... pad_value = kwargs.get('padder', 10)
... vector[:pad_width[0]] = pad_value
... vector[-pad_width[1]:] = pad_value
>>> a = np.arange(6)
>>> a = a.reshape((2, 3))
>>> np.pad(a, 2, pad_with)
array([[10, 10, 10, 10, 10, 10, 10],
[10, 10, 10, 10, 10, 10, 10],
[10, 10, 0, 1, 2, 10, 10],
[10, 10, 3, 4, 5, 10, 10],
[10, 10, 10, 10, 10, 10, 10],
[10, 10, 10, 10, 10, 10, 10]])
>>> np.pad(a, 2, pad_with, padder=100)
array([[100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100],
[100, 100, 0, 1, 2, 100, 100],
[100, 100, 3, 4, 5, 100, 100],
[100, 100, 100, 100, 100, 100, 100],
[100, 100, 100, 100, 100, 100, 100]])
partition(a, kth, axis=-1, kind='introselect', order=None)
Return a partitioned copy of an array.
Creates a copy of the array and partially sorts it in such a way that
the value of the element in k-th position is in the position it would be
in a sorted array. In the output array, all elements smaller than the k-th
element are located to the left of this element and all equal or greater
are located to its right. The ordering of the elements in the two
partitions on the either side of the k-th element in the output array is
undefined.
.. versionadded:: 1.8.0
Parameters
----------
a : array_like
Array to be sorted.
kth : int or sequence of ints
Element index to partition by. The k-th value of the element
will be in its final sorted position and all smaller elements
will be moved before it and all equal or greater elements behind
it. The order of all elements in the partitions is undefined. If
provided with a sequence of k-th it will partition all elements
indexed by k-th of them into their sorted position at once.
.. deprecated:: 1.22.0
Passing booleans as index is deprecated.
axis : int or None, optional
Axis along which to sort. If None, the array is flattened before
sorting. The default is -1, which sorts along the last axis.
kind : {'introselect'}, optional
Selection algorithm. Default is 'introselect'.
order : str or list of str, optional
When `a` is an array with fields defined, this argument
specifies which fields to compare first, second, etc. A single
field can be specified as a string. Not all fields need be
specified, but unspecified fields will still be used, in the
order in which they come up in the dtype, to break ties.
Returns
-------
partitioned_array : ndarray
Array of the same type and shape as `a`.
See Also
--------
ndarray.partition : Method to sort an array in-place.
argpartition : Indirect partition.
sort : Full sorting
Notes
-----
The various selection algorithms are characterized by their average
speed, worst case performance, work space size, and whether they are
stable. A stable sort keeps items with the same key in the same
relative order. The available algorithms have the following
properties:
================= ======= ============= ============ =======
kind speed worst case work space stable
================= ======= ============= ============ =======
'introselect' 1 O(n) 0 no
================= ======= ============= ============ =======
All the partition algorithms make temporary copies of the data when
partitioning along any but the last axis. Consequently,
partitioning along the last axis is faster and uses less space than
partitioning along any other axis.
The sort order for complex numbers is lexicographic. If both the
real and imaginary parts are non-nan then the order is determined by
the real parts except when they are equal, in which case the order
is determined by the imaginary parts.
The sort order of ``np.nan`` is bigger than ``np.inf``.
Examples
--------
>>> import numpy as np
>>> a = np.array([7, 1, 7, 7, 1, 5, 7, 2, 3, 2, 6, 2, 3, 0])
>>> p = np.partition(a, 4)
>>> p
array([0, 1, 2, 1, 2, 5, 2, 3, 3, 6, 7, 7, 7, 7]) # may vary
``p[4]`` is 2; all elements in ``p[:4]`` are less than or equal
to ``p[4]``, and all elements in ``p[5:]`` are greater than or
equal to ``p[4]``. The partition is::
[0, 1, 2, 1], [2], [5, 2, 3, 3, 6, 7, 7, 7, 7]
The next example shows the use of multiple values passed to `kth`.
>>> p2 = np.partition(a, (4, 8))
>>> p2
array([0, 1, 2, 1, 2, 3, 3, 2, 5, 6, 7, 7, 7, 7])
``p2[4]`` is 2 and ``p2[8]`` is 5. All elements in ``p2[:4]``
are less than or equal to ``p2[4]``, all elements in ``p2[5:8]``
are greater than or equal to ``p2[4]`` and less than or equal to
``p2[8]``, and all elements in ``p2[9:]`` are greater than or
equal to ``p2[8]``. The partition is::
[0, 1, 2, 1], [2], [3, 3, 2], [5], [6, 7, 7, 7, 7]
percentile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False, *, weights=None, interpolation=None)
Compute the q-th percentile of the data along the specified axis.
Returns the q-th percentile(s) of the array elements.
Parameters
----------
a : array_like of real numbers
Input array or object that can be converted to an array.
q : array_like of float
Percentage or sequence of percentages for the percentiles to compute.
Values must be between 0 and 100 inclusive.
axis : {int, tuple of int, None}, optional
Axis or axes along which the percentiles are computed. The
default is to compute the percentile(s) along a flattened
version of the array.
.. versionchanged:: 1.9.0
A tuple of axes is supported
out : ndarray, optional
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output,
but the type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow the input array `a` to be modified by intermediate
calculations, to save memory. In this case, the contents of the input
`a` after this function completes is undefined.
method : str, optional
This parameter specifies the method to use for estimating the
percentile. There are many different methods, some unique to NumPy.
See the notes for explanation. The options sorted by their R type
as summarized in the H&F paper [1]_ are:
1. 'inverted_cdf'
2. 'averaged_inverted_cdf'
3. 'closest_observation'
4. 'interpolated_inverted_cdf'
5. 'hazen'
6. 'weibull'
7. 'linear' (default)
8. 'median_unbiased'
9. 'normal_unbiased'
The first three methods are discontinuous. NumPy further defines the
following discontinuous variations of the default 'linear' (7.) option:
* 'lower'
* 'higher',
* 'midpoint'
* 'nearest'
.. versionchanged:: 1.22.0
This argument was previously called "interpolation" and only
offered the "linear" default and last four options.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left in
the result as dimensions with size one. With this option, the
result will broadcast correctly against the original array `a`.
.. versionadded:: 1.9.0
weights : array_like, optional
An array of weights associated with the values in `a`. Each value in
`a` contributes to the percentile according to its associated weight.
The weights array can either be 1-D (in which case its length must be
the size of `a` along the given axis) or of the same shape as `a`.
If `weights=None`, then all data in `a` are assumed to have a
weight equal to one.
Only `method="inverted_cdf"` supports weights.
See the notes for more details.
.. versionadded:: 2.0.0
interpolation : str, optional
Deprecated name for the method keyword argument.
.. deprecated:: 1.22.0
Returns
-------
percentile : scalar or ndarray
If `q` is a single percentile and `axis=None`, then the result
is a scalar. If multiple percentiles are given, first axis of
the result corresponds to the percentiles. The other axes are
the axes that remain after the reduction of `a`. If the input
contains integers or floats smaller than ``float64``, the output
data-type is ``float64``. Otherwise, the output data-type is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
mean
median : equivalent to ``percentile(..., 50)``
nanpercentile
quantile : equivalent to percentile, except q in the range [0, 1].
Notes
-----
The behavior of `numpy.percentile` with percentage `q` is
that of `numpy.quantile` with argument ``q/100``.
For more information, please see `numpy.quantile`.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10, 7, 4],
[ 3, 2, 1]])
>>> np.percentile(a, 50)
3.5
>>> np.percentile(a, 50, axis=0)
array([6.5, 4.5, 2.5])
>>> np.percentile(a, 50, axis=1)
array([7., 2.])
>>> np.percentile(a, 50, axis=1, keepdims=True)
array([[7.],
[2.]])
>>> m = np.percentile(a, 50, axis=0)
>>> out = np.zeros_like(m)
>>> np.percentile(a, 50, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
>>> b = a.copy()
>>> np.percentile(b, 50, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a == b)
The different methods can be visualized graphically:
.. plot::
import matplotlib.pyplot as plt
a = np.arange(4)
p = np.linspace(0, 100, 6001)
ax = plt.gca()
lines = [
('linear', '-', 'C0'),
('inverted_cdf', ':', 'C1'),
# Almost the same as `inverted_cdf`:
('averaged_inverted_cdf', '-.', 'C1'),
('closest_observation', ':', 'C2'),
('interpolated_inverted_cdf', '--', 'C1'),
('hazen', '--', 'C3'),
('weibull', '-.', 'C4'),
('median_unbiased', '--', 'C5'),
('normal_unbiased', '-.', 'C6'),
]
for method, style, color in lines:
ax.plot(
p, np.percentile(a, p, method=method),
label=method, linestyle=style, color=color)
ax.set(
title='Percentiles for different methods and data: ' + str(a),
xlabel='Percentile',
ylabel='Estimated percentile value',
yticks=a)
ax.legend(bbox_to_anchor=(1.03, 1))
plt.tight_layout()
plt.show()
References
----------
.. [1] R. J. Hyndman and Y. Fan,
"Sample quantiles in statistical packages,"
The American Statistician, 50(4), pp. 361-365, 1996
permute_dims = transpose(a, axes=None)
Returns an array with axes transposed.
For a 1-D array, this returns an unchanged view of the original array, as a
transposed vector is simply the same vector.
To convert a 1-D array into a 2-D column vector, an additional dimension
must be added, e.g., ``np.atleast_2d(a).T`` achieves this, as does
``a[:, np.newaxis]``.
For a 2-D array, this is the standard matrix transpose.
For an n-D array, if axes are given, their order indicates how the
axes are permuted (see Examples). If axes are not provided, then
``transpose(a).shape == a.shape[::-1]``.
Parameters
----------
a : array_like
Input array.
axes : tuple or list of ints, optional
If specified, it must be a tuple or list which contains a permutation
of [0,1,...,N-1] where N is the number of axes of `a`. The `i`'th axis
of the returned array will correspond to the axis numbered ``axes[i]``
of the input. If not specified, defaults to ``range(a.ndim)[::-1]``,
which reverses the order of the axes.
Returns
-------
p : ndarray
`a` with its axes permuted. A view is returned whenever possible.
See Also
--------
ndarray.transpose : Equivalent method.
moveaxis : Move axes of an array to new positions.
argsort : Return the indices that would sort an array.
Notes
-----
Use ``transpose(a, argsort(axes))`` to invert the transposition of tensors
when using the `axes` keyword argument.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> np.transpose(a)
array([[1, 3],
[2, 4]])
>>> a = np.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> np.transpose(a)
array([1, 2, 3, 4])
>>> a = np.ones((1, 2, 3))
>>> np.transpose(a, (1, 0, 2)).shape
(2, 1, 3)
>>> a = np.ones((2, 3, 4, 5))
>>> np.transpose(a).shape
(5, 4, 3, 2)
piecewise(x, condlist, funclist, *args, **kw)
Evaluate a piecewise-defined function.
Given a set of conditions and corresponding functions, evaluate each
function on the input data wherever its condition is true.
Parameters
----------
x : ndarray or scalar
The input domain.
condlist : list of bool arrays or bool scalars
Each boolean array corresponds to a function in `funclist`. Wherever
`condlist[i]` is True, `funclist[i](x)` is used as the output value.
Each boolean array in `condlist` selects a piece of `x`,
and should therefore be of the same shape as `x`.
The length of `condlist` must correspond to that of `funclist`.
If one extra function is given, i.e. if
``len(funclist) == len(condlist) + 1``, then that extra function
is the default value, used wherever all conditions are false.
funclist : list of callables, f(x,*args,**kw), or scalars
Each function is evaluated over `x` wherever its corresponding
condition is True. It should take a 1d array as input and give an 1d
array or a scalar value as output. If, instead of a callable,
a scalar is provided then a constant function (``lambda x: scalar``) is
assumed.
args : tuple, optional
Any further arguments given to `piecewise` are passed to the functions
upon execution, i.e., if called ``piecewise(..., ..., 1, 'a')``, then
each function is called as ``f(x, 1, 'a')``.
kw : dict, optional
Keyword arguments used in calling `piecewise` are passed to the
functions upon execution, i.e., if called
``piecewise(..., ..., alpha=1)``, then each function is called as
``f(x, alpha=1)``.
Returns
-------
out : ndarray
The output is the same shape and type as x and is found by
calling the functions in `funclist` on the appropriate portions of `x`,
as defined by the boolean arrays in `condlist`. Portions not covered
by any condition have a default value of 0.
See Also
--------
choose, select, where
Notes
-----
This is similar to choose or select, except that functions are
evaluated on elements of `x` that satisfy the corresponding condition from
`condlist`.
The result is::
|--
|funclist[0](x[condlist[0]])
out = |funclist[1](x[condlist[1]])
|...
|funclist[n2](x[condlist[n2]])
|--
Examples
--------
>>> import numpy as np
Define the signum function, which is -1 for ``x < 0`` and +1 for ``x >= 0``.
>>> x = np.linspace(-2.5, 2.5, 6)
>>> np.piecewise(x, [x < 0, x >= 0], [-1, 1])
array([-1., -1., -1., 1., 1., 1.])
Define the absolute value, which is ``-x`` for ``x <0`` and ``x`` for
``x >= 0``.
>>> np.piecewise(x, [x < 0, x >= 0], [lambda x: -x, lambda x: x])
array([2.5, 1.5, 0.5, 0.5, 1.5, 2.5])
Apply the same function to a scalar value.
>>> y = -2
>>> np.piecewise(y, [y < 0, y >= 0], [lambda x: -x, lambda x: x])
array(2)
place(arr, mask, vals)
Change elements of an array based on conditional and input values.
Similar to ``np.copyto(arr, vals, where=mask)``, the difference is that
`place` uses the first N elements of `vals`, where N is the number of
True values in `mask`, while `copyto` uses the elements where `mask`
is True.
Note that `extract` does the exact opposite of `place`.
Parameters
----------
arr : ndarray
Array to put data into.
mask : array_like
Boolean mask array. Must have the same size as `a`.
vals : 1-D sequence
Values to put into `a`. Only the first N elements are used, where
N is the number of True values in `mask`. If `vals` is smaller
than N, it will be repeated, and if elements of `a` are to be masked,
this sequence must be non-empty.
See Also
--------
copyto, put, take, extract
Examples
--------
>>> import numpy as np
>>> arr = np.arange(6).reshape(2, 3)
>>> np.place(arr, arr>2, [44, 55])
>>> arr
array([[ 0, 1, 2],
[44, 55, 44]])
poly(seq_of_zeros)
Find the coefficients of a polynomial with the given sequence of roots.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Returns the coefficients of the polynomial whose leading coefficient
is one for the given sequence of zeros (multiple roots must be included
in the sequence as many times as their multiplicity; see Examples).
A square matrix (or array, which will be treated as a matrix) can also
be given, in which case the coefficients of the characteristic polynomial
of the matrix are returned.
Parameters
----------
seq_of_zeros : array_like, shape (N,) or (N, N)
A sequence of polynomial roots, or a square array or matrix object.
Returns
-------
c : ndarray
1D array of polynomial coefficients from highest to lowest degree:
``c[0] * x**(N) + c[1] * x**(N-1) + ... + c[N-1] * x + c[N]``
where c[0] always equals 1.
Raises
------
ValueError
If input is the wrong shape (the input must be a 1-D or square
2-D array).
See Also
--------
polyval : Compute polynomial values.
roots : Return the roots of a polynomial.
polyfit : Least squares polynomial fit.
poly1d : A one-dimensional polynomial class.
Notes
-----
Specifying the roots of a polynomial still leaves one degree of
freedom, typically represented by an undetermined leading
coefficient. [1]_ In the case of this function, that coefficient -
the first one in the returned array - is always taken as one. (If
for some reason you have one other point, the only automatic way
presently to leverage that information is to use ``polyfit``.)
The characteristic polynomial, :math:`p_a(t)`, of an `n`-by-`n`
matrix **A** is given by
:math:`p_a(t) = \mathrm{det}(t\, \mathbf{I} - \mathbf{A})`,
where **I** is the `n`-by-`n` identity matrix. [2]_
References
----------
.. [1] M. Sullivan and M. Sullivan, III, "Algebra and Trigonometry,
Enhanced With Graphing Utilities," Prentice-Hall, pg. 318, 1996.
.. [2] G. Strang, "Linear Algebra and Its Applications, 2nd Edition,"
Academic Press, pg. 182, 1980.
Examples
--------
Given a sequence of a polynomial's zeros:
>>> import numpy as np
>>> np.poly((0, 0, 0)) # Multiple root example
array([1., 0., 0., 0.])
The line above represents z**3 + 0*z**2 + 0*z + 0.
>>> np.poly((-1./2, 0, 1./2))
array([ 1. , 0. , -0.25, 0. ])
The line above represents z**3 - z/4
>>> np.poly((np.random.random(1)[0], 0, np.random.random(1)[0]))
array([ 1. , -0.77086955, 0.08618131, 0. ]) # random
Given a square array object:
>>> P = np.array([[0, 1./3], [-1./2, 0]])
>>> np.poly(P)
array([1. , 0. , 0.16666667])
Note how in all cases the leading coefficient is always 1.
polyadd(a1, a2)
Find the sum of two polynomials.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Returns the polynomial resulting from the sum of two input polynomials.
Each input must be either a poly1d object or a 1D sequence of polynomial
coefficients, from highest to lowest degree.
Parameters
----------
a1, a2 : array_like or poly1d object
Input polynomials.
Returns
-------
out : ndarray or poly1d object
The sum of the inputs. If either input is a poly1d object, then the
output is also a poly1d object. Otherwise, it is a 1D array of
polynomial coefficients from highest to lowest degree.
See Also
--------
poly1d : A one-dimensional polynomial class.
poly, polyadd, polyder, polydiv, polyfit, polyint, polysub, polyval
Examples
--------
>>> import numpy as np
>>> np.polyadd([1, 2], [9, 5, 4])
array([9, 6, 6])
Using poly1d objects:
>>> p1 = np.poly1d([1, 2])
>>> p2 = np.poly1d([9, 5, 4])
>>> print(p1)
1 x + 2
>>> print(p2)
2
9 x + 5 x + 4
>>> print(np.polyadd(p1, p2))
2
9 x + 6 x + 6
polyder(p, m=1)
Return the derivative of the specified order of a polynomial.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Parameters
----------
p : poly1d or sequence
Polynomial to differentiate.
A sequence is interpreted as polynomial coefficients, see `poly1d`.
m : int, optional
Order of differentiation (default: 1)
Returns
-------
der : poly1d
A new polynomial representing the derivative.
See Also
--------
polyint : Anti-derivative of a polynomial.
poly1d : Class for one-dimensional polynomials.
Examples
--------
The derivative of the polynomial :math:`x^3 + x^2 + x^1 + 1` is:
>>> import numpy as np
>>> p = np.poly1d([1,1,1,1])
>>> p2 = np.polyder(p)
>>> p2
poly1d([3, 2, 1])
which evaluates to:
>>> p2(2.)
17.0
We can verify this, approximating the derivative with
``(f(x + h) - f(x))/h``:
>>> (p(2. + 0.001) - p(2.)) / 0.001
17.007000999997857
The fourth-order derivative of a 3rd-order polynomial is zero:
>>> np.polyder(p, 2)
poly1d([6, 2])
>>> np.polyder(p, 3)
poly1d([6])
>>> np.polyder(p, 4)
poly1d([0])
polydiv(u, v)
Returns the quotient and remainder of polynomial division.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
The input arrays are the coefficients (including any coefficients
equal to zero) of the "numerator" (dividend) and "denominator"
(divisor) polynomials, respectively.
Parameters
----------
u : array_like or poly1d
Dividend polynomial's coefficients.
v : array_like or poly1d
Divisor polynomial's coefficients.
Returns
-------
q : ndarray
Coefficients, including those equal to zero, of the quotient.
r : ndarray
Coefficients, including those equal to zero, of the remainder.
See Also
--------
poly, polyadd, polyder, polydiv, polyfit, polyint, polymul, polysub
polyval
Notes
-----
Both `u` and `v` must be 0-d or 1-d (ndim = 0 or 1), but `u.ndim` need
not equal `v.ndim`. In other words, all four possible combinations -
``u.ndim = v.ndim = 0``, ``u.ndim = v.ndim = 1``,
``u.ndim = 1, v.ndim = 0``, and ``u.ndim = 0, v.ndim = 1`` - work.
Examples
--------
.. math:: \frac{3x^2 + 5x + 2}{2x + 1} = 1.5x + 1.75, remainder 0.25
>>> import numpy as np
>>> x = np.array([3.0, 5.0, 2.0])
>>> y = np.array([2.0, 1.0])
>>> np.polydiv(x, y)
(array([1.5 , 1.75]), array([0.25]))
polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
Least squares polynomial fit.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Fit a polynomial ``p(x) = p[0] * x**deg + ... + p[deg]`` of degree `deg`
to points `(x, y)`. Returns a vector of coefficients `p` that minimises
the squared error in the order `deg`, `deg-1`, ... `0`.
The `Polynomial.fit <numpy.polynomial.polynomial.Polynomial.fit>` class
method is recommended for new code as it is more stable numerically. See
the documentation of the method for more information.
Parameters
----------
x : array_like, shape (M,)
x-coordinates of the M sample points ``(x[i], y[i])``.
y : array_like, shape (M,) or (M, K)
y-coordinates of the sample points. Several data sets of sample
points sharing the same x-coordinates can be fitted at once by
passing in a 2D-array that contains one dataset per column.
deg : int
Degree of the fitting polynomial
rcond : float, optional
Relative condition number of the fit. Singular values smaller than
this relative to the largest singular value will be ignored. The
default value is len(x)*eps, where eps is the relative precision of
the float type, about 2e-16 in most cases.
full : bool, optional
Switch determining nature of return value. When it is False (the
default) just the coefficients are returned, when True diagnostic
information from the singular value decomposition is also returned.
w : array_like, shape (M,), optional
Weights. If not None, the weight ``w[i]`` applies to the unsquared
residual ``y[i] - y_hat[i]`` at ``x[i]``. Ideally the weights are
chosen so that the errors of the products ``w[i]*y[i]`` all have the
same variance. When using inverse-variance weighting, use
``w[i] = 1/sigma(y[i])``. The default value is None.
cov : bool or str, optional
If given and not `False`, return not just the estimate but also its
covariance matrix. By default, the covariance are scaled by
chi2/dof, where dof = M - (deg + 1), i.e., the weights are presumed
to be unreliable except in a relative sense and everything is scaled
such that the reduced chi2 is unity. This scaling is omitted if
``cov='unscaled'``, as is relevant for the case that the weights are
w = 1/sigma, with sigma known to be a reliable estimate of the
uncertainty.
Returns
-------
p : ndarray, shape (deg + 1,) or (deg + 1, K)
Polynomial coefficients, highest power first. If `y` was 2-D, the
coefficients for `k`-th data set are in ``p[:,k]``.
residuals, rank, singular_values, rcond
These values are only returned if ``full == True``
- residuals -- sum of squared residuals of the least squares fit
- rank -- the effective rank of the scaled Vandermonde
coefficient matrix
- singular_values -- singular values of the scaled Vandermonde
coefficient matrix
- rcond -- value of `rcond`.
For more details, see `numpy.linalg.lstsq`.
V : ndarray, shape (deg + 1, deg + 1) or (deg + 1, deg + 1, K)
Present only if ``full == False`` and ``cov == True``. The covariance
matrix of the polynomial coefficient estimates. The diagonal of
this matrix are the variance estimates for each coefficient. If y
is a 2-D array, then the covariance matrix for the `k`-th data set
are in ``V[:,:,k]``
Warns
-----
RankWarning
The rank of the coefficient matrix in the least-squares fit is
deficient. The warning is only raised if ``full == False``.
The warnings can be turned off by
>>> import warnings
>>> warnings.simplefilter('ignore', np.exceptions.RankWarning)
See Also
--------
polyval : Compute polynomial values.
linalg.lstsq : Computes a least-squares fit.
scipy.interpolate.UnivariateSpline : Computes spline fits.
Notes
-----
The solution minimizes the squared error
.. math::
E = \sum_{j=0}^k |p(x_j) - y_j|^2
in the equations::
x[0]**n * p[0] + ... + x[0] * p[n-1] + p[n] = y[0]
x[1]**n * p[0] + ... + x[1] * p[n-1] + p[n] = y[1]
...
x[k]**n * p[0] + ... + x[k] * p[n-1] + p[n] = y[k]
The coefficient matrix of the coefficients `p` is a Vandermonde matrix.
`polyfit` issues a `~exceptions.RankWarning` when the least-squares fit is
badly conditioned. This implies that the best fit is not well-defined due
to numerical error. The results may be improved by lowering the polynomial
degree or by replacing `x` by `x` - `x`.mean(). The `rcond` parameter
can also be set to a value smaller than its default, but the resulting
fit may be spurious: including contributions from the small singular
values can add numerical noise to the result.
Note that fitting polynomial coefficients is inherently badly conditioned
when the degree of the polynomial is large or the interval of sample points
is badly centered. The quality of the fit should always be checked in these
cases. When polynomial fits are not satisfactory, splines may be a good
alternative.
References
----------
.. [1] Wikipedia, "Curve fitting",
https://en.wikipedia.org/wiki/Curve_fitting
.. [2] Wikipedia, "Polynomial interpolation",
https://en.wikipedia.org/wiki/Polynomial_interpolation
Examples
--------
>>> import numpy as np
>>> import warnings
>>> x = np.array([0.0, 1.0, 2.0, 3.0, 4.0, 5.0])
>>> y = np.array([0.0, 0.8, 0.9, 0.1, -0.8, -1.0])
>>> z = np.polyfit(x, y, 3)
>>> z
array([ 0.08703704, -0.81349206, 1.69312169, -0.03968254]) # may vary
It is convenient to use `poly1d` objects for dealing with polynomials:
>>> p = np.poly1d(z)
>>> p(0.5)
0.6143849206349179 # may vary
>>> p(3.5)
-0.34732142857143039 # may vary
>>> p(10)
22.579365079365115 # may vary
High-order polynomials may oscillate wildly:
>>> with warnings.catch_warnings():
... warnings.simplefilter('ignore', np.exceptions.RankWarning)
... p30 = np.poly1d(np.polyfit(x, y, 30))
...
>>> p30(4)
-0.80000000000000204 # may vary
>>> p30(5)
-0.99999999999999445 # may vary
>>> p30(4.5)
-0.10547061179440398 # may vary
Illustration:
>>> import matplotlib.pyplot as plt
>>> xp = np.linspace(-2, 6, 100)
>>> _ = plt.plot(x, y, '.', xp, p(xp), '-', xp, p30(xp), '--')
>>> plt.ylim(-2,2)
(-2, 2)
>>> plt.show()
polyint(p, m=1, k=None)
Return an antiderivative (indefinite integral) of a polynomial.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
The returned order `m` antiderivative `P` of polynomial `p` satisfies
:math:`\frac{d^m}{dx^m}P(x) = p(x)` and is defined up to `m - 1`
integration constants `k`. The constants determine the low-order
polynomial part
.. math:: \frac{k_{m-1}}{0!} x^0 + \ldots + \frac{k_0}{(m-1)!}x^{m-1}
of `P` so that :math:`P^{(j)}(0) = k_{m-j-1}`.
Parameters
----------
p : array_like or poly1d
Polynomial to integrate.
A sequence is interpreted as polynomial coefficients, see `poly1d`.
m : int, optional
Order of the antiderivative. (Default: 1)
k : list of `m` scalars or scalar, optional
Integration constants. They are given in the order of integration:
those corresponding to highest-order terms come first.
If ``None`` (default), all constants are assumed to be zero.
If `m = 1`, a single scalar can be given instead of a list.
See Also
--------
polyder : derivative of a polynomial
poly1d.integ : equivalent method
Examples
--------
The defining property of the antiderivative:
>>> import numpy as np
>>> p = np.poly1d([1,1,1])
>>> P = np.polyint(p)
>>> P
poly1d([ 0.33333333, 0.5 , 1. , 0. ]) # may vary
>>> np.polyder(P) == p
True
The integration constants default to zero, but can be specified:
>>> P = np.polyint(p, 3)
>>> P(0)
0.0
>>> np.polyder(P)(0)
0.0
>>> np.polyder(P, 2)(0)
0.0
>>> P = np.polyint(p, 3, k=[6,5,3])
>>> P
poly1d([ 0.01666667, 0.04166667, 0.16666667, 3. , 5. , 3. ]) # may vary
Note that 3 = 6 / 2!, and that the constants are given in the order of
integrations. Constant of the highest-order polynomial term comes first:
>>> np.polyder(P, 2)(0)
6.0
>>> np.polyder(P, 1)(0)
5.0
>>> P(0)
3.0
polymul(a1, a2)
Find the product of two polynomials.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Finds the polynomial resulting from the multiplication of the two input
polynomials. Each input must be either a poly1d object or a 1D sequence
of polynomial coefficients, from highest to lowest degree.
Parameters
----------
a1, a2 : array_like or poly1d object
Input polynomials.
Returns
-------
out : ndarray or poly1d object
The polynomial resulting from the multiplication of the inputs. If
either inputs is a poly1d object, then the output is also a poly1d
object. Otherwise, it is a 1D array of polynomial coefficients from
highest to lowest degree.
See Also
--------
poly1d : A one-dimensional polynomial class.
poly, polyadd, polyder, polydiv, polyfit, polyint, polysub, polyval
convolve : Array convolution. Same output as polymul, but has parameter
for overlap mode.
Examples
--------
>>> import numpy as np
>>> np.polymul([1, 2, 3], [9, 5, 1])
array([ 9, 23, 38, 17, 3])
Using poly1d objects:
>>> p1 = np.poly1d([1, 2, 3])
>>> p2 = np.poly1d([9, 5, 1])
>>> print(p1)
2
1 x + 2 x + 3
>>> print(p2)
2
9 x + 5 x + 1
>>> print(np.polymul(p1, p2))
4 3 2
9 x + 23 x + 38 x + 17 x + 3
polysub(a1, a2)
Difference (subtraction) of two polynomials.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
Given two polynomials `a1` and `a2`, returns ``a1 - a2``.
`a1` and `a2` can be either array_like sequences of the polynomials'
coefficients (including coefficients equal to zero), or `poly1d` objects.
Parameters
----------
a1, a2 : array_like or poly1d
Minuend and subtrahend polynomials, respectively.
Returns
-------
out : ndarray or poly1d
Array or `poly1d` object of the difference polynomial's coefficients.
See Also
--------
polyval, polydiv, polymul, polyadd
Examples
--------
.. math:: (2 x^2 + 10 x - 2) - (3 x^2 + 10 x -4) = (-x^2 + 2)
>>> import numpy as np
>>> np.polysub([2, 10, -2], [3, 10, -4])
array([-1, 0, 2])
polyval(p, x)
Evaluate a polynomial at specific values.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
If `p` is of length N, this function returns the value::
p[0]*x**(N-1) + p[1]*x**(N-2) + ... + p[N-2]*x + p[N-1]
If `x` is a sequence, then ``p(x)`` is returned for each element of ``x``.
If `x` is another polynomial then the composite polynomial ``p(x(t))``
is returned.
Parameters
----------
p : array_like or poly1d object
1D array of polynomial coefficients (including coefficients equal
to zero) from highest degree to the constant term, or an
instance of poly1d.
x : array_like or poly1d object
A number, an array of numbers, or an instance of poly1d, at
which to evaluate `p`.
Returns
-------
values : ndarray or poly1d
If `x` is a poly1d instance, the result is the composition of the two
polynomials, i.e., `x` is "substituted" in `p` and the simplified
result is returned. In addition, the type of `x` - array_like or
poly1d - governs the type of the output: `x` array_like => `values`
array_like, `x` a poly1d object => `values` is also.
See Also
--------
poly1d: A polynomial class.
Notes
-----
Horner's scheme [1]_ is used to evaluate the polynomial. Even so,
for polynomials of high degree the values may be inaccurate due to
rounding errors. Use carefully.
If `x` is a subtype of `ndarray` the return value will be of the same type.
References
----------
.. [1] I. N. Bronshtein, K. A. Semendyayev, and K. A. Hirsch (Eng.
trans. Ed.), *Handbook of Mathematics*, New York, Van Nostrand
Reinhold Co., 1985, pg. 720.
Examples
--------
>>> import numpy as np
>>> np.polyval([3,0,1], 5) # 3 * 5**2 + 0 * 5**1 + 1
76
>>> np.polyval([3,0,1], np.poly1d(5))
poly1d([76])
>>> np.polyval(np.poly1d([3,0,1]), 5)
76
>>> np.polyval(np.poly1d([3,0,1]), np.poly1d(5))
poly1d([76])
printoptions(*args, **kwargs)
Context manager for setting print options.
Set print options for the scope of the `with` block, and restore the old
options at the end. See `set_printoptions` for the full description of
available options.
Examples
--------
>>> import numpy as np
>>> from numpy.testing import assert_equal
>>> with np.printoptions(precision=2):
... np.array([2.0]) / 3
array([0.67])
The `as`-clause of the `with`-statement gives the current print options:
>>> with np.printoptions(precision=2) as opts:
... assert_equal(opts, np.get_printoptions())
See Also
--------
set_printoptions, get_printoptions
prod(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Return the product of array elements over a given axis.
Parameters
----------
a : array_like
Input data.
axis : None or int or tuple of ints, optional
Axis or axes along which a product is performed. The default,
axis=None, will calculate the product of all the elements in the
input array. If axis is negative it counts from the last to the
first axis.
.. versionadded:: 1.7.0
If axis is a tuple of ints, a product is performed on all of the
axes specified in the tuple instead of a single axis or all the
axes as before.
dtype : dtype, optional
The type of the returned array, as well as of the accumulator in
which the elements are multiplied. The dtype of `a` is used by
default unless `a` has an integer dtype of less precision than the
default platform integer. In that case, if `a` is signed then the
platform integer is used while if `a` is unsigned then an unsigned
integer of the same precision as the platform integer is used.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape as the expected output, but the type of the output
values will be cast if necessary.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left in the
result as dimensions with size one. With this option, the result
will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `prod` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
initial : scalar, optional
The starting value for this product. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.15.0
where : array_like of bool, optional
Elements to include in the product. See `~numpy.ufunc.reduce`
for details.
.. versionadded:: 1.17.0
Returns
-------
product_along_axis : ndarray, see `dtype` parameter above.
An array shaped as `a` but with the specified axis removed.
Returns a reference to `out` if specified.
See Also
--------
ndarray.prod : equivalent method
:ref:`ufuncs-output-type`
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow. That means that, on a 32-bit platform:
>>> x = np.array([536870910, 536870910, 536870910, 536870910])
>>> np.prod(x)
16 # may vary
The product of an empty array is the neutral element 1:
>>> np.prod([])
1.0
Examples
--------
By default, calculate the product of all elements:
>>> import numpy as np
>>> np.prod([1.,2.])
2.0
Even when the input array is two-dimensional:
>>> a = np.array([[1., 2.], [3., 4.]])
>>> np.prod(a)
24.0
But we can also specify the axis over which to multiply:
>>> np.prod(a, axis=1)
array([ 2., 12.])
>>> np.prod(a, axis=0)
array([3., 8.])
Or select specific elements to include:
>>> np.prod([1., np.nan, 3.], where=[True, False, True])
3.0
If the type of `x` is unsigned, then the output type is
the unsigned platform integer:
>>> x = np.array([1, 2, 3], dtype=np.uint8)
>>> np.prod(x).dtype == np.uint
True
If `x` is of a signed integer type, then the output type
is the default platform integer:
>>> x = np.array([1, 2, 3], dtype=np.int8)
>>> np.prod(x).dtype == int
True
You can also start the product with a value other than one:
>>> np.prod([1, 2], initial=5)
10
promote_types(...)
promote_types(type1, type2)
Returns the data type with the smallest size and smallest scalar
kind to which both ``type1`` and ``type2`` may be safely cast.
The returned data type is always considered "canonical", this mainly
means that the promoted dtype will always be in native byte order.
This function is symmetric, but rarely associative.
Parameters
----------
type1 : dtype or dtype specifier
First data type.
type2 : dtype or dtype specifier
Second data type.
Returns
-------
out : dtype
The promoted data type.
Notes
-----
Please see `numpy.result_type` for additional information about promotion.
.. versionadded:: 1.6.0
Starting in NumPy 1.9, promote_types function now returns a valid string
length when given an integer or float dtype as one argument and a string
dtype as another argument. Previously it always returned the input string
dtype, even if it wasn't long enough to store the max integer/float value
converted to a string.
.. versionchanged:: 1.23.0
NumPy now supports promotion for more structured dtypes. It will now
remove unnecessary padding from a structure dtype and promote included
fields individually.
See Also
--------
result_type, dtype, can_cast
Examples
--------
>>> import numpy as np
>>> np.promote_types('f4', 'f8')
dtype('float64')
>>> np.promote_types('i8', 'f4')
dtype('float64')
>>> np.promote_types('>i8', '<c8')
dtype('complex128')
>>> np.promote_types('i4', 'S8')
dtype('S11')
An example of a non-associative case:
>>> p = np.promote_types
>>> p('S', p('i1', 'u1'))
dtype('S6')
>>> p(p('S', 'i1'), 'u1')
dtype('S4')
ptp(a, axis=None, out=None, keepdims=<no value>)
Range of values (maximum - minimum) along an axis.
The name of the function comes from the acronym for 'peak to peak'.
.. warning::
`ptp` preserves the data type of the array. This means the
return value for an input of signed integers with n bits
(e.g. `numpy.int8`, `numpy.int16`, etc) is also a signed integer
with n bits. In that case, peak-to-peak values greater than
``2**(n-1)-1`` will be returned as negative values. An example
with a work-around is shown below.
Parameters
----------
a : array_like
Input values.
axis : None or int or tuple of ints, optional
Axis along which to find the peaks. By default, flatten the
array. `axis` may be negative, in
which case it counts from the last to the first axis.
.. versionadded:: 1.15.0
If this is a tuple of ints, a reduction is performed on multiple
axes, instead of a single axis or all the axes as before.
out : array_like
Alternative output array in which to place the result. It must
have the same shape and buffer length as the expected output,
but the type of the output values will be cast if necessary.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `ptp` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
Returns
-------
ptp : ndarray or scalar
The range of a given array - `scalar` if array is one-dimensional
or a new array holding the result along the given axis
Examples
--------
>>> import numpy as np
>>> x = np.array([[4, 9, 2, 10],
... [6, 9, 7, 12]])
>>> np.ptp(x, axis=1)
array([8, 6])
>>> np.ptp(x, axis=0)
array([2, 0, 5, 2])
>>> np.ptp(x)
10
This example shows that a negative value can be returned when
the input is an array of signed integers.
>>> y = np.array([[1, 127],
... [0, 127],
... [-1, 127],
... [-2, 127]], dtype=np.int8)
>>> np.ptp(y, axis=1)
array([ 126, 127, -128, -127], dtype=int8)
A work-around is to use the `view()` method to view the result as
unsigned integers with the same bit width:
>>> np.ptp(y, axis=1).view(np.uint8)
array([126, 127, 128, 129], dtype=uint8)
put(a, ind, v, mode='raise')
Replaces specified elements of an array with given values.
The indexing works on the flattened target array. `put` is roughly
equivalent to:
::
a.flat[ind] = v
Parameters
----------
a : ndarray
Target array.
ind : array_like
Target indices, interpreted as integers.
v : array_like
Values to place in `a` at target indices. If `v` is shorter than
`ind` it will be repeated as necessary.
mode : {'raise', 'wrap', 'clip'}, optional
Specifies how out-of-bounds indices will behave.
* 'raise' -- raise an error (default)
* 'wrap' -- wrap around
* 'clip' -- clip to the range
'clip' mode means that all indices that are too large are replaced
by the index that addresses the last element along that axis. Note
that this disables indexing with negative numbers. In 'raise' mode,
if an exception occurs the target array may still be modified.
See Also
--------
putmask, place
put_along_axis : Put elements by matching the array and the index arrays
Examples
--------
>>> import numpy as np
>>> a = np.arange(5)
>>> np.put(a, [0, 2], [-44, -55])
>>> a
array([-44, 1, -55, 3, 4])
>>> a = np.arange(5)
>>> np.put(a, 22, -5, mode='clip')
>>> a
array([ 0, 1, 2, 3, -5])
put_along_axis(arr, indices, values, axis)
Put values into the destination array by matching 1d index and data slices.
This iterates over matching 1d slices oriented along the specified axis in
the index and data arrays, and uses the former to place values into the
latter. These slices can be different lengths.
Functions returning an index along an axis, like `argsort` and
`argpartition`, produce suitable indices for this function.
.. versionadded:: 1.15.0
Parameters
----------
arr : ndarray (Ni..., M, Nk...)
Destination array.
indices : ndarray (Ni..., J, Nk...)
Indices to change along each 1d slice of `arr`. This must match the
dimension of arr, but dimensions in Ni and Nj may be 1 to broadcast
against `arr`.
values : array_like (Ni..., J, Nk...)
values to insert at those indices. Its shape and dimension are
broadcast to match that of `indices`.
axis : int
The axis to take 1d slices along. If axis is None, the destination
array is treated as if a flattened 1d view had been created of it.
Notes
-----
This is equivalent to (but faster than) the following use of `ndindex` and
`s_`, which sets each of ``ii`` and ``kk`` to a tuple of indices::
Ni, M, Nk = a.shape[:axis], a.shape[axis], a.shape[axis+1:]
J = indices.shape[axis] # Need not equal M
for ii in ndindex(Ni):
for kk in ndindex(Nk):
a_1d = a [ii + s_[:,] + kk]
indices_1d = indices[ii + s_[:,] + kk]
values_1d = values [ii + s_[:,] + kk]
for j in range(J):
a_1d[indices_1d[j]] = values_1d[j]
Equivalently, eliminating the inner loop, the last two lines would be::
a_1d[indices_1d] = values_1d
See Also
--------
take_along_axis :
Take values from the input array by matching 1d index and data slices
Examples
--------
>>> import numpy as np
For this sample array
>>> a = np.array([[10, 30, 20], [60, 40, 50]])
We can replace the maximum values with:
>>> ai = np.argmax(a, axis=1, keepdims=True)
>>> ai
array([[1],
[0]])
>>> np.put_along_axis(a, ai, 99, axis=1)
>>> a
array([[10, 99, 20],
[99, 40, 50]])
putmask(...)
putmask(a, mask, values)
Changes elements of an array based on conditional and input values.
Sets ``a.flat[n] = values[n]`` for each n where ``mask.flat[n]==True``.
If `values` is not the same size as `a` and `mask` then it will repeat.
This gives behavior different from ``a[mask] = values``.
Parameters
----------
a : ndarray
Target array.
mask : array_like
Boolean mask array. It has to be the same shape as `a`.
values : array_like
Values to put into `a` where `mask` is True. If `values` is smaller
than `a` it will be repeated.
See Also
--------
place, put, take, copyto
Examples
--------
>>> import numpy as np
>>> x = np.arange(6).reshape(2, 3)
>>> np.putmask(x, x>2, x**2)
>>> x
array([[ 0, 1, 2],
[ 9, 16, 25]])
If `values` is smaller than `a` it is repeated:
>>> x = np.arange(5)
>>> np.putmask(x, x>1, [-33, -44])
>>> x
array([ 0, 1, -33, -44, -33])
quantile(a, q, axis=None, out=None, overwrite_input=False, method='linear', keepdims=False, *, weights=None, interpolation=None)
Compute the q-th quantile of the data along the specified axis.
.. versionadded:: 1.15.0
Parameters
----------
a : array_like of real numbers
Input array or object that can be converted to an array.
q : array_like of float
Probability or sequence of probabilities of the quantiles to compute.
Values must be between 0 and 1 inclusive.
axis : {int, tuple of int, None}, optional
Axis or axes along which the quantiles are computed. The default is
to compute the quantile(s) along a flattened version of the array.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape and buffer length as the expected output, but the
type (of the output) will be cast if necessary.
overwrite_input : bool, optional
If True, then allow the input array `a` to be modified by
intermediate calculations, to save memory. In this case, the
contents of the input `a` after this function completes is
undefined.
method : str, optional
This parameter specifies the method to use for estimating the
quantile. There are many different methods, some unique to NumPy.
The recommended options, numbered as they appear in [1]_, are:
1. 'inverted_cdf'
2. 'averaged_inverted_cdf'
3. 'closest_observation'
4. 'interpolated_inverted_cdf'
5. 'hazen'
6. 'weibull'
7. 'linear' (default)
8. 'median_unbiased'
9. 'normal_unbiased'
The first three methods are discontinuous. For backward compatibility
with previous versions of NumPy, the following discontinuous variations
of the default 'linear' (7.) option are available:
* 'lower'
* 'higher',
* 'midpoint'
* 'nearest'
See Notes for details.
.. versionchanged:: 1.22.0
This argument was previously called "interpolation" and only
offered the "linear" default and last four options.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left in
the result as dimensions with size one. With this option, the
result will broadcast correctly against the original array `a`.
weights : array_like, optional
An array of weights associated with the values in `a`. Each value in
`a` contributes to the quantile according to its associated weight.
The weights array can either be 1-D (in which case its length must be
the size of `a` along the given axis) or of the same shape as `a`.
If `weights=None`, then all data in `a` are assumed to have a
weight equal to one.
Only `method="inverted_cdf"` supports weights.
See the notes for more details.
.. versionadded:: 2.0.0
interpolation : str, optional
Deprecated name for the method keyword argument.
.. deprecated:: 1.22.0
Returns
-------
quantile : scalar or ndarray
If `q` is a single probability and `axis=None`, then the result
is a scalar. If multiple probability levels are given, first axis
of the result corresponds to the quantiles. The other axes are
the axes that remain after the reduction of `a`. If the input
contains integers or floats smaller than ``float64``, the output
data-type is ``float64``. Otherwise, the output data-type is the
same as that of the input. If `out` is specified, that array is
returned instead.
See Also
--------
mean
percentile : equivalent to quantile, but with q in the range [0, 100].
median : equivalent to ``quantile(..., 0.5)``
nanquantile
Notes
-----
Given a sample `a` from an underlying distribution, `quantile` provides a
nonparametric estimate of the inverse cumulative distribution function.
By default, this is done by interpolating between adjacent elements in
``y``, a sorted copy of `a`::
(1-g)*y[j] + g*y[j+1]
where the index ``j`` and coefficient ``g`` are the integral and
fractional components of ``q * (n-1)``, and ``n`` is the number of
elements in the sample.
This is a special case of Equation 1 of H&F [1]_. More generally,
- ``j = (q*n + m - 1) // 1``, and
- ``g = (q*n + m - 1) % 1``,
where ``m`` may be defined according to several different conventions.
The preferred convention may be selected using the ``method`` parameter:
=============================== =============== ===============
``method`` number in H&F ``m``
=============================== =============== ===============
``interpolated_inverted_cdf`` 4 ``0``
``hazen`` 5 ``1/2``
``weibull`` 6 ``q``
``linear`` (default) 7 ``1 - q``
``median_unbiased`` 8 ``q/3 + 1/3``
``normal_unbiased`` 9 ``q/4 + 3/8``
=============================== =============== ===============
Note that indices ``j`` and ``j + 1`` are clipped to the range ``0`` to
``n - 1`` when the results of the formula would be outside the allowed
range of non-negative indices. The ``- 1`` in the formulas for ``j`` and
``g`` accounts for Python's 0-based indexing.
The table above includes only the estimators from H&F that are continuous
functions of probability `q` (estimators 4-9). NumPy also provides the
three discontinuous estimators from H&F (estimators 1-3), where ``j`` is
defined as above, ``m`` is defined as follows, and ``g`` is a function
of the real-valued ``index = q*n + m - 1`` and ``j``.
1. ``inverted_cdf``: ``m = 0`` and ``g = int(index - j > 0)``
2. ``averaged_inverted_cdf``: ``m = 0`` and
``g = (1 + int(index - j > 0)) / 2``
3. ``closest_observation``: ``m = -1/2`` and
``g = 1 - int((index == j) & (j%2 == 1))``
For backward compatibility with previous versions of NumPy, `quantile`
provides four additional discontinuous estimators. Like
``method='linear'``, all have ``m = 1 - q`` so that ``j = q*(n-1) // 1``,
but ``g`` is defined as follows.
- ``lower``: ``g = 0``
- ``midpoint``: ``g = 0.5``
- ``higher``: ``g = 1``
- ``nearest``: ``g = (q*(n-1) % 1) > 0.5``
**Weighted quantiles:**
More formally, the quantile at probability level :math:`q` of a cumulative
distribution function :math:`F(y)=P(Y \leq y)` with probability measure
:math:`P` is defined as any number :math:`x` that fulfills the
*coverage conditions*
.. math:: P(Y < x) \leq q \quad\text{and}\quad P(Y \leq x) \geq q
with random variable :math:`Y\sim P`.
Sample quantiles, the result of `quantile`, provide nonparametric
estimation of the underlying population counterparts, represented by the
unknown :math:`F`, given a data vector `a` of length ``n``.
Some of the estimators above arise when one considers :math:`F` as the
empirical distribution function of the data, i.e.
:math:`F(y) = \frac{1}{n} \sum_i 1_{a_i \leq y}`.
Then, different methods correspond to different choices of :math:`x` that
fulfill the above coverage conditions. Methods that follow this approach
are ``inverted_cdf`` and ``averaged_inverted_cdf``.
For weighted quantiles, the coverage conditions still hold. The
empirical cumulative distribution is simply replaced by its weighted
version, i.e.
:math:`P(Y \leq t) = \frac{1}{\sum_i w_i} \sum_i w_i 1_{x_i \leq t}`.
Only ``method="inverted_cdf"`` supports weights.
Examples
--------
>>> import numpy as np
>>> a = np.array([[10, 7, 4], [3, 2, 1]])
>>> a
array([[10, 7, 4],
[ 3, 2, 1]])
>>> np.quantile(a, 0.5)
3.5
>>> np.quantile(a, 0.5, axis=0)
array([6.5, 4.5, 2.5])
>>> np.quantile(a, 0.5, axis=1)
array([7., 2.])
>>> np.quantile(a, 0.5, axis=1, keepdims=True)
array([[7.],
[2.]])
>>> m = np.quantile(a, 0.5, axis=0)
>>> out = np.zeros_like(m)
>>> np.quantile(a, 0.5, axis=0, out=out)
array([6.5, 4.5, 2.5])
>>> m
array([6.5, 4.5, 2.5])
>>> b = a.copy()
>>> np.quantile(b, 0.5, axis=1, overwrite_input=True)
array([7., 2.])
>>> assert not np.all(a == b)
See also `numpy.percentile` for a visualization of most methods.
References
----------
.. [1] R. J. Hyndman and Y. Fan,
"Sample quantiles in statistical packages,"
The American Statistician, 50(4), pp. 361-365, 1996
ravel(a, order='C')
Return a contiguous flattened array.
A 1-D array, containing the elements of the input, is returned. A copy is
made only if needed.
As of NumPy 1.10, the returned array will have the same type as the input
array. (for example, a masked array will be returned for a masked array
input)
Parameters
----------
a : array_like
Input array. The elements in `a` are read in the order specified by
`order`, and packed as a 1-D array.
order : {'C','F', 'A', 'K'}, optional
The elements of `a` are read using this index order. 'C' means
to index the elements in row-major, C-style order,
with the last axis index changing fastest, back to the first
axis index changing slowest. 'F' means to index the elements
in column-major, Fortran-style order, with the
first index changing fastest, and the last index changing
slowest. Note that the 'C' and 'F' options take no account of
the memory layout of the underlying array, and only refer to
the order of axis indexing. 'A' means to read the elements in
Fortran-like index order if `a` is Fortran *contiguous* in
memory, C-like order otherwise. 'K' means to read the
elements in the order they occur in memory, except for
reversing the data when strides are negative. By default, 'C'
index order is used.
Returns
-------
y : array_like
y is a contiguous 1-D array of the same subtype as `a`,
with shape ``(a.size,)``.
Note that matrices are special cased for backward compatibility,
if `a` is a matrix, then y is a 1-D ndarray.
See Also
--------
ndarray.flat : 1-D iterator over an array.
ndarray.flatten : 1-D array copy of the elements of an array
in row-major order.
ndarray.reshape : Change the shape of an array without changing its data.
Notes
-----
In row-major, C-style order, in two dimensions, the row index
varies the slowest, and the column index the quickest. This can
be generalized to multiple dimensions, where row-major order
implies that the index along the first axis varies slowest, and
the index along the last quickest. The opposite holds for
column-major, Fortran-style index ordering.
When a view is desired in as many cases as possible, ``arr.reshape(-1)``
may be preferable. However, ``ravel`` supports ``K`` in the optional
``order`` argument while ``reshape`` does not.
Examples
--------
It is equivalent to ``reshape(-1, order=order)``.
>>> import numpy as np
>>> x = np.array([[1, 2, 3], [4, 5, 6]])
>>> np.ravel(x)
array([1, 2, 3, 4, 5, 6])
>>> x.reshape(-1)
array([1, 2, 3, 4, 5, 6])
>>> np.ravel(x, order='F')
array([1, 4, 2, 5, 3, 6])
When ``order`` is 'A', it will preserve the array's 'C' or 'F' ordering:
>>> np.ravel(x.T)
array([1, 4, 2, 5, 3, 6])
>>> np.ravel(x.T, order='A')
array([1, 2, 3, 4, 5, 6])
When ``order`` is 'K', it will preserve orderings that are neither 'C'
nor 'F', but won't reverse axes:
>>> a = np.arange(3)[::-1]; a
array([2, 1, 0])
>>> a.ravel(order='C')
array([2, 1, 0])
>>> a.ravel(order='K')
array([2, 1, 0])
>>> a = np.arange(12).reshape(2,3,2).swapaxes(1,2); a
array([[[ 0, 2, 4],
[ 1, 3, 5]],
[[ 6, 8, 10],
[ 7, 9, 11]]])
>>> a.ravel(order='C')
array([ 0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11])
>>> a.ravel(order='K')
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
ravel_multi_index(...)
ravel_multi_index(multi_index, dims, mode='raise', order='C')
Converts a tuple of index arrays into an array of flat
indices, applying boundary modes to the multi-index.
Parameters
----------
multi_index : tuple of array_like
A tuple of integer arrays, one array for each dimension.
dims : tuple of ints
The shape of array into which the indices from ``multi_index`` apply.
mode : {'raise', 'wrap', 'clip'}, optional
Specifies how out-of-bounds indices are handled. Can specify
either one mode or a tuple of modes, one mode per index.
* 'raise' -- raise an error (default)
* 'wrap' -- wrap around
* 'clip' -- clip to the range
In 'clip' mode, a negative index which would normally
wrap will clip to 0 instead.
order : {'C', 'F'}, optional
Determines whether the multi-index should be viewed as
indexing in row-major (C-style) or column-major
(Fortran-style) order.
Returns
-------
raveled_indices : ndarray
An array of indices into the flattened version of an array
of dimensions ``dims``.
See Also
--------
unravel_index
Notes
-----
.. versionadded:: 1.6.0
Examples
--------
>>> import numpy as np
>>> arr = np.array([[3,6,6],[4,5,1]])
>>> np.ravel_multi_index(arr, (7,6))
array([22, 41, 37])
>>> np.ravel_multi_index(arr, (7,6), order='F')
array([31, 41, 13])
>>> np.ravel_multi_index(arr, (4,6), mode='clip')
array([22, 23, 19])
>>> np.ravel_multi_index(arr, (4,4), mode=('clip','wrap'))
array([12, 13, 13])
>>> np.ravel_multi_index((3,1,4,1), (6,7,8,9))
1621
real(val)
Return the real part of the complex argument.
Parameters
----------
val : array_like
Input array.
Returns
-------
out : ndarray or scalar
The real component of the complex argument. If `val` is real, the type
of `val` is used for the output. If `val` has complex elements, the
returned type is float.
See Also
--------
real_if_close, imag, angle
Examples
--------
>>> import numpy as np
>>> a = np.array([1+2j, 3+4j, 5+6j])
>>> a.real
array([1., 3., 5.])
>>> a.real = 9
>>> a
array([9.+2.j, 9.+4.j, 9.+6.j])
>>> a.real = np.array([9, 8, 7])
>>> a
array([9.+2.j, 8.+4.j, 7.+6.j])
>>> np.real(1 + 1j)
1.0
real_if_close(a, tol=100)
If input is complex with all imaginary parts close to zero, return
real parts.
"Close to zero" is defined as `tol` * (machine epsilon of the type for
`a`).
Parameters
----------
a : array_like
Input array.
tol : float
Tolerance in machine epsilons for the complex part of the elements
in the array. If the tolerance is <=1, then the absolute tolerance
is used.
Returns
-------
out : ndarray
If `a` is real, the type of `a` is used for the output. If `a`
has complex elements, the returned type is float.
See Also
--------
real, imag, angle
Notes
-----
Machine epsilon varies from machine to machine and between data types
but Python floats on most platforms have a machine epsilon equal to
2.2204460492503131e-16. You can use 'np.finfo(float).eps' to print
out the machine epsilon for floats.
Examples
--------
>>> import numpy as np
>>> np.finfo(float).eps
2.2204460492503131e-16 # may vary
>>> np.real_if_close([2.1 + 4e-14j, 5.2 + 3e-15j], tol=1000)
array([2.1, 5.2])
>>> np.real_if_close([2.1 + 4e-13j, 5.2 + 3e-15j], tol=1000)
array([2.1+4.e-13j, 5.2 + 3e-15j])
repeat(a, repeats, axis=None)
Repeat each element of an array after themselves
Parameters
----------
a : array_like
Input array.
repeats : int or array of ints
The number of repetitions for each element. `repeats` is broadcasted
to fit the shape of the given axis.
axis : int, optional
The axis along which to repeat values. By default, use the
flattened input array, and return a flat output array.
Returns
-------
repeated_array : ndarray
Output array which has the same shape as `a`, except along
the given axis.
See Also
--------
tile : Tile an array.
unique : Find the unique elements of an array.
Examples
--------
>>> import numpy as np
>>> np.repeat(3, 4)
array([3, 3, 3, 3])
>>> x = np.array([[1,2],[3,4]])
>>> np.repeat(x, 2)
array([1, 1, 2, 2, 3, 3, 4, 4])
>>> np.repeat(x, 3, axis=1)
array([[1, 1, 1, 2, 2, 2],
[3, 3, 3, 4, 4, 4]])
>>> np.repeat(x, [1, 2], axis=0)
array([[1, 2],
[3, 4],
[3, 4]])
require(a, dtype=None, requirements=None, *, like=None)
Return an ndarray of the provided type that satisfies requirements.
This function is useful to be sure that an array with the correct flags
is returned for passing to compiled code (perhaps through ctypes).
Parameters
----------
a : array_like
The object to be converted to a type-and-requirement-satisfying array.
dtype : data-type
The required data-type. If None preserve the current dtype. If your
application requires the data to be in native byteorder, include
a byteorder specification as a part of the dtype specification.
requirements : str or sequence of str
The requirements list can be any of the following
* 'F_CONTIGUOUS' ('F') - ensure a Fortran-contiguous array
* 'C_CONTIGUOUS' ('C') - ensure a C-contiguous array
* 'ALIGNED' ('A') - ensure a data-type aligned array
* 'WRITEABLE' ('W') - ensure a writable array
* 'OWNDATA' ('O') - ensure an array that owns its own data
* 'ENSUREARRAY', ('E') - ensure a base array, instead of a subclass
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array with specified requirements and type if given.
See Also
--------
asarray : Convert input to an ndarray.
asanyarray : Convert to an ndarray, but pass through ndarray subclasses.
ascontiguousarray : Convert input to a contiguous array.
asfortranarray : Convert input to an ndarray with column-major
memory order.
ndarray.flags : Information about the memory layout of the array.
Notes
-----
The returned array will be guaranteed to have the listed requirements
by making a copy if needed.
Examples
--------
>>> import numpy as np
>>> x = np.arange(6).reshape(2,3)
>>> x.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
>>> y = np.require(x, dtype=np.float32, requirements=['A', 'O', 'W', 'F'])
>>> y.flags
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
reshape(a, /, shape=None, order='C', *, newshape=None, copy=None)
Gives a new shape to an array without changing its data.
Parameters
----------
a : array_like
Array to be reshaped.
shape : int or tuple of ints
The new shape should be compatible with the original shape. If
an integer, then the result will be a 1-D array of that length.
One shape dimension can be -1. In this case, the value is
inferred from the length of the array and remaining dimensions.
order : {'C', 'F', 'A'}, optional
Read the elements of ``a`` using this index order, and place the
elements into the reshaped array using this index order. 'C'
means to read / write the elements using C-like index order,
with the last axis index changing fastest, back to the first
axis index changing slowest. 'F' means to read / write the
elements using Fortran-like index order, with the first index
changing fastest, and the last index changing slowest. Note that
the 'C' and 'F' options take no account of the memory layout of
the underlying array, and only refer to the order of indexing.
'A' means to read / write the elements in Fortran-like index
order if ``a`` is Fortran *contiguous* in memory, C-like order
otherwise.
newshape : int or tuple of ints
.. deprecated:: 2.1
Replaced by ``shape`` argument. Retained for backward
compatibility.
copy : bool, optional
If ``True``, then the array data is copied. If ``None``, a copy will
only be made if it's required by ``order``. For ``False`` it raises
a ``ValueError`` if a copy cannot be avoided. Default: ``None``.
Returns
-------
reshaped_array : ndarray
This will be a new view object if possible; otherwise, it will
be a copy. Note there is no guarantee of the *memory layout* (C- or
Fortran- contiguous) of the returned array.
See Also
--------
ndarray.reshape : Equivalent method.
Notes
-----
It is not always possible to change the shape of an array without copying
the data.
The ``order`` keyword gives the index ordering both for *fetching*
the values from ``a``, and then *placing* the values into the output
array. For example, let's say you have an array:
>>> a = np.arange(6).reshape((3, 2))
>>> a
array([[0, 1],
[2, 3],
[4, 5]])
You can think of reshaping as first raveling the array (using the given
index order), then inserting the elements from the raveled array into the
new array using the same kind of index ordering as was used for the
raveling.
>>> np.reshape(a, (2, 3)) # C-like index ordering
array([[0, 1, 2],
[3, 4, 5]])
>>> np.reshape(np.ravel(a), (2, 3)) # equivalent to C ravel then C reshape
array([[0, 1, 2],
[3, 4, 5]])
>>> np.reshape(a, (2, 3), order='F') # Fortran-like index ordering
array([[0, 4, 3],
[2, 1, 5]])
>>> np.reshape(np.ravel(a, order='F'), (2, 3), order='F')
array([[0, 4, 3],
[2, 1, 5]])
Examples
--------
>>> import numpy as np
>>> a = np.array([[1,2,3], [4,5,6]])
>>> np.reshape(a, 6)
array([1, 2, 3, 4, 5, 6])
>>> np.reshape(a, 6, order='F')
array([1, 4, 2, 5, 3, 6])
>>> np.reshape(a, (3,-1)) # the unspecified value is inferred to be 2
array([[1, 2],
[3, 4],
[5, 6]])
resize(a, new_shape)
Return a new array with the specified shape.
If the new array is larger than the original array, then the new
array is filled with repeated copies of `a`. Note that this behavior
is different from a.resize(new_shape) which fills with zeros instead
of repeated copies of `a`.
Parameters
----------
a : array_like
Array to be resized.
new_shape : int or tuple of int
Shape of resized array.
Returns
-------
reshaped_array : ndarray
The new array is formed from the data in the old array, repeated
if necessary to fill out the required number of elements. The
data are repeated iterating over the array in C-order.
See Also
--------
numpy.reshape : Reshape an array without changing the total size.
numpy.pad : Enlarge and pad an array.
numpy.repeat : Repeat elements of an array.
ndarray.resize : resize an array in-place.
Notes
-----
When the total size of the array does not change `~numpy.reshape` should
be used. In most other cases either indexing (to reduce the size)
or padding (to increase the size) may be a more appropriate solution.
Warning: This functionality does **not** consider axes separately,
i.e. it does not apply interpolation/extrapolation.
It fills the return array with the required number of elements, iterating
over `a` in C-order, disregarding axes (and cycling back from the start if
the new shape is larger). This functionality is therefore not suitable to
resize images, or data where each axis represents a separate and distinct
entity.
Examples
--------
>>> import numpy as np
>>> a = np.array([[0,1],[2,3]])
>>> np.resize(a,(2,3))
array([[0, 1, 2],
[3, 0, 1]])
>>> np.resize(a,(1,4))
array([[0, 1, 2, 3]])
>>> np.resize(a,(2,4))
array([[0, 1, 2, 3],
[0, 1, 2, 3]])
result_type(...)
result_type(*arrays_and_dtypes)
Returns the type that results from applying the NumPy
type promotion rules to the arguments.
Type promotion in NumPy works similarly to the rules in languages
like C++, with some slight differences. When both scalars and
arrays are used, the array's type takes precedence and the actual value
of the scalar is taken into account.
For example, calculating 3*a, where a is an array of 32-bit floats,
intuitively should result in a 32-bit float output. If the 3 is a
32-bit integer, the NumPy rules indicate it can't convert losslessly
into a 32-bit float, so a 64-bit float should be the result type.
By examining the value of the constant, '3', we see that it fits in
an 8-bit integer, which can be cast losslessly into the 32-bit float.
Parameters
----------
arrays_and_dtypes : list of arrays and dtypes
The operands of some operation whose result type is needed.
Returns
-------
out : dtype
The result type.
See also
--------
dtype, promote_types, min_scalar_type, can_cast
Notes
-----
.. versionadded:: 1.6.0
The specific algorithm used is as follows.
Categories are determined by first checking which of boolean,
integer (int/uint), or floating point (float/complex) the maximum
kind of all the arrays and the scalars are.
If there are only scalars or the maximum category of the scalars
is higher than the maximum category of the arrays,
the data types are combined with :func:`promote_types`
to produce the return value.
Otherwise, `min_scalar_type` is called on each scalar, and
the resulting data types are all combined with :func:`promote_types`
to produce the return value.
The set of int values is not a subset of the uint values for types
with the same number of bits, something not reflected in
:func:`min_scalar_type`, but handled as a special case in `result_type`.
Examples
--------
>>> import numpy as np
>>> np.result_type(3, np.arange(7, dtype='i1'))
dtype('int8')
>>> np.result_type('i4', 'c8')
dtype('complex128')
>>> np.result_type(3.0, -2)
dtype('float64')
roll(a, shift, axis=None)
Roll array elements along a given axis.
Elements that roll beyond the last position are re-introduced at
the first.
Parameters
----------
a : array_like
Input array.
shift : int or tuple of ints
The number of places by which elements are shifted. If a tuple,
then `axis` must be a tuple of the same size, and each of the
given axes is shifted by the corresponding number. If an int
while `axis` is a tuple of ints, then the same value is used for
all given axes.
axis : int or tuple of ints, optional
Axis or axes along which elements are shifted. By default, the
array is flattened before shifting, after which the original
shape is restored.
Returns
-------
res : ndarray
Output array, with the same shape as `a`.
See Also
--------
rollaxis : Roll the specified axis backwards, until it lies in a
given position.
Notes
-----
.. versionadded:: 1.12.0
Supports rolling over multiple dimensions simultaneously.
Examples
--------
>>> import numpy as np
>>> x = np.arange(10)
>>> np.roll(x, 2)
array([8, 9, 0, 1, 2, 3, 4, 5, 6, 7])
>>> np.roll(x, -2)
array([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])
>>> x2 = np.reshape(x, (2, 5))
>>> x2
array([[0, 1, 2, 3, 4],
[5, 6, 7, 8, 9]])
>>> np.roll(x2, 1)
array([[9, 0, 1, 2, 3],
[4, 5, 6, 7, 8]])
>>> np.roll(x2, -1)
array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 0]])
>>> np.roll(x2, 1, axis=0)
array([[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]])
>>> np.roll(x2, -1, axis=0)
array([[5, 6, 7, 8, 9],
[0, 1, 2, 3, 4]])
>>> np.roll(x2, 1, axis=1)
array([[4, 0, 1, 2, 3],
[9, 5, 6, 7, 8]])
>>> np.roll(x2, -1, axis=1)
array([[1, 2, 3, 4, 0],
[6, 7, 8, 9, 5]])
>>> np.roll(x2, (1, 1), axis=(1, 0))
array([[9, 5, 6, 7, 8],
[4, 0, 1, 2, 3]])
>>> np.roll(x2, (2, 1), axis=(1, 0))
array([[8, 9, 5, 6, 7],
[3, 4, 0, 1, 2]])
rollaxis(a, axis, start=0)
Roll the specified axis backwards, until it lies in a given position.
This function continues to be supported for backward compatibility, but you
should prefer `moveaxis`. The `moveaxis` function was added in NumPy
1.11.
Parameters
----------
a : ndarray
Input array.
axis : int
The axis to be rolled. The positions of the other axes do not
change relative to one another.
start : int, optional
When ``start <= axis``, the axis is rolled back until it lies in
this position. When ``start > axis``, the axis is rolled until it
lies before this position. The default, 0, results in a "complete"
roll. The following table describes how negative values of ``start``
are interpreted:
.. table::
:align: left
+-------------------+----------------------+
| ``start`` | Normalized ``start`` |
+===================+======================+
| ``-(arr.ndim+1)`` | raise ``AxisError`` |
+-------------------+----------------------+
| ``-arr.ndim`` | 0 |
+-------------------+----------------------+
| |vdots| | |vdots| |
+-------------------+----------------------+
| ``-1`` | ``arr.ndim-1`` |
+-------------------+----------------------+
| ``0`` | ``0`` |
+-------------------+----------------------+
| |vdots| | |vdots| |
+-------------------+----------------------+
| ``arr.ndim`` | ``arr.ndim`` |
+-------------------+----------------------+
| ``arr.ndim + 1`` | raise ``AxisError`` |
+-------------------+----------------------+
.. |vdots| unicode:: U+22EE .. Vertical Ellipsis
Returns
-------
res : ndarray
For NumPy >= 1.10.0 a view of `a` is always returned. For earlier
NumPy versions a view of `a` is returned only if the order of the
axes is changed, otherwise the input array is returned.
See Also
--------
moveaxis : Move array axes to new positions.
roll : Roll the elements of an array by a number of positions along a
given axis.
Examples
--------
>>> import numpy as np
>>> a = np.ones((3,4,5,6))
>>> np.rollaxis(a, 3, 1).shape
(3, 6, 4, 5)
>>> np.rollaxis(a, 2).shape
(5, 3, 4, 6)
>>> np.rollaxis(a, 1, 4).shape
(3, 5, 6, 4)
roots(p)
Return the roots of a polynomial with coefficients given in p.
.. note::
This forms part of the old polynomial API. Since version 1.4, the
new polynomial API defined in `numpy.polynomial` is preferred.
A summary of the differences can be found in the
:doc:`transition guide </reference/routines.polynomials>`.
The values in the rank-1 array `p` are coefficients of a polynomial.
If the length of `p` is n+1 then the polynomial is described by::
p[0] * x**n + p[1] * x**(n-1) + ... + p[n-1]*x + p[n]
Parameters
----------
p : array_like
Rank-1 array of polynomial coefficients.
Returns
-------
out : ndarray
An array containing the roots of the polynomial.
Raises
------
ValueError
When `p` cannot be converted to a rank-1 array.
See also
--------
poly : Find the coefficients of a polynomial with a given sequence
of roots.
polyval : Compute polynomial values.
polyfit : Least squares polynomial fit.
poly1d : A one-dimensional polynomial class.
Notes
-----
The algorithm relies on computing the eigenvalues of the
companion matrix [1]_.
References
----------
.. [1] R. A. Horn & C. R. Johnson, *Matrix Analysis*. Cambridge, UK:
Cambridge University Press, 1999, pp. 146-7.
Examples
--------
>>> import numpy as np
>>> coeff = [3.2, 2, 1]
>>> np.roots(coeff)
array([-0.3125+0.46351241j, -0.3125-0.46351241j])
rot90(m, k=1, axes=(0, 1))
Rotate an array by 90 degrees in the plane specified by axes.
Rotation direction is from the first towards the second axis.
This means for a 2D array with the default `k` and `axes`, the
rotation will be counterclockwise.
Parameters
----------
m : array_like
Array of two or more dimensions.
k : integer
Number of times the array is rotated by 90 degrees.
axes : (2,) array_like
The array is rotated in the plane defined by the axes.
Axes must be different.
.. versionadded:: 1.12.0
Returns
-------
y : ndarray
A rotated view of `m`.
See Also
--------
flip : Reverse the order of elements in an array along the given axis.
fliplr : Flip an array horizontally.
flipud : Flip an array vertically.
Notes
-----
``rot90(m, k=1, axes=(1,0))`` is the reverse of
``rot90(m, k=1, axes=(0,1))``
``rot90(m, k=1, axes=(1,0))`` is equivalent to
``rot90(m, k=-1, axes=(0,1))``
Examples
--------
>>> import numpy as np
>>> m = np.array([[1,2],[3,4]], int)
>>> m
array([[1, 2],
[3, 4]])
>>> np.rot90(m)
array([[2, 4],
[1, 3]])
>>> np.rot90(m, 2)
array([[4, 3],
[2, 1]])
>>> m = np.arange(8).reshape((2,2,2))
>>> np.rot90(m, 1, (1,2))
array([[[1, 3],
[0, 2]],
[[5, 7],
[4, 6]]])
round(a, decimals=0, out=None)
Evenly round to the given number of decimals.
Parameters
----------
a : array_like
Input data.
decimals : int, optional
Number of decimal places to round to (default: 0). If
decimals is negative, it specifies the number of positions to
the left of the decimal point.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape as the expected output, but the type of the output
values will be cast if necessary. See :ref:`ufuncs-output-type`
for more details.
Returns
-------
rounded_array : ndarray
An array of the same type as `a`, containing the rounded values.
Unless `out` was specified, a new array is created. A reference to
the result is returned.
The real and imaginary parts of complex numbers are rounded
separately. The result of rounding a float is a float.
See Also
--------
ndarray.round : equivalent method
around : an alias for this function
ceil, fix, floor, rint, trunc
Notes
-----
For values exactly halfway between rounded decimal values, NumPy
rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0,
-0.5 and 0.5 round to 0.0, etc.
``np.round`` uses a fast but sometimes inexact algorithm to round
floating-point datatypes. For positive `decimals` it is equivalent to
``np.true_divide(np.rint(a * 10**decimals), 10**decimals)``, which has
error due to the inexact representation of decimal fractions in the IEEE
floating point standard [1]_ and errors introduced when scaling by powers
of ten. For instance, note the extra "1" in the following:
>>> np.round(56294995342131.5, 3)
56294995342131.51
If your goal is to print such values with a fixed number of decimals, it is
preferable to use numpy's float printing routines to limit the number of
printed decimals:
>>> np.format_float_positional(56294995342131.5, precision=3)
'56294995342131.5'
The float printing routines use an accurate but much more computationally
demanding algorithm to compute the number of digits after the decimal
point.
Alternatively, Python's builtin `round` function uses a more accurate
but slower algorithm for 64-bit floating point values:
>>> round(56294995342131.5, 3)
56294995342131.5
>>> np.round(16.055, 2), round(16.055, 2) # equals 16.0549999999999997
(16.06, 16.05)
References
----------
.. [1] "Lecture Notes on the Status of IEEE 754", William Kahan,
https://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF
Examples
--------
>>> import numpy as np
>>> np.round([0.37, 1.64])
array([0., 2.])
>>> np.round([0.37, 1.64], decimals=1)
array([0.4, 1.6])
>>> np.round([.5, 1.5, 2.5, 3.5, 4.5]) # rounds to nearest even value
array([0., 2., 2., 4., 4.])
>>> np.round([1,2,3,11], decimals=1) # ndarray of ints is returned
array([ 1, 2, 3, 11])
>>> np.round([1,2,3,11], decimals=-1)
array([ 0, 0, 0, 10])
row_stack(tup, *, dtype=None, casting='same_kind')
Stack arrays in sequence vertically (row wise).
This is equivalent to concatenation along the first axis after 1-D arrays
of shape `(N,)` have been reshaped to `(1,N)`. Rebuilds arrays divided by
`vsplit`.
This function makes most sense for arrays with up to 3 dimensions. For
instance, for pixel-data with a height (first axis), width (second axis),
and r/g/b channels (third axis). The functions `concatenate`, `stack` and
`block` provide more general stacking and concatenation operations.
Parameters
----------
tup : sequence of ndarrays
The arrays must have the same shape along all but the first axis.
1-D arrays must have the same length.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.24
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
.. versionadded:: 1.24
Returns
-------
stacked : ndarray
The array formed by stacking the given arrays, will be at least 2-D.
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
block : Assemble an nd-array from nested lists of blocks.
hstack : Stack arrays in sequence horizontally (column wise).
dstack : Stack arrays in sequence depth wise (along third axis).
column_stack : Stack 1-D arrays as columns into a 2-D array.
vsplit : Split an array into multiple sub-arrays vertically (row-wise).
unstack : Split an array into a tuple of sub-arrays along an axis.
Examples
--------
>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> np.vstack((a,b))
array([[1, 2, 3],
[4, 5, 6]])
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[4], [5], [6]])
>>> np.vstack((a,b))
array([[1],
[2],
[3],
[4],
[5],
[6]])
save(file, arr, allow_pickle=True, fix_imports=<no value>)
Save an array to a binary file in NumPy ``.npy`` format.
Parameters
----------
file : file, str, or pathlib.Path
File or filename to which the data is saved. If file is a file-object,
then the filename is unchanged. If file is a string or Path,
a ``.npy`` extension will be appended to the filename if it does not
already have one.
arr : array_like
Array data to be saved.
allow_pickle : bool, optional
Allow saving object arrays using Python pickles. Reasons for
disallowing pickles include security (loading pickled data can execute
arbitrary code) and portability (pickled objects may not be loadable
on different Python installations, for example if the stored objects
require libraries that are not available, and not all pickled data is
compatible between different versions of Python).
Default: True
fix_imports : bool, optional
The `fix_imports` flag is deprecated and has no effect.
.. deprecated:: 2.1
This flag is ignored since NumPy 1.17 and was only needed to
support loading some files in Python 2 written in Python 3.
See Also
--------
savez : Save several arrays into a ``.npz`` archive
savetxt, load
Notes
-----
For a description of the ``.npy`` format, see :py:mod:`numpy.lib.format`.
Any data saved to the file is appended to the end of the file.
Examples
--------
>>> import numpy as np
>>> from tempfile import TemporaryFile
>>> outfile = TemporaryFile()
>>> x = np.arange(10)
>>> np.save(outfile, x)
>>> _ = outfile.seek(0) # Only needed to simulate closing & reopening file
>>> np.load(outfile)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> with open('test.npy', 'wb') as f:
... np.save(f, np.array([1, 2]))
... np.save(f, np.array([1, 3]))
>>> with open('test.npy', 'rb') as f:
... a = np.load(f)
... b = np.load(f)
>>> print(a, b)
# [1 2] [1 3]
savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
Save an array to a text file.
Parameters
----------
fname : filename, file handle or pathlib.Path
If the filename ends in ``.gz``, the file is automatically saved in
compressed gzip format. `loadtxt` understands gzipped files
transparently.
X : 1D or 2D array_like
Data to be saved to a text file.
fmt : str or sequence of strs, optional
A single format (%10.5f), a sequence of formats, or a
multi-format string, e.g. 'Iteration %d -- %10.5f', in which
case `delimiter` is ignored. For complex `X`, the legal options
for `fmt` are:
* a single specifier, ``fmt='%.4e'``, resulting in numbers formatted
like ``' (%s+%sj)' % (fmt, fmt)``
* a full string specifying every real and imaginary part, e.g.
``' %.4e %+.4ej %.4e %+.4ej %.4e %+.4ej'`` for 3 columns
* a list of specifiers, one per column - in this case, the real
and imaginary part must have separate specifiers,
e.g. ``['%.3e + %.3ej', '(%.15e%+.15ej)']`` for 2 columns
delimiter : str, optional
String or character separating columns.
newline : str, optional
String or character separating lines.
.. versionadded:: 1.5.0
header : str, optional
String that will be written at the beginning of the file.
.. versionadded:: 1.7.0
footer : str, optional
String that will be written at the end of the file.
.. versionadded:: 1.7.0
comments : str, optional
String that will be prepended to the ``header`` and ``footer`` strings,
to mark them as comments. Default: '# ', as expected by e.g.
``numpy.loadtxt``.
.. versionadded:: 1.7.0
encoding : {None, str}, optional
Encoding used to encode the outputfile. Does not apply to output
streams. If the encoding is something other than 'bytes' or 'latin1'
you will not be able to load the file in NumPy versions < 1.14. Default
is 'latin1'.
.. versionadded:: 1.14.0
See Also
--------
save : Save an array to a binary file in NumPy ``.npy`` format
savez : Save several arrays into an uncompressed ``.npz`` archive
savez_compressed : Save several arrays into a compressed ``.npz`` archive
Notes
-----
Further explanation of the `fmt` parameter
(``%[flag]width[.precision]specifier``):
flags:
``-`` : left justify
``+`` : Forces to precede result with + or -.
``0`` : Left pad the number with zeros instead of space (see width).
width:
Minimum number of characters to be printed. The value is not truncated
if it has more characters.
precision:
- For integer specifiers (eg. ``d,i,o,x``), the minimum number of
digits.
- For ``e, E`` and ``f`` specifiers, the number of digits to print
after the decimal point.
- For ``g`` and ``G``, the maximum number of significant digits.
- For ``s``, the maximum number of characters.
specifiers:
``c`` : character
``d`` or ``i`` : signed decimal integer
``e`` or ``E`` : scientific notation with ``e`` or ``E``.
``f`` : decimal floating point
``g,G`` : use the shorter of ``e,E`` or ``f``
``o`` : signed octal
``s`` : string of characters
``u`` : unsigned decimal integer
``x,X`` : unsigned hexadecimal integer
This explanation of ``fmt`` is not complete, for an exhaustive
specification see [1]_.
References
----------
.. [1] `Format Specification Mini-Language
<https://docs.python.org/library/string.html#format-specification-mini-language>`_,
Python Documentation.
Examples
--------
>>> import numpy as np
>>> x = y = z = np.arange(0.0,5.0,1.0)
>>> np.savetxt('test.out', x, delimiter=',') # X is an array
>>> np.savetxt('test.out', (x,y,z)) # x,y,z equal sized 1D arrays
>>> np.savetxt('test.out', x, fmt='%1.4e') # use exponential notation
savez(file, *args, **kwds)
Save several arrays into a single file in uncompressed ``.npz`` format.
Provide arrays as keyword arguments to store them under the
corresponding name in the output file: ``savez(fn, x=x, y=y)``.
If arrays are specified as positional arguments, i.e., ``savez(fn,
x, y)``, their names will be `arr_0`, `arr_1`, etc.
Parameters
----------
file : file, str, or pathlib.Path
Either the filename (string) or an open file (file-like object)
where the data will be saved. If file is a string or a Path, the
``.npz`` extension will be appended to the filename if it is not
already there.
args : Arguments, optional
Arrays to save to the file. Please use keyword arguments (see
`kwds` below) to assign names to arrays. Arrays specified as
args will be named "arr_0", "arr_1", and so on.
kwds : Keyword arguments, optional
Arrays to save to the file. Each array will be saved to the
output file with its corresponding keyword name.
Returns
-------
None
See Also
--------
save : Save a single array to a binary file in NumPy format.
savetxt : Save an array to a file as plain text.
savez_compressed : Save several arrays into a compressed ``.npz`` archive
Notes
-----
The ``.npz`` file format is a zipped archive of files named after the
variables they contain. The archive is not compressed and each file
in the archive contains one variable in ``.npy`` format. For a
description of the ``.npy`` format, see :py:mod:`numpy.lib.format`.
When opening the saved ``.npz`` file with `load` a `~lib.npyio.NpzFile`
object is returned. This is a dictionary-like object which can be queried
for its list of arrays (with the ``.files`` attribute), and for the arrays
themselves.
Keys passed in `kwds` are used as filenames inside the ZIP archive.
Therefore, keys should be valid filenames; e.g., avoid keys that begin with
``/`` or contain ``.``.
When naming variables with keyword arguments, it is not possible to name a
variable ``file``, as this would cause the ``file`` argument to be defined
twice in the call to ``savez``.
Examples
--------
>>> import numpy as np
>>> from tempfile import TemporaryFile
>>> outfile = TemporaryFile()
>>> x = np.arange(10)
>>> y = np.sin(x)
Using `savez` with \*args, the arrays are saved with default names.
>>> np.savez(outfile, x, y)
>>> _ = outfile.seek(0) # Only needed to simulate closing & reopening file
>>> npzfile = np.load(outfile)
>>> npzfile.files
['arr_0', 'arr_1']
>>> npzfile['arr_0']
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Using `savez` with \**kwds, the arrays are saved with the keyword names.
>>> outfile = TemporaryFile()
>>> np.savez(outfile, x=x, y=y)
>>> _ = outfile.seek(0)
>>> npzfile = np.load(outfile)
>>> sorted(npzfile.files)
['x', 'y']
>>> npzfile['x']
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
savez_compressed(file, *args, **kwds)
Save several arrays into a single file in compressed ``.npz`` format.
Provide arrays as keyword arguments to store them under the
corresponding name in the output file: ``savez_compressed(fn, x=x, y=y)``.
If arrays are specified as positional arguments, i.e.,
``savez_compressed(fn, x, y)``, their names will be `arr_0`, `arr_1`, etc.
Parameters
----------
file : file, str, or pathlib.Path
Either the filename (string) or an open file (file-like object)
where the data will be saved. If file is a string or a Path, the
``.npz`` extension will be appended to the filename if it is not
already there.
args : Arguments, optional
Arrays to save to the file. Please use keyword arguments (see
`kwds` below) to assign names to arrays. Arrays specified as
args will be named "arr_0", "arr_1", and so on.
kwds : Keyword arguments, optional
Arrays to save to the file. Each array will be saved to the
output file with its corresponding keyword name.
Returns
-------
None
See Also
--------
numpy.save : Save a single array to a binary file in NumPy format.
numpy.savetxt : Save an array to a file as plain text.
numpy.savez : Save several arrays into an uncompressed ``.npz`` file format
numpy.load : Load the files created by savez_compressed.
Notes
-----
The ``.npz`` file format is a zipped archive of files named after the
variables they contain. The archive is compressed with
``zipfile.ZIP_DEFLATED`` and each file in the archive contains one variable
in ``.npy`` format. For a description of the ``.npy`` format, see
:py:mod:`numpy.lib.format`.
When opening the saved ``.npz`` file with `load` a `~lib.npyio.NpzFile`
object is returned. This is a dictionary-like object which can be queried
for its list of arrays (with the ``.files`` attribute), and for the arrays
themselves.
Examples
--------
>>> import numpy as np
>>> test_array = np.random.rand(3, 2)
>>> test_vector = np.random.rand(4)
>>> np.savez_compressed('/tmp/123', a=test_array, b=test_vector)
>>> loaded = np.load('/tmp/123.npz')
>>> print(np.array_equal(test_array, loaded['a']))
True
>>> print(np.array_equal(test_vector, loaded['b']))
True
searchsorted(a, v, side='left', sorter=None)
Find indices where elements should be inserted to maintain order.
Find the indices into a sorted array `a` such that, if the
corresponding elements in `v` were inserted before the indices, the
order of `a` would be preserved.
Assuming that `a` is sorted:
====== ============================
`side` returned index `i` satisfies
====== ============================
left ``a[i-1] < v <= a[i]``
right ``a[i-1] <= v < a[i]``
====== ============================
Parameters
----------
a : 1-D array_like
Input array. If `sorter` is None, then it must be sorted in
ascending order, otherwise `sorter` must be an array of indices
that sort it.
v : array_like
Values to insert into `a`.
side : {'left', 'right'}, optional
If 'left', the index of the first suitable location found is given.
If 'right', return the last such index. If there is no suitable
index, return either 0 or N (where N is the length of `a`).
sorter : 1-D array_like, optional
Optional array of integer indices that sort array a into ascending
order. They are typically the result of argsort.
.. versionadded:: 1.7.0
Returns
-------
indices : int or array of ints
Array of insertion points with the same shape as `v`,
or an integer if `v` is a scalar.
See Also
--------
sort : Return a sorted copy of an array.
histogram : Produce histogram from 1-D data.
Notes
-----
Binary search is used to find the required insertion points.
As of NumPy 1.4.0 `searchsorted` works with real/complex arrays containing
`nan` values. The enhanced sort order is documented in `sort`.
This function uses the same algorithm as the builtin python
`bisect.bisect_left` (``side='left'``) and `bisect.bisect_right`
(``side='right'``) functions, which is also vectorized
in the `v` argument.
Examples
--------
>>> import numpy as np
>>> np.searchsorted([11,12,13,14,15], 13)
2
>>> np.searchsorted([11,12,13,14,15], 13, side='right')
3
>>> np.searchsorted([11,12,13,14,15], [-10, 20, 12, 13])
array([0, 5, 1, 2])
select(condlist, choicelist, default=0)
Return an array drawn from elements in choicelist, depending on conditions.
Parameters
----------
condlist : list of bool ndarrays
The list of conditions which determine from which array in `choicelist`
the output elements are taken. When multiple conditions are satisfied,
the first one encountered in `condlist` is used.
choicelist : list of ndarrays
The list of arrays from which the output elements are taken. It has
to be of the same length as `condlist`.
default : scalar, optional
The element inserted in `output` when all conditions evaluate to False.
Returns
-------
output : ndarray
The output at position m is the m-th element of the array in
`choicelist` where the m-th element of the corresponding array in
`condlist` is True.
See Also
--------
where : Return elements from one of two arrays depending on condition.
take, choose, compress, diag, diagonal
Examples
--------
>>> import numpy as np
Beginning with an array of integers from 0 to 5 (inclusive),
elements less than ``3`` are negated, elements greater than ``3``
are squared, and elements not meeting either of these conditions
(exactly ``3``) are replaced with a `default` value of ``42``.
>>> x = np.arange(6)
>>> condlist = [x<3, x>3]
>>> choicelist = [x, x**2]
>>> np.select(condlist, choicelist, 42)
array([ 0, 1, 2, 42, 16, 25])
When multiple conditions are satisfied, the first one encountered in
`condlist` is used.
>>> condlist = [x<=4, x>3]
>>> choicelist = [x, x**2]
>>> np.select(condlist, choicelist, 55)
array([ 0, 1, 2, 3, 4, 25])
set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, suppress=None, nanstr=None, infstr=None, formatter=None, sign=None, floatmode=None, *, legacy=None, override_repr=None)
Set printing options.
These options determine the way floating point numbers, arrays and
other NumPy objects are displayed.
Parameters
----------
precision : int or None, optional
Number of digits of precision for floating point output (default 8).
May be None if `floatmode` is not `fixed`, to print as many digits as
necessary to uniquely specify the value.
threshold : int, optional
Total number of array elements which trigger summarization
rather than full repr (default 1000).
To always use the full repr without summarization, pass `sys.maxsize`.
edgeitems : int, optional
Number of array items in summary at beginning and end of
each dimension (default 3).
linewidth : int, optional
The number of characters per line for the purpose of inserting
line breaks (default 75).
suppress : bool, optional
If True, always print floating point numbers using fixed point
notation, in which case numbers equal to zero in the current precision
will print as zero. If False, then scientific notation is used when
absolute value of the smallest number is < 1e-4 or the ratio of the
maximum absolute value to the minimum is > 1e3. The default is False.
nanstr : str, optional
String representation of floating point not-a-number (default nan).
infstr : str, optional
String representation of floating point infinity (default inf).
sign : string, either '-', '+', or ' ', optional
Controls printing of the sign of floating-point types. If '+', always
print the sign of positive values. If ' ', always prints a space
(whitespace character) in the sign position of positive values. If
'-', omit the sign character of positive values. (default '-')
.. versionchanged:: 2.0
The sign parameter can now be an integer type, previously
types were floating-point types.
formatter : dict of callables, optional
If not None, the keys should indicate the type(s) that the respective
formatting function applies to. Callables should return a string.
Types that are not specified (by their corresponding keys) are handled
by the default formatters. Individual types for which a formatter
can be set are:
- 'bool'
- 'int'
- 'timedelta' : a `numpy.timedelta64`
- 'datetime' : a `numpy.datetime64`
- 'float'
- 'longfloat' : 128-bit floats
- 'complexfloat'
- 'longcomplexfloat' : composed of two 128-bit floats
- 'numpystr' : types `numpy.bytes_` and `numpy.str_`
- 'object' : `np.object_` arrays
Other keys that can be used to set a group of types at once are:
- 'all' : sets all types
- 'int_kind' : sets 'int'
- 'float_kind' : sets 'float' and 'longfloat'
- 'complex_kind' : sets 'complexfloat' and 'longcomplexfloat'
- 'str_kind' : sets 'numpystr'
floatmode : str, optional
Controls the interpretation of the `precision` option for
floating-point types. Can take the following values
(default maxprec_equal):
* 'fixed': Always print exactly `precision` fractional digits,
even if this would print more or fewer digits than
necessary to specify the value uniquely.
* 'unique': Print the minimum number of fractional digits necessary
to represent each value uniquely. Different elements may
have a different number of digits. The value of the
`precision` option is ignored.
* 'maxprec': Print at most `precision` fractional digits, but if
an element can be uniquely represented with fewer digits
only print it with that many.
* 'maxprec_equal': Print at most `precision` fractional digits,
but if every element in the array can be uniquely
represented with an equal number of fewer digits, use that
many digits for all elements.
legacy : string or `False`, optional
If set to the string ``'1.13'`` enables 1.13 legacy printing mode. This
approximates numpy 1.13 print output by including a space in the sign
position of floats and different behavior for 0d arrays. This also
enables 1.21 legacy printing mode (described below).
If set to the string ``'1.21'`` enables 1.21 legacy printing mode. This
approximates numpy 1.21 print output of complex structured dtypes
by not inserting spaces after commas that separate fields and after
colons.
If set to ``'1.25'`` approximates printing of 1.25 which mainly means
that numeric scalars are printed without their type information, e.g.
as ``3.0`` rather than ``np.float64(3.0)``.
If set to `False`, disables legacy mode.
Unrecognized strings will be ignored with a warning for forward
compatibility.
.. versionadded:: 1.14.0
.. versionchanged:: 1.22.0
.. versionchanged:: 2.0
override_repr: callable, optional
If set a passed function will be used for generating arrays' repr.
Other options will be ignored.
See Also
--------
get_printoptions, printoptions, array2string
Notes
-----
`formatter` is always reset with a call to `set_printoptions`.
Use `printoptions` as a context manager to set the values temporarily.
Examples
--------
Floating point precision can be set:
>>> import numpy as np
>>> np.set_printoptions(precision=4)
>>> np.array([1.123456789])
[1.1235]
Long arrays can be summarised:
>>> np.set_printoptions(threshold=5)
>>> np.arange(10)
array([0, 1, 2, ..., 7, 8, 9])
Small results can be suppressed:
>>> eps = np.finfo(float).eps
>>> x = np.arange(4.)
>>> x**2 - (x + eps)**2
array([-4.9304e-32, -4.4409e-16, 0.0000e+00, 0.0000e+00])
>>> np.set_printoptions(suppress=True)
>>> x**2 - (x + eps)**2
array([-0., -0., 0., 0.])
A custom formatter can be used to display array elements as desired:
>>> np.set_printoptions(formatter={'all':lambda x: 'int: '+str(-x)})
>>> x = np.arange(3)
>>> x
array([int: 0, int: -1, int: -2])
>>> np.set_printoptions() # formatter gets reset
>>> x
array([0, 1, 2])
To put back the default options, you can use:
>>> np.set_printoptions(edgeitems=3, infstr='inf',
... linewidth=75, nanstr='nan', precision=8,
... suppress=False, threshold=1000, formatter=None)
Also to temporarily override options, use `printoptions`
as a context manager:
>>> with np.printoptions(precision=2, suppress=True, threshold=5):
... np.linspace(0, 10, 10)
array([ 0. , 1.11, 2.22, ..., 7.78, 8.89, 10. ])
setbufsize(size)
Set the size of the buffer used in ufuncs.
.. versionchanged:: 2.0
The scope of setting the buffer is tied to the `numpy.errstate`
context. Exiting a ``with errstate():`` will also restore the bufsize.
Parameters
----------
size : int
Size of buffer.
Returns
-------
bufsize : int
Previous size of ufunc buffer in bytes.
Examples
--------
When exiting a `numpy.errstate` context manager the bufsize is restored:
>>> import numpy as np
>>> with np.errstate():
... np.setbufsize(4096)
... print(np.getbufsize())
...
8192
4096
>>> np.getbufsize()
8192
setdiff1d(ar1, ar2, assume_unique=False)
Find the set difference of two arrays.
Return the unique values in `ar1` that are not in `ar2`.
Parameters
----------
ar1 : array_like
Input array.
ar2 : array_like
Input comparison array.
assume_unique : bool
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. Default is False.
Returns
-------
setdiff1d : ndarray
1D array of values in `ar1` that are not in `ar2`. The result
is sorted when `assume_unique=False`, but otherwise only sorted
if the input is sorted.
Examples
--------
>>> import numpy as np
>>> a = np.array([1, 2, 3, 2, 4, 1])
>>> b = np.array([3, 4, 5, 6])
>>> np.setdiff1d(a, b)
array([1, 2])
seterr(all=None, divide=None, over=None, under=None, invalid=None)
Set how floating-point errors are handled.
Note that operations on integer scalar types (such as `int16`) are
handled like floating point, and are affected by these settings.
Parameters
----------
all : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
Set treatment for all types of floating-point errors at once:
- ignore: Take no action when the exception occurs.
- warn: Print a :exc:`RuntimeWarning` (via the Python `warnings`
module).
- raise: Raise a :exc:`FloatingPointError`.
- call: Call a function specified using the `seterrcall` function.
- print: Print a warning directly to ``stdout``.
- log: Record error in a Log object specified by `seterrcall`.
The default is not to change the current behavior.
divide : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
Treatment for division by zero.
over : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
Treatment for floating-point overflow.
under : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
Treatment for floating-point underflow.
invalid : {'ignore', 'warn', 'raise', 'call', 'print', 'log'}, optional
Treatment for invalid floating-point operation.
Returns
-------
old_settings : dict
Dictionary containing the old settings.
See also
--------
seterrcall : Set a callback function for the 'call' mode.
geterr, geterrcall, errstate
Notes
-----
The floating-point exceptions are defined in the IEEE 754 standard [1]_:
- Division by zero: infinite result obtained from finite numbers.
- Overflow: result too large to be expressed.
- Underflow: result so close to zero that some precision
was lost.
- Invalid operation: result is not an expressible number, typically
indicates that a NaN was produced.
.. [1] https://en.wikipedia.org/wiki/IEEE_754
Examples
--------
>>> import numpy as np
>>> orig_settings = np.seterr(all='ignore') # seterr to known value
>>> np.int16(32000) * np.int16(3)
30464
>>> np.seterr(over='raise')
{'divide': 'ignore', 'over': 'ignore', 'under': 'ignore', 'invalid': 'ignore'}
>>> old_settings = np.seterr(all='warn', over='raise')
>>> np.int16(32000) * np.int16(3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FloatingPointError: overflow encountered in scalar multiply
>>> old_settings = np.seterr(all='print')
>>> np.geterr()
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
>>> np.int16(32000) * np.int16(3)
30464
>>> np.seterr(**orig_settings) # restore original
{'divide': 'print', 'over': 'print', 'under': 'print', 'invalid': 'print'}
seterrcall(func)
Set the floating-point error callback function or log object.
There are two ways to capture floating-point error messages. The first
is to set the error-handler to 'call', using `seterr`. Then, set
the function to call using this function.
The second is to set the error-handler to 'log', using `seterr`.
Floating-point errors then trigger a call to the 'write' method of
the provided object.
Parameters
----------
func : callable f(err, flag) or object with write method
Function to call upon floating-point errors ('call'-mode) or
object whose 'write' method is used to log such message ('log'-mode).
The call function takes two arguments. The first is a string describing
the type of error (such as "divide by zero", "overflow", "underflow",
or "invalid value"), and the second is the status flag. The flag is a
byte, whose four least-significant bits indicate the type of error, one
of "divide", "over", "under", "invalid"::
[0 0 0 0 divide over under invalid]
In other words, ``flags = divide + 2*over + 4*under + 8*invalid``.
If an object is provided, its write method should take one argument,
a string.
Returns
-------
h : callable, log instance or None
The old error handler.
See Also
--------
seterr, geterr, geterrcall
Examples
--------
Callback upon error:
>>> def err_handler(type, flag):
... print("Floating point error (%s), with flag %s" % (type, flag))
...
>>> import numpy as np
>>> orig_handler = np.seterrcall(err_handler)
>>> orig_err = np.seterr(all='call')
>>> np.array([1, 2, 3]) / 0.0
Floating point error (divide by zero), with flag 1
array([inf, inf, inf])
>>> np.seterrcall(orig_handler)
<function err_handler at 0x...>
>>> np.seterr(**orig_err)
{'divide': 'call', 'over': 'call', 'under': 'call', 'invalid': 'call'}
Log error message:
>>> class Log:
... def write(self, msg):
... print("LOG: %s" % msg)
...
>>> log = Log()
>>> saved_handler = np.seterrcall(log)
>>> save_err = np.seterr(all='log')
>>> np.array([1, 2, 3]) / 0.0
LOG: Warning: divide by zero encountered in divide
array([inf, inf, inf])
>>> np.seterrcall(orig_handler)
<numpy.Log object at 0x...>
>>> np.seterr(**orig_err)
{'divide': 'log', 'over': 'log', 'under': 'log', 'invalid': 'log'}
setxor1d(ar1, ar2, assume_unique=False)
Find the set exclusive-or of two arrays.
Return the sorted, unique values that are in only one (not both) of the
input arrays.
Parameters
----------
ar1, ar2 : array_like
Input arrays.
assume_unique : bool
If True, the input arrays are both assumed to be unique, which
can speed up the calculation. Default is False.
Returns
-------
setxor1d : ndarray
Sorted 1D array of unique values that are in only one of the input
arrays.
Examples
--------
>>> import numpy as np
>>> a = np.array([1, 2, 3, 2, 4])
>>> b = np.array([2, 3, 5, 7, 5])
>>> np.setxor1d(a,b)
array([1, 4, 5, 7])
shape(a)
Return the shape of an array.
Parameters
----------
a : array_like
Input array.
Returns
-------
shape : tuple of ints
The elements of the shape tuple give the lengths of the
corresponding array dimensions.
See Also
--------
len : ``len(a)`` is equivalent to ``np.shape(a)[0]`` for N-D arrays with
``N>=1``.
ndarray.shape : Equivalent array method.
Examples
--------
>>> import numpy as np
>>> np.shape(np.eye(3))
(3, 3)
>>> np.shape([[1, 3]])
(1, 2)
>>> np.shape([0])
(1,)
>>> np.shape(0)
()
>>> a = np.array([(1, 2), (3, 4), (5, 6)],
... dtype=[('x', 'i4'), ('y', 'i4')])
>>> np.shape(a)
(3,)
>>> a.shape
(3,)
shares_memory(...)
shares_memory(a, b, /, max_work=None)
Determine if two arrays share memory.
.. warning::
This function can be exponentially slow for some inputs, unless
`max_work` is set to zero or a positive integer.
If in doubt, use `numpy.may_share_memory` instead.
Parameters
----------
a, b : ndarray
Input arrays
max_work : int, optional
Effort to spend on solving the overlap problem (maximum number
of candidate solutions to consider). The following special
values are recognized:
max_work=-1 (default)
The problem is solved exactly. In this case, the function returns
True only if there is an element shared between the arrays. Finding
the exact solution may take extremely long in some cases.
max_work=0
Only the memory bounds of a and b are checked.
This is equivalent to using ``may_share_memory()``.
Raises
------
numpy.exceptions.TooHardError
Exceeded max_work.
Returns
-------
out : bool
See Also
--------
may_share_memory
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2, 3, 4])
>>> np.shares_memory(x, np.array([5, 6, 7]))
False
>>> np.shares_memory(x[::2], x)
True
>>> np.shares_memory(x[::2], x[1::2])
False
Checking whether two arrays share memory is NP-complete, and
runtime may increase exponentially in the number of
dimensions. Hence, `max_work` should generally be set to a finite
number, as it is possible to construct examples that take
extremely long to run:
>>> from numpy.lib.stride_tricks import as_strided
>>> x = np.zeros([192163377], dtype=np.int8)
>>> x1 = as_strided(
... x, strides=(36674, 61119, 85569), shape=(1049, 1049, 1049))
>>> x2 = as_strided(
... x[64023025:], strides=(12223, 12224, 1), shape=(1049, 1049, 1))
>>> np.shares_memory(x1, x2, max_work=1000)
Traceback (most recent call last):
...
numpy.exceptions.TooHardError: Exceeded max_work
Running ``np.shares_memory(x1, x2)`` without `max_work` set takes
around 1 minute for this case. It is possible to find problems
that take still significantly longer.
show_config = show(mode='stdout')
Show libraries and system information on which NumPy was built
and is being used
Parameters
----------
mode : {`'stdout'`, `'dicts'`}, optional.
Indicates how to display the config information.
`'stdout'` prints to console, `'dicts'` returns a dictionary
of the configuration.
Returns
-------
out : {`dict`, `None`}
If mode is `'dicts'`, a dict is returned, else None
See Also
--------
get_include : Returns the directory containing NumPy C
header files.
Notes
-----
1. The `'stdout'` mode will give more readable
output if ``pyyaml`` is installed
show_runtime()
Print information about various resources in the system
including available intrinsic support and BLAS/LAPACK library
in use
.. versionadded:: 1.24.0
See Also
--------
show_config : Show libraries in the system on which NumPy was built.
Notes
-----
1. Information is derived with the help of `threadpoolctl <https://pypi.org/project/threadpoolctl/>`_
library if available.
2. SIMD related information is derived from ``__cpu_features__``,
``__cpu_baseline__`` and ``__cpu_dispatch__``
sinc(x)
Return the normalized sinc function.
The sinc function is equal to :math:`\sin(\pi x)/(\pi x)` for any argument
:math:`x\ne 0`. ``sinc(0)`` takes the limit value 1, making ``sinc`` not
only everywhere continuous but also infinitely differentiable.
.. note::
Note the normalization factor of ``pi`` used in the definition.
This is the most commonly used definition in signal processing.
Use ``sinc(x / np.pi)`` to obtain the unnormalized sinc function
:math:`\sin(x)/x` that is more common in mathematics.
Parameters
----------
x : ndarray
Array (possibly multi-dimensional) of values for which to calculate
``sinc(x)``.
Returns
-------
out : ndarray
``sinc(x)``, which has the same shape as the input.
Notes
-----
The name sinc is short for "sine cardinal" or "sinus cardinalis".
The sinc function is used in various signal processing applications,
including in anti-aliasing, in the construction of a Lanczos resampling
filter, and in interpolation.
For bandlimited interpolation of discrete-time signals, the ideal
interpolation kernel is proportional to the sinc function.
References
----------
.. [1] Weisstein, Eric W. "Sinc Function." From MathWorld--A Wolfram Web
Resource. https://mathworld.wolfram.com/SincFunction.html
.. [2] Wikipedia, "Sinc function",
https://en.wikipedia.org/wiki/Sinc_function
Examples
--------
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-4, 4, 41)
>>> np.sinc(x)
array([-3.89804309e-17, -4.92362781e-02, -8.40918587e-02, # may vary
-8.90384387e-02, -5.84680802e-02, 3.89804309e-17,
6.68206631e-02, 1.16434881e-01, 1.26137788e-01,
8.50444803e-02, -3.89804309e-17, -1.03943254e-01,
-1.89206682e-01, -2.16236208e-01, -1.55914881e-01,
3.89804309e-17, 2.33872321e-01, 5.04551152e-01,
7.56826729e-01, 9.35489284e-01, 1.00000000e+00,
9.35489284e-01, 7.56826729e-01, 5.04551152e-01,
2.33872321e-01, 3.89804309e-17, -1.55914881e-01,
-2.16236208e-01, -1.89206682e-01, -1.03943254e-01,
-3.89804309e-17, 8.50444803e-02, 1.26137788e-01,
1.16434881e-01, 6.68206631e-02, 3.89804309e-17,
-5.84680802e-02, -8.90384387e-02, -8.40918587e-02,
-4.92362781e-02, -3.89804309e-17])
>>> plt.plot(x, np.sinc(x))
[<matplotlib.lines.Line2D object at 0x...>]
>>> plt.title("Sinc Function")
Text(0.5, 1.0, 'Sinc Function')
>>> plt.ylabel("Amplitude")
Text(0, 0.5, 'Amplitude')
>>> plt.xlabel("X")
Text(0.5, 0, 'X')
>>> plt.show()
size(a, axis=None)
Return the number of elements along a given axis.
Parameters
----------
a : array_like
Input data.
axis : int, optional
Axis along which the elements are counted. By default, give
the total number of elements.
Returns
-------
element_count : int
Number of elements along the specified axis.
See Also
--------
shape : dimensions of array
ndarray.shape : dimensions of array
ndarray.size : number of elements in array
Examples
--------
>>> import numpy as np
>>> a = np.array([[1,2,3],[4,5,6]])
>>> np.size(a)
6
>>> np.size(a,1)
3
>>> np.size(a,0)
2
sort(a, axis=-1, kind=None, order=None, *, stable=None)
Return a sorted copy of an array.
Parameters
----------
a : array_like
Array to be sorted.
axis : int or None, optional
Axis along which to sort. If None, the array is flattened before
sorting. The default is -1, which sorts along the last axis.
kind : {'quicksort', 'mergesort', 'heapsort', 'stable'}, optional
Sorting algorithm. The default is 'quicksort'. Note that both 'stable'
and 'mergesort' use timsort or radix sort under the covers and,
in general, the actual implementation will vary with data type.
The 'mergesort' option is retained for backwards compatibility.
.. versionchanged:: 1.15.0.
The 'stable' option was added.
order : str or list of str, optional
When `a` is an array with fields defined, this argument specifies
which fields to compare first, second, etc. A single field can
be specified as a string, and not all fields need be specified,
but unspecified fields will still be used, in the order in which
they come up in the dtype, to break ties.
stable : bool, optional
Sort stability. If ``True``, the returned array will maintain
the relative order of ``a`` values which compare as equal.
If ``False`` or ``None``, this is not guaranteed. Internally,
this option selects ``kind='stable'``. Default: ``None``.
.. versionadded:: 2.0.0
Returns
-------
sorted_array : ndarray
Array of the same type and shape as `a`.
See Also
--------
ndarray.sort : Method to sort an array in-place.
argsort : Indirect sort.
lexsort : Indirect stable sort on multiple keys.
searchsorted : Find elements in a sorted array.
partition : Partial sort.
Notes
-----
The various sorting algorithms are characterized by their average speed,
worst case performance, work space size, and whether they are stable. A
stable sort keeps items with the same key in the same relative
order. The four algorithms implemented in NumPy have the following
properties:
=========== ======= ============= ============ ========
kind speed worst case work space stable
=========== ======= ============= ============ ========
'quicksort' 1 O(n^2) 0 no
'heapsort' 3 O(n*log(n)) 0 no
'mergesort' 2 O(n*log(n)) ~n/2 yes
'timsort' 2 O(n*log(n)) ~n/2 yes
=========== ======= ============= ============ ========
.. note:: The datatype determines which of 'mergesort' or 'timsort'
is actually used, even if 'mergesort' is specified. User selection
at a finer scale is not currently available.
For performance, ``sort`` makes a temporary copy if needed to make the data
`contiguous <https://numpy.org/doc/stable/glossary.html#term-contiguous>`_
in memory along the sort axis. For even better performance and reduced
memory consumption, ensure that the array is already contiguous along the
sort axis.
The sort order for complex numbers is lexicographic. If both the real
and imaginary parts are non-nan then the order is determined by the
real parts except when they are equal, in which case the order is
determined by the imaginary parts.
Previous to numpy 1.4.0 sorting real and complex arrays containing nan
values led to undefined behaviour. In numpy versions >= 1.4.0 nan
values are sorted to the end. The extended sort order is:
* Real: [R, nan]
* Complex: [R + Rj, R + nanj, nan + Rj, nan + nanj]
where R is a non-nan real value. Complex values with the same nan
placements are sorted according to the non-nan part if it exists.
Non-nan values are sorted as before.
.. versionadded:: 1.12.0
quicksort has been changed to:
`introsort <https://en.wikipedia.org/wiki/Introsort>`_.
When sorting does not make enough progress it switches to
`heapsort <https://en.wikipedia.org/wiki/Heapsort>`_.
This implementation makes quicksort O(n*log(n)) in the worst case.
'stable' automatically chooses the best stable sorting algorithm
for the data type being sorted.
It, along with 'mergesort' is currently mapped to
`timsort <https://en.wikipedia.org/wiki/Timsort>`_
or `radix sort <https://en.wikipedia.org/wiki/Radix_sort>`_
depending on the data type.
API forward compatibility currently limits the
ability to select the implementation and it is hardwired for the different
data types.
.. versionadded:: 1.17.0
Timsort is added for better performance on already or nearly
sorted data. On random data timsort is almost identical to
mergesort. It is now used for stable sort while quicksort is still the
default sort if none is chosen. For timsort details, refer to
`CPython listsort.txt
<https://github.com/python/cpython/blob/3.7/Objects/listsort.txt>`_
'mergesort' and 'stable' are mapped to radix sort for integer data types.
Radix sort is an O(n) sort instead of O(n log n).
.. versionchanged:: 1.18.0
NaT now sorts to the end of arrays for consistency with NaN.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1,4],[3,1]])
>>> np.sort(a) # sort along the last axis
array([[1, 4],
[1, 3]])
>>> np.sort(a, axis=None) # sort the flattened array
array([1, 1, 3, 4])
>>> np.sort(a, axis=0) # sort along the first axis
array([[1, 1],
[3, 4]])
Use the `order` keyword to specify a field to use when sorting a
structured array:
>>> dtype = [('name', 'S10'), ('height', float), ('age', int)]
>>> values = [('Arthur', 1.8, 41), ('Lancelot', 1.9, 38),
... ('Galahad', 1.7, 38)]
>>> a = np.array(values, dtype=dtype) # create a structured array
>>> np.sort(a, order='height') # doctest: +SKIP
array([('Galahad', 1.7, 38), ('Arthur', 1.8, 41),
('Lancelot', 1.8999999999999999, 38)],
dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])
Sort by age, then height if ages are equal:
>>> np.sort(a, order=['age', 'height']) # doctest: +SKIP
array([('Galahad', 1.7, 38), ('Lancelot', 1.8999999999999999, 38),
('Arthur', 1.8, 41)],
dtype=[('name', '|S10'), ('height', '<f8'), ('age', '<i4')])
sort_complex(a)
Sort a complex array using the real part first, then the imaginary part.
Parameters
----------
a : array_like
Input array
Returns
-------
out : complex ndarray
Always returns a sorted complex array.
Examples
--------
>>> import numpy as np
>>> np.sort_complex([5, 3, 6, 2, 1])
array([1.+0.j, 2.+0.j, 3.+0.j, 5.+0.j, 6.+0.j])
>>> np.sort_complex([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])
array([1.+2.j, 2.-1.j, 3.-3.j, 3.-2.j, 3.+5.j])
split(ary, indices_or_sections, axis=0)
Split an array into multiple sub-arrays as views into `ary`.
Parameters
----------
ary : ndarray
Array to be divided into sub-arrays.
indices_or_sections : int or 1-D array
If `indices_or_sections` is an integer, N, the array will be divided
into N equal arrays along `axis`. If such a split is not possible,
an error is raised.
If `indices_or_sections` is a 1-D array of sorted integers, the entries
indicate where along `axis` the array is split. For example,
``[2, 3]`` would, for ``axis=0``, result in
- ary[:2]
- ary[2:3]
- ary[3:]
If an index exceeds the dimension of the array along `axis`,
an empty sub-array is returned correspondingly.
axis : int, optional
The axis along which to split, default is 0.
Returns
-------
sub-arrays : list of ndarrays
A list of sub-arrays as views into `ary`.
Raises
------
ValueError
If `indices_or_sections` is given as an integer, but
a split does not result in equal division.
See Also
--------
array_split : Split an array into multiple sub-arrays of equal or
near-equal size. Does not raise an exception if
an equal division cannot be made.
hsplit : Split array into multiple sub-arrays horizontally (column-wise).
vsplit : Split array into multiple sub-arrays vertically (row wise).
dsplit : Split array into multiple sub-arrays along the 3rd axis (depth).
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
hstack : Stack arrays in sequence horizontally (column wise).
vstack : Stack arrays in sequence vertically (row wise).
dstack : Stack arrays in sequence depth wise (along third dimension).
Examples
--------
>>> import numpy as np
>>> x = np.arange(9.0)
>>> np.split(x, 3)
[array([0., 1., 2.]), array([3., 4., 5.]), array([6., 7., 8.])]
>>> x = np.arange(8.0)
>>> np.split(x, [3, 5, 6, 10])
[array([0., 1., 2.]),
array([3., 4.]),
array([5.]),
array([6., 7.]),
array([], dtype=float64)]
squeeze(a, axis=None)
Remove axes of length one from `a`.
Parameters
----------
a : array_like
Input data.
axis : None or int or tuple of ints, optional
.. versionadded:: 1.7.0
Selects a subset of the entries of length one in the
shape. If an axis is selected with shape entry greater than
one, an error is raised.
Returns
-------
squeezed : ndarray
The input array, but with all or a subset of the
dimensions of length 1 removed. This is always `a` itself
or a view into `a`. Note that if all axes are squeezed,
the result is a 0d array and not a scalar.
Raises
------
ValueError
If `axis` is not None, and an axis being squeezed is not of length 1
See Also
--------
expand_dims : The inverse operation, adding entries of length one
reshape : Insert, remove, and combine dimensions, and resize existing ones
Examples
--------
>>> import numpy as np
>>> x = np.array([[[0], [1], [2]]])
>>> x.shape
(1, 3, 1)
>>> np.squeeze(x).shape
(3,)
>>> np.squeeze(x, axis=0).shape
(3, 1)
>>> np.squeeze(x, axis=1).shape
Traceback (most recent call last):
...
ValueError: cannot select an axis to squeeze out which has size
not equal to one
>>> np.squeeze(x, axis=2).shape
(1, 3)
>>> x = np.array([[1234]])
>>> x.shape
(1, 1)
>>> np.squeeze(x)
array(1234) # 0d array
>>> np.squeeze(x).shape
()
>>> np.squeeze(x)[()]
1234
stack(arrays, axis=0, out=None, *, dtype=None, casting='same_kind')
Join a sequence of arrays along a new axis.
The ``axis`` parameter specifies the index of the new axis in the
dimensions of the result. For example, if ``axis=0`` it will be the first
dimension and if ``axis=-1`` it will be the last dimension.
.. versionadded:: 1.10.0
Parameters
----------
arrays : sequence of array_like
Each array must have the same shape.
axis : int, optional
The axis in the result array along which the input arrays are stacked.
out : ndarray, optional
If provided, the destination to place the result. The shape must be
correct, matching that of what stack would have returned if no
out argument were specified.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.24
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
.. versionadded:: 1.24
Returns
-------
stacked : ndarray
The stacked array has one more dimension than the input arrays.
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
block : Assemble an nd-array from nested lists of blocks.
split : Split array into a list of multiple sub-arrays of equal size.
unstack : Split an array into a tuple of sub-arrays along an axis.
Examples
--------
>>> import numpy as np
>>> rng = np.random.default_rng()
>>> arrays = [rng.normal(size=(3,4)) for _ in range(10)]
>>> np.stack(arrays, axis=0).shape
(10, 3, 4)
>>> np.stack(arrays, axis=1).shape
(3, 10, 4)
>>> np.stack(arrays, axis=2).shape
(3, 4, 10)
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> np.stack((a, b))
array([[1, 2, 3],
[4, 5, 6]])
>>> np.stack((a, b), axis=-1)
array([[1, 4],
[2, 5],
[3, 6]])
std(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>, mean=<no value>, correction=<no value>)
Compute the standard deviation along the specified axis.
Returns the standard deviation, a measure of the spread of a distribution,
of the array elements. The standard deviation is computed for the
flattened array by default, otherwise over the specified axis.
Parameters
----------
a : array_like
Calculate the standard deviation of these values.
axis : None or int or tuple of ints, optional
Axis or axes along which the standard deviation is computed. The
default is to compute the standard deviation of the flattened array.
.. versionadded:: 1.7.0
If this is a tuple of ints, a standard deviation is performed over
multiple axes, instead of a single axis or all the axes as before.
dtype : dtype, optional
Type to use in computing the standard deviation. For arrays of
integer type the default is float64, for arrays of float types it is
the same as the array type.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape as the expected output but the type (of the calculated
values) will be cast if necessary.
See :ref:`ufuncs-output-type` for more details.
ddof : {int, float}, optional
Means Delta Degrees of Freedom. The divisor used in calculations
is ``N - ddof``, where ``N`` represents the number of elements.
By default `ddof` is zero. See Notes for details about use of `ddof`.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `std` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
where : array_like of bool, optional
Elements to include in the standard deviation.
See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.20.0
mean : array_like, optional
Provide the mean to prevent its recalculation. The mean should have
a shape as if it was calculated with ``keepdims=True``.
The axis for the calculation of the mean should be the same as used in
the call to this std function.
.. versionadded:: 1.26.0
correction : {int, float}, optional
Array API compatible name for the ``ddof`` parameter. Only one of them
can be provided at the same time.
.. versionadded:: 2.0.0
Returns
-------
standard_deviation : ndarray, see dtype parameter above.
If `out` is None, return a new array containing the standard deviation,
otherwise return a reference to the output array.
See Also
--------
var, mean, nanmean, nanstd, nanvar
:ref:`ufuncs-output-type`
Notes
-----
There are several common variants of the array standard deviation
calculation. Assuming the input `a` is a one-dimensional NumPy array
and ``mean`` is either provided as an argument or computed as
``a.mean()``, NumPy computes the standard deviation of an array as::
N = len(a)
d2 = abs(a - mean)**2 # abs is for complex `a`
var = d2.sum() / (N - ddof) # note use of `ddof`
std = var**0.5
Different values of the argument `ddof` are useful in different
contexts. NumPy's default ``ddof=0`` corresponds with the expression:
.. math::
\sqrt{\frac{\sum_i{|a_i - \bar{a}|^2 }}{N}}
which is sometimes called the "population standard deviation" in the field
of statistics because it applies the definition of standard deviation to
`a` as if `a` were a complete population of possible observations.
Many other libraries define the standard deviation of an array
differently, e.g.:
.. math::
\sqrt{\frac{\sum_i{|a_i - \bar{a}|^2 }}{N - 1}}
In statistics, the resulting quantity is sometimed called the "sample
standard deviation" because if `a` is a random sample from a larger
population, this calculation provides the square root of an unbiased
estimate of the variance of the population. The use of :math:`N-1` in the
denominator is often called "Bessel's correction" because it corrects for
bias (toward lower values) in the variance estimate introduced when the
sample mean of `a` is used in place of the true mean of the population.
The resulting estimate of the standard deviation is still biased, but less
than it would have been without the correction. For this quantity, use
``ddof=1``.
Note that, for complex numbers, `std` takes the absolute
value before squaring, so that the result is always real and nonnegative.
For floating-point input, the standard deviation is computed using the same
precision the input has. Depending on the input data, this can cause
the results to be inaccurate, especially for float32 (see example below).
Specifying a higher-accuracy accumulator using the `dtype` keyword can
alleviate this issue.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> np.std(a)
1.1180339887498949 # may vary
>>> np.std(a, axis=0)
array([1., 1.])
>>> np.std(a, axis=1)
array([0.5, 0.5])
In single precision, std() can be inaccurate:
>>> a = np.zeros((2, 512*512), dtype=np.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> np.std(a)
0.45000005
Computing the standard deviation in float64 is more accurate:
>>> np.std(a, dtype=np.float64)
0.44999999925494177 # may vary
Specifying a where argument:
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> np.std(a)
2.614064523559687 # may vary
>>> np.std(a, where=[[True], [True], [False]])
2.0
Using the mean keyword to save computation time:
>>> import numpy as np
>>> from timeit import timeit
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> mean = np.mean(a, axis=1, keepdims=True)
>>>
>>> g = globals()
>>> n = 10000
>>> t1 = timeit("std = np.std(a, axis=1, mean=mean)", globals=g, number=n)
>>> t2 = timeit("std = np.std(a, axis=1)", globals=g, number=n)
>>> print(f'Percentage execution time saved {100*(t2-t1)/t2:.0f}%')
#doctest: +SKIP
Percentage execution time saved 30%
sum(a, axis=None, dtype=None, out=None, keepdims=<no value>, initial=<no value>, where=<no value>)
Sum of array elements over a given axis.
Parameters
----------
a : array_like
Elements to sum.
axis : None or int or tuple of ints, optional
Axis or axes along which a sum is performed. The default,
axis=None, will sum all of the elements of the input array. If
axis is negative it counts from the last to the first axis.
.. versionadded:: 1.7.0
If axis is a tuple of ints, a sum is performed on all of the axes
specified in the tuple instead of a single axis or all the axes as
before.
dtype : dtype, optional
The type of the returned array and of the accumulator in which the
elements are summed. The dtype of `a` is used by default unless `a`
has an integer dtype of less precision than the default platform
integer. In that case, if `a` is signed then the platform integer
is used while if `a` is unsigned then an unsigned integer of the
same precision as the platform integer is used.
out : ndarray, optional
Alternative output array in which to place the result. It must have
the same shape as the expected output, but the type of the output
values will be cast if necessary.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `sum` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
initial : scalar, optional
Starting value for the sum. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.15.0
where : array_like of bool, optional
Elements to include in the sum. See `~numpy.ufunc.reduce` for details.
.. versionadded:: 1.17.0
Returns
-------
sum_along_axis : ndarray
An array with the same shape as `a`, with the specified
axis removed. If `a` is a 0-d array, or if `axis` is None, a scalar
is returned. If an output array is specified, a reference to
`out` is returned.
See Also
--------
ndarray.sum : Equivalent method.
add: ``numpy.add.reduce`` equivalent function.
cumsum : Cumulative sum of array elements.
trapezoid : Integration of array values using composite trapezoidal rule.
mean, average
Notes
-----
Arithmetic is modular when using integer types, and no error is
raised on overflow.
The sum of an empty array is the neutral element 0:
>>> np.sum([])
0.0
For floating point numbers the numerical precision of sum (and
``np.add.reduce``) is in general limited by directly adding each number
individually to the result causing rounding errors in every step.
However, often numpy will use a numerically better approach (partial
pairwise summation) leading to improved precision in many use-cases.
This improved precision is always provided when no ``axis`` is given.
When ``axis`` is given, it will depend on which axis is summed.
Technically, to provide the best speed possible, the improved precision
is only used when the summation is along the fast axis in memory.
Note that the exact precision may vary depending on other parameters.
In contrast to NumPy, Python's ``math.fsum`` function uses a slower but
more precise approach to summation.
Especially when summing a large number of lower precision floating point
numbers, such as ``float32``, numerical errors can become significant.
In such cases it can be advisable to use `dtype="float64"` to use a higher
precision for the output.
Examples
--------
>>> import numpy as np
>>> np.sum([0.5, 1.5])
2.0
>>> np.sum([0.5, 0.7, 0.2, 1.5], dtype=np.int32)
1
>>> np.sum([[0, 1], [0, 5]])
6
>>> np.sum([[0, 1], [0, 5]], axis=0)
array([0, 6])
>>> np.sum([[0, 1], [0, 5]], axis=1)
array([1, 5])
>>> np.sum([[0, 1], [np.nan, 5]], where=[False, True], axis=1)
array([1., 5.])
If the accumulator is too small, overflow occurs:
>>> np.ones(128, dtype=np.int8).sum(dtype=np.int8)
-128
You can also start the sum with a value other than zero:
>>> np.sum([10], initial=5)
15
swapaxes(a, axis1, axis2)
Interchange two axes of an array.
Parameters
----------
a : array_like
Input array.
axis1 : int
First axis.
axis2 : int
Second axis.
Returns
-------
a_swapped : ndarray
For NumPy >= 1.10.0, if `a` is an ndarray, then a view of `a` is
returned; otherwise a new array is created. For earlier NumPy
versions a view of `a` is returned only if the order of the
axes is changed, otherwise the input array is returned.
Examples
--------
>>> import numpy as np
>>> x = np.array([[1,2,3]])
>>> np.swapaxes(x,0,1)
array([[1],
[2],
[3]])
>>> x = np.array([[[0,1],[2,3]],[[4,5],[6,7]]])
>>> x
array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
>>> np.swapaxes(x,0,2)
array([[[0, 4],
[2, 6]],
[[1, 5],
[3, 7]]])
take(a, indices, axis=None, out=None, mode='raise')
Take elements from an array along an axis.
When axis is not None, this function does the same thing as "fancy"
indexing (indexing arrays using arrays); however, it can be easier to use
if you need elements along a given axis. A call such as
``np.take(arr, indices, axis=3)`` is equivalent to
``arr[:,:,:,indices,...]``.
Explained without fancy indexing, this is equivalent to the following use
of `ndindex`, which sets each of ``ii``, ``jj``, and ``kk`` to a tuple of
indices::
Ni, Nk = a.shape[:axis], a.shape[axis+1:]
Nj = indices.shape
for ii in ndindex(Ni):
for jj in ndindex(Nj):
for kk in ndindex(Nk):
out[ii + jj + kk] = a[ii + (indices[jj],) + kk]
Parameters
----------
a : array_like (Ni..., M, Nk...)
The source array.
indices : array_like (Nj...)
The indices of the values to extract.
.. versionadded:: 1.8.0
Also allow scalars for indices.
axis : int, optional
The axis over which to select values. By default, the flattened
input array is used.
out : ndarray, optional (Ni..., Nj..., Nk...)
If provided, the result will be placed in this array. It should
be of the appropriate shape and dtype. Note that `out` is always
buffered if `mode='raise'`; use other modes for better performance.
mode : {'raise', 'wrap', 'clip'}, optional
Specifies how out-of-bounds indices will behave.
* 'raise' -- raise an error (default)
* 'wrap' -- wrap around
* 'clip' -- clip to the range
'clip' mode means that all indices that are too large are replaced
by the index that addresses the last element along that axis. Note
that this disables indexing with negative numbers.
Returns
-------
out : ndarray (Ni..., Nj..., Nk...)
The returned array has the same type as `a`.
See Also
--------
compress : Take elements using a boolean mask
ndarray.take : equivalent method
take_along_axis : Take elements by matching the array and the index arrays
Notes
-----
By eliminating the inner loop in the description above, and using `s_` to
build simple slice objects, `take` can be expressed in terms of applying
fancy indexing to each 1-d slice::
Ni, Nk = a.shape[:axis], a.shape[axis+1:]
for ii in ndindex(Ni):
for kk in ndindex(Nj):
out[ii + s_[...,] + kk] = a[ii + s_[:,] + kk][indices]
For this reason, it is equivalent to (but faster than) the following use
of `apply_along_axis`::
out = np.apply_along_axis(lambda a_1d: a_1d[indices], axis, a)
Examples
--------
>>> import numpy as np
>>> a = [4, 3, 5, 7, 6, 8]
>>> indices = [0, 1, 4]
>>> np.take(a, indices)
array([4, 3, 6])
In this example if `a` is an ndarray, "fancy" indexing can be used.
>>> a = np.array(a)
>>> a[indices]
array([4, 3, 6])
If `indices` is not one dimensional, the output also has these dimensions.
>>> np.take(a, [[0, 1], [2, 3]])
array([[4, 3],
[5, 7]])
take_along_axis(arr, indices, axis)
Take values from the input array by matching 1d index and data slices.
This iterates over matching 1d slices oriented along the specified axis in
the index and data arrays, and uses the former to look up values in the
latter. These slices can be different lengths.
Functions returning an index along an axis, like `argsort` and
`argpartition`, produce suitable indices for this function.
.. versionadded:: 1.15.0
Parameters
----------
arr : ndarray (Ni..., M, Nk...)
Source array
indices : ndarray (Ni..., J, Nk...)
Indices to take along each 1d slice of `arr`. This must match the
dimension of arr, but dimensions Ni and Nj only need to broadcast
against `arr`.
axis : int
The axis to take 1d slices along. If axis is None, the input array is
treated as if it had first been flattened to 1d, for consistency with
`sort` and `argsort`.
Returns
-------
out: ndarray (Ni..., J, Nk...)
The indexed result.
Notes
-----
This is equivalent to (but faster than) the following use of `ndindex` and
`s_`, which sets each of ``ii`` and ``kk`` to a tuple of indices::
Ni, M, Nk = a.shape[:axis], a.shape[axis], a.shape[axis+1:]
J = indices.shape[axis] # Need not equal M
out = np.empty(Ni + (J,) + Nk)
for ii in ndindex(Ni):
for kk in ndindex(Nk):
a_1d = a [ii + s_[:,] + kk]
indices_1d = indices[ii + s_[:,] + kk]
out_1d = out [ii + s_[:,] + kk]
for j in range(J):
out_1d[j] = a_1d[indices_1d[j]]
Equivalently, eliminating the inner loop, the last two lines would be::
out_1d[:] = a_1d[indices_1d]
See Also
--------
take : Take along an axis, using the same indices for every 1d slice
put_along_axis :
Put values into the destination array by matching 1d index and data slices
Examples
--------
>>> import numpy as np
For this sample array
>>> a = np.array([[10, 30, 20], [60, 40, 50]])
We can sort either by using sort directly, or argsort and this function
>>> np.sort(a, axis=1)
array([[10, 20, 30],
[40, 50, 60]])
>>> ai = np.argsort(a, axis=1)
>>> ai
array([[0, 2, 1],
[1, 2, 0]])
>>> np.take_along_axis(a, ai, axis=1)
array([[10, 20, 30],
[40, 50, 60]])
The same works for max and min, if you maintain the trivial dimension
with ``keepdims``:
>>> np.max(a, axis=1, keepdims=True)
array([[30],
[60]])
>>> ai = np.argmax(a, axis=1, keepdims=True)
>>> ai
array([[1],
[0]])
>>> np.take_along_axis(a, ai, axis=1)
array([[30],
[60]])
If we want to get the max and min at the same time, we can stack the
indices first
>>> ai_min = np.argmin(a, axis=1, keepdims=True)
>>> ai_max = np.argmax(a, axis=1, keepdims=True)
>>> ai = np.concatenate([ai_min, ai_max], axis=1)
>>> ai
array([[0, 1],
[1, 0]])
>>> np.take_along_axis(a, ai, axis=1)
array([[10, 30],
[40, 60]])
tensordot(a, b, axes=2)
Compute tensor dot product along specified axes.
Given two tensors, `a` and `b`, and an array_like object containing
two array_like objects, ``(a_axes, b_axes)``, sum the products of
`a`'s and `b`'s elements (components) over the axes specified by
``a_axes`` and ``b_axes``. The third argument can be a single non-negative
integer_like scalar, ``N``; if it is such, then the last ``N`` dimensions
of `a` and the first ``N`` dimensions of `b` are summed over.
Parameters
----------
a, b : array_like
Tensors to "dot".
axes : int or (2,) array_like
* integer_like
If an int N, sum over the last N axes of `a` and the first N axes
of `b` in order. The sizes of the corresponding axes must match.
* (2,) array_like
Or, a list of axes to be summed over, first sequence applying to `a`,
second to `b`. Both elements array_like must be of the same length.
Returns
-------
output : ndarray
The tensor dot product of the input.
See Also
--------
dot, einsum
Notes
-----
Three common use cases are:
* ``axes = 0`` : tensor product :math:`a\otimes b`
* ``axes = 1`` : tensor dot product :math:`a\cdot b`
* ``axes = 2`` : (default) tensor double contraction :math:`a:b`
When `axes` is a positive integer ``N``, the operation starts with
axis ``-N`` of `a` and axis ``0`` of `b`, and it continues through
axis ``-1`` of `a` and axis ``N-1`` of `b` (inclusive).
When there is more than one axis to sum over - and they are not the last
(first) axes of `a` (`b`) - the argument `axes` should consist of
two sequences of the same length, with the first axis to sum over given
first in both sequences, the second axis second, and so forth.
The shape of the result consists of the non-contracted axes of the
first tensor, followed by the non-contracted axes of the second.
Examples
--------
A "traditional" example:
>>> import numpy as np
>>> a = np.arange(60.).reshape(3,4,5)
>>> b = np.arange(24.).reshape(4,3,2)
>>> c = np.tensordot(a,b, axes=([1,0],[0,1]))
>>> c.shape
(5, 2)
>>> c
array([[4400., 4730.],
[4532., 4874.],
[4664., 5018.],
[4796., 5162.],
[4928., 5306.]])
>>> # A slower but equivalent way of computing the same...
>>> d = np.zeros((5,2))
>>> for i in range(5):
... for j in range(2):
... for k in range(3):
... for n in range(4):
... d[i,j] += a[k,n,i] * b[n,k,j]
>>> c == d
array([[ True, True],
[ True, True],
[ True, True],
[ True, True],
[ True, True]])
An extended example taking advantage of the overloading of + and \*:
>>> a = np.array(range(1, 9))
>>> a.shape = (2, 2, 2)
>>> A = np.array(('a', 'b', 'c', 'd'), dtype=object)
>>> A.shape = (2, 2)
>>> a; A
array([[[1, 2],
[3, 4]],
[[5, 6],
[7, 8]]])
array([['a', 'b'],
['c', 'd']], dtype=object)
>>> np.tensordot(a, A) # third argument default is 2 for double-contraction
array(['abbcccdddd', 'aaaaabbbbbbcccccccdddddddd'], dtype=object)
>>> np.tensordot(a, A, 1)
array([[['acc', 'bdd'],
['aaacccc', 'bbbdddd']],
[['aaaaacccccc', 'bbbbbdddddd'],
['aaaaaaacccccccc', 'bbbbbbbdddddddd']]], dtype=object)
>>> np.tensordot(a, A, 0) # tensor product (result too long to incl.)
array([[[[['a', 'b'],
['c', 'd']],
...
>>> np.tensordot(a, A, (0, 1))
array([[['abbbbb', 'cddddd'],
['aabbbbbb', 'ccdddddd']],
[['aaabbbbbbb', 'cccddddddd'],
['aaaabbbbbbbb', 'ccccdddddddd']]], dtype=object)
>>> np.tensordot(a, A, (2, 1))
array([[['abb', 'cdd'],
['aaabbbb', 'cccdddd']],
[['aaaaabbbbbb', 'cccccdddddd'],
['aaaaaaabbbbbbbb', 'cccccccdddddddd']]], dtype=object)
>>> np.tensordot(a, A, ((0, 1), (0, 1)))
array(['abbbcccccddddddd', 'aabbbbccccccdddddddd'], dtype=object)
>>> np.tensordot(a, A, ((2, 1), (1, 0)))
array(['acccbbdddd', 'aaaaacccccccbbbbbbdddddddd'], dtype=object)
tile(A, reps)
Construct an array by repeating A the number of times given by reps.
If `reps` has length ``d``, the result will have dimension of
``max(d, A.ndim)``.
If ``A.ndim < d``, `A` is promoted to be d-dimensional by prepending new
axes. So a shape (3,) array is promoted to (1, 3) for 2-D replication,
or shape (1, 1, 3) for 3-D replication. If this is not the desired
behavior, promote `A` to d-dimensions manually before calling this
function.
If ``A.ndim > d``, `reps` is promoted to `A`.ndim by prepending 1's to it.
Thus for an `A` of shape (2, 3, 4, 5), a `reps` of (2, 2) is treated as
(1, 1, 2, 2).
Note : Although tile may be used for broadcasting, it is strongly
recommended to use numpy's broadcasting operations and functions.
Parameters
----------
A : array_like
The input array.
reps : array_like
The number of repetitions of `A` along each axis.
Returns
-------
c : ndarray
The tiled output array.
See Also
--------
repeat : Repeat elements of an array.
broadcast_to : Broadcast an array to a new shape
Examples
--------
>>> import numpy as np
>>> a = np.array([0, 1, 2])
>>> np.tile(a, 2)
array([0, 1, 2, 0, 1, 2])
>>> np.tile(a, (2, 2))
array([[0, 1, 2, 0, 1, 2],
[0, 1, 2, 0, 1, 2]])
>>> np.tile(a, (2, 1, 2))
array([[[0, 1, 2, 0, 1, 2]],
[[0, 1, 2, 0, 1, 2]]])
>>> b = np.array([[1, 2], [3, 4]])
>>> np.tile(b, 2)
array([[1, 2, 1, 2],
[3, 4, 3, 4]])
>>> np.tile(b, (2, 1))
array([[1, 2],
[3, 4],
[1, 2],
[3, 4]])
>>> c = np.array([1,2,3,4])
>>> np.tile(c,(4,1))
array([[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4],
[1, 2, 3, 4]])
trace(a, offset=0, axis1=0, axis2=1, dtype=None, out=None)
Return the sum along diagonals of the array.
If `a` is 2-D, the sum along its diagonal with the given offset
is returned, i.e., the sum of elements ``a[i,i+offset]`` for all i.
If `a` has more than two dimensions, then the axes specified by axis1 and
axis2 are used to determine the 2-D sub-arrays whose traces are returned.
The shape of the resulting array is the same as that of `a` with `axis1`
and `axis2` removed.
Parameters
----------
a : array_like
Input array, from which the diagonals are taken.
offset : int, optional
Offset of the diagonal from the main diagonal. Can be both positive
and negative. Defaults to 0.
axis1, axis2 : int, optional
Axes to be used as the first and second axis of the 2-D sub-arrays
from which the diagonals should be taken. Defaults are the first two
axes of `a`.
dtype : dtype, optional
Determines the data-type of the returned array and of the accumulator
where the elements are summed. If dtype has the value None and `a` is
of integer type of precision less than the default integer
precision, then the default integer precision is used. Otherwise,
the precision is the same as that of `a`.
out : ndarray, optional
Array into which the output is placed. Its type is preserved and
it must be of the right shape to hold the output.
Returns
-------
sum_along_diagonals : ndarray
If `a` is 2-D, the sum along the diagonal is returned. If `a` has
larger dimensions, then an array of sums along diagonals is returned.
See Also
--------
diag, diagonal, diagflat
Examples
--------
>>> import numpy as np
>>> np.trace(np.eye(3))
3.0
>>> a = np.arange(8).reshape((2,2,2))
>>> np.trace(a)
array([6, 8])
>>> a = np.arange(24).reshape((2,2,2,3))
>>> np.trace(a).shape
(2, 3)
transpose(a, axes=None)
Returns an array with axes transposed.
For a 1-D array, this returns an unchanged view of the original array, as a
transposed vector is simply the same vector.
To convert a 1-D array into a 2-D column vector, an additional dimension
must be added, e.g., ``np.atleast_2d(a).T`` achieves this, as does
``a[:, np.newaxis]``.
For a 2-D array, this is the standard matrix transpose.
For an n-D array, if axes are given, their order indicates how the
axes are permuted (see Examples). If axes are not provided, then
``transpose(a).shape == a.shape[::-1]``.
Parameters
----------
a : array_like
Input array.
axes : tuple or list of ints, optional
If specified, it must be a tuple or list which contains a permutation
of [0,1,...,N-1] where N is the number of axes of `a`. The `i`'th axis
of the returned array will correspond to the axis numbered ``axes[i]``
of the input. If not specified, defaults to ``range(a.ndim)[::-1]``,
which reverses the order of the axes.
Returns
-------
p : ndarray
`a` with its axes permuted. A view is returned whenever possible.
See Also
--------
ndarray.transpose : Equivalent method.
moveaxis : Move axes of an array to new positions.
argsort : Return the indices that would sort an array.
Notes
-----
Use ``transpose(a, argsort(axes))`` to invert the transposition of tensors
when using the `axes` keyword argument.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> a
array([[1, 2],
[3, 4]])
>>> np.transpose(a)
array([[1, 3],
[2, 4]])
>>> a = np.array([1, 2, 3, 4])
>>> a
array([1, 2, 3, 4])
>>> np.transpose(a)
array([1, 2, 3, 4])
>>> a = np.ones((1, 2, 3))
>>> np.transpose(a, (1, 0, 2)).shape
(2, 1, 3)
>>> a = np.ones((2, 3, 4, 5))
>>> np.transpose(a).shape
(5, 4, 3, 2)
trapezoid(y, x=None, dx=1.0, axis=-1)
Integrate along the given axis using the composite trapezoidal rule.
If `x` is provided, the integration happens in sequence along its
elements - they are not sorted.
Integrate `y` (`x`) along each 1d slice on the given axis, compute
:math:`\int y(x) dx`.
When `x` is specified, this integrates along the parametric curve,
computing :math:`\int_t y(t) dt =
\int_t y(t) \left.\frac{dx}{dt}\right|_{x=x(t)} dt`.
.. versionadded:: 2.0.0
Parameters
----------
y : array_like
Input array to integrate.
x : array_like, optional
The sample points corresponding to the `y` values. If `x` is None,
the sample points are assumed to be evenly spaced `dx` apart. The
default is None.
dx : scalar, optional
The spacing between sample points when `x` is None. The default is 1.
axis : int, optional
The axis along which to integrate.
Returns
-------
trapezoid : float or ndarray
Definite integral of `y` = n-dimensional array as approximated along
a single axis by the trapezoidal rule. If `y` is a 1-dimensional array,
then the result is a float. If `n` is greater than 1, then the result
is an `n`-1 dimensional array.
See Also
--------
sum, cumsum
Notes
-----
Image [2]_ illustrates trapezoidal rule -- y-axis locations of points
will be taken from `y` array, by default x-axis distances between
points will be 1.0, alternatively they can be provided with `x` array
or with `dx` scalar. Return value will be equal to combined area under
the red lines.
References
----------
.. [1] Wikipedia page: https://en.wikipedia.org/wiki/Trapezoidal_rule
.. [2] Illustration image:
https://en.wikipedia.org/wiki/File:Composite_trapezoidal_rule_illustration.png
Examples
--------
>>> import numpy as np
Use the trapezoidal rule on evenly spaced points:
>>> np.trapezoid([1, 2, 3])
4.0
The spacing between sample points can be selected by either the
``x`` or ``dx`` arguments:
>>> np.trapezoid([1, 2, 3], x=[4, 6, 8])
8.0
>>> np.trapezoid([1, 2, 3], dx=2)
8.0
Using a decreasing ``x`` corresponds to integrating in reverse:
>>> np.trapezoid([1, 2, 3], x=[8, 6, 4])
-8.0
More generally ``x`` is used to integrate along a parametric curve. We can
estimate the integral :math:`\int_0^1 x^2 = 1/3` using:
>>> x = np.linspace(0, 1, num=50)
>>> y = x**2
>>> np.trapezoid(y, x)
0.33340274885464394
Or estimate the area of a circle, noting we repeat the sample which closes
the curve:
>>> theta = np.linspace(0, 2 * np.pi, num=1000, endpoint=True)
>>> np.trapezoid(np.cos(theta), x=np.sin(theta))
3.141571941375841
``np.trapezoid`` can be applied along a specified axis to do multiple
computations in one call:
>>> a = np.arange(6).reshape(2, 3)
>>> a
array([[0, 1, 2],
[3, 4, 5]])
>>> np.trapezoid(a, axis=0)
array([1.5, 2.5, 3.5])
>>> np.trapezoid(a, axis=1)
array([2., 8.])
trapz(y, x=None, dx=1.0, axis=-1)
`trapz` is deprecated in NumPy 2.0.
Please use `trapezoid` instead, or one of the numerical integration
functions in `scipy.integrate`.
tri(N, M=None, k=0, dtype=<class 'float'>, *, like=None)
An array with ones at and below the given diagonal and zeros elsewhere.
Parameters
----------
N : int
Number of rows in the array.
M : int, optional
Number of columns in the array.
By default, `M` is taken equal to `N`.
k : int, optional
The sub-diagonal at and below which the array is filled.
`k` = 0 is the main diagonal, while `k` < 0 is below it,
and `k` > 0 is above. The default is 0.
dtype : dtype, optional
Data type of the returned array. The default is float.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
tri : ndarray of shape (N, M)
Array with its lower triangle filled with ones and zero elsewhere;
in other words ``T[i,j] == 1`` for ``j <= i + k``, 0 otherwise.
Examples
--------
>>> import numpy as np
>>> np.tri(3, 5, 2, dtype=int)
array([[1, 1, 1, 0, 0],
[1, 1, 1, 1, 0],
[1, 1, 1, 1, 1]])
>>> np.tri(3, 5, -1)
array([[0., 0., 0., 0., 0.],
[1., 0., 0., 0., 0.],
[1., 1., 0., 0., 0.]])
tril(m, k=0)
Lower triangle of an array.
Return a copy of an array with elements above the `k`-th diagonal zeroed.
For arrays with ``ndim`` exceeding 2, `tril` will apply to the final two
axes.
Parameters
----------
m : array_like, shape (..., M, N)
Input array.
k : int, optional
Diagonal above which to zero elements. `k = 0` (the default) is the
main diagonal, `k < 0` is below it and `k > 0` is above.
Returns
-------
tril : ndarray, shape (..., M, N)
Lower triangle of `m`, of same shape and data-type as `m`.
See Also
--------
triu : same thing, only for the upper triangle
Examples
--------
>>> import numpy as np
>>> np.tril([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1)
array([[ 0, 0, 0],
[ 4, 0, 0],
[ 7, 8, 0],
[10, 11, 12]])
>>> np.tril(np.arange(3*4*5).reshape(3, 4, 5))
array([[[ 0, 0, 0, 0, 0],
[ 5, 6, 0, 0, 0],
[10, 11, 12, 0, 0],
[15, 16, 17, 18, 0]],
[[20, 0, 0, 0, 0],
[25, 26, 0, 0, 0],
[30, 31, 32, 0, 0],
[35, 36, 37, 38, 0]],
[[40, 0, 0, 0, 0],
[45, 46, 0, 0, 0],
[50, 51, 52, 0, 0],
[55, 56, 57, 58, 0]]])
tril_indices(n, k=0, m=None)
Return the indices for the lower-triangle of an (n, m) array.
Parameters
----------
n : int
The row dimension of the arrays for which the returned
indices will be valid.
k : int, optional
Diagonal offset (see `tril` for details).
m : int, optional
.. versionadded:: 1.9.0
The column dimension of the arrays for which the returned
arrays will be valid.
By default `m` is taken equal to `n`.
Returns
-------
inds : tuple of arrays
The indices for the triangle. The returned tuple contains two arrays,
each with the indices along one dimension of the array.
See also
--------
triu_indices : similar function, for upper-triangular.
mask_indices : generic function accepting an arbitrary mask function.
tril, triu
Notes
-----
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
Compute two different sets of indices to access 4x4 arrays, one for the
lower triangular part starting at the main diagonal, and one starting two
diagonals further right:
>>> il1 = np.tril_indices(4)
>>> il2 = np.tril_indices(4, 2)
Here is how they can be used with a sample array:
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Both for indexing:
>>> a[il1]
array([ 0, 4, 5, ..., 13, 14, 15])
And for assigning values:
>>> a[il1] = -1
>>> a
array([[-1, 1, 2, 3],
[-1, -1, 6, 7],
[-1, -1, -1, 11],
[-1, -1, -1, -1]])
These cover almost the whole array (two diagonals right of the main one):
>>> a[il2] = -10
>>> a
array([[-10, -10, -10, 3],
[-10, -10, -10, -10],
[-10, -10, -10, -10],
[-10, -10, -10, -10]])
tril_indices_from(arr, k=0)
Return the indices for the lower-triangle of arr.
See `tril_indices` for full details.
Parameters
----------
arr : array_like
The indices will be valid for square arrays whose dimensions are
the same as arr.
k : int, optional
Diagonal offset (see `tril` for details).
Examples
--------
>>> import numpy as np
Create a 4 by 4 array
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Pass the array to get the indices of the lower triangular elements.
>>> trili = np.tril_indices_from(a)
>>> trili
(array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3]), array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3]))
>>> a[trili]
array([ 0, 4, 5, 8, 9, 10, 12, 13, 14, 15])
This is syntactic sugar for tril_indices().
>>> np.tril_indices(a.shape[0])
(array([0, 1, 1, 2, 2, 2, 3, 3, 3, 3]), array([0, 0, 1, 0, 1, 2, 0, 1, 2, 3]))
Use the `k` parameter to return the indices for the lower triangular array
up to the k-th diagonal.
>>> trili1 = np.tril_indices_from(a, k=1)
>>> a[trili1]
array([ 0, 1, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15])
See Also
--------
tril_indices, tril, triu_indices_from
Notes
-----
.. versionadded:: 1.4.0
trim_zeros(filt, trim='fb')
Trim the leading and/or trailing zeros from a 1-D array or sequence.
Parameters
----------
filt : 1-D array or sequence
Input array.
trim : str, optional
A string with 'f' representing trim from front and 'b' to trim from
back. Default is 'fb', trim zeros from both front and back of the
array.
Returns
-------
trimmed : 1-D array or sequence
The result of trimming the input. The input data type is preserved.
Examples
--------
>>> import numpy as np
>>> a = np.array((0, 0, 0, 1, 2, 3, 0, 2, 1, 0))
>>> np.trim_zeros(a)
array([1, 2, 3, 0, 2, 1])
>>> np.trim_zeros(a, 'b')
array([0, 0, 0, ..., 0, 2, 1])
The input data type is preserved, list/tuple in means list/tuple out.
>>> np.trim_zeros([0, 1, 2, 0])
[1, 2]
triu(m, k=0)
Upper triangle of an array.
Return a copy of an array with the elements below the `k`-th diagonal
zeroed. For arrays with ``ndim`` exceeding 2, `triu` will apply to the
final two axes.
Please refer to the documentation for `tril` for further details.
See Also
--------
tril : lower triangle of an array
Examples
--------
>>> import numpy as np
>>> np.triu([[1,2,3],[4,5,6],[7,8,9],[10,11,12]], -1)
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 0, 8, 9],
[ 0, 0, 12]])
>>> np.triu(np.arange(3*4*5).reshape(3, 4, 5))
array([[[ 0, 1, 2, 3, 4],
[ 0, 6, 7, 8, 9],
[ 0, 0, 12, 13, 14],
[ 0, 0, 0, 18, 19]],
[[20, 21, 22, 23, 24],
[ 0, 26, 27, 28, 29],
[ 0, 0, 32, 33, 34],
[ 0, 0, 0, 38, 39]],
[[40, 41, 42, 43, 44],
[ 0, 46, 47, 48, 49],
[ 0, 0, 52, 53, 54],
[ 0, 0, 0, 58, 59]]])
triu_indices(n, k=0, m=None)
Return the indices for the upper-triangle of an (n, m) array.
Parameters
----------
n : int
The size of the arrays for which the returned indices will
be valid.
k : int, optional
Diagonal offset (see `triu` for details).
m : int, optional
.. versionadded:: 1.9.0
The column dimension of the arrays for which the returned
arrays will be valid.
By default `m` is taken equal to `n`.
Returns
-------
inds : tuple, shape(2) of ndarrays, shape(`n`)
The indices for the triangle. The returned tuple contains two arrays,
each with the indices along one dimension of the array. Can be used
to slice a ndarray of shape(`n`, `n`).
See also
--------
tril_indices : similar function, for lower-triangular.
mask_indices : generic function accepting an arbitrary mask function.
triu, tril
Notes
-----
.. versionadded:: 1.4.0
Examples
--------
>>> import numpy as np
Compute two different sets of indices to access 4x4 arrays, one for the
upper triangular part starting at the main diagonal, and one starting two
diagonals further right:
>>> iu1 = np.triu_indices(4)
>>> iu2 = np.triu_indices(4, 2)
Here is how they can be used with a sample array:
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Both for indexing:
>>> a[iu1]
array([ 0, 1, 2, ..., 10, 11, 15])
And for assigning values:
>>> a[iu1] = -1
>>> a
array([[-1, -1, -1, -1],
[ 4, -1, -1, -1],
[ 8, 9, -1, -1],
[12, 13, 14, -1]])
These cover only a small part of the whole array (two diagonals right
of the main one):
>>> a[iu2] = -10
>>> a
array([[ -1, -1, -10, -10],
[ 4, -1, -1, -10],
[ 8, 9, -1, -1],
[ 12, 13, 14, -1]])
triu_indices_from(arr, k=0)
Return the indices for the upper-triangle of arr.
See `triu_indices` for full details.
Parameters
----------
arr : ndarray, shape(N, N)
The indices will be valid for square arrays.
k : int, optional
Diagonal offset (see `triu` for details).
Returns
-------
triu_indices_from : tuple, shape(2) of ndarray, shape(N)
Indices for the upper-triangle of `arr`.
Examples
--------
>>> import numpy as np
Create a 4 by 4 array
>>> a = np.arange(16).reshape(4, 4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
Pass the array to get the indices of the upper triangular elements.
>>> triui = np.triu_indices_from(a)
>>> triui
(array([0, 0, 0, 0, 1, 1, 1, 2, 2, 3]), array([0, 1, 2, 3, 1, 2, 3, 2, 3, 3]))
>>> a[triui]
array([ 0, 1, 2, 3, 5, 6, 7, 10, 11, 15])
This is syntactic sugar for triu_indices().
>>> np.triu_indices(a.shape[0])
(array([0, 0, 0, 0, 1, 1, 1, 2, 2, 3]), array([0, 1, 2, 3, 1, 2, 3, 2, 3, 3]))
Use the `k` parameter to return the indices for the upper triangular array
from the k-th diagonal.
>>> triuim1 = np.triu_indices_from(a, k=1)
>>> a[triuim1]
array([ 1, 2, 3, 6, 7, 11])
See Also
--------
triu_indices, triu, tril_indices_from
Notes
-----
.. versionadded:: 1.4.0
typename(char)
Return a description for the given data type code.
Parameters
----------
char : str
Data type code.
Returns
-------
out : str
Description of the input data type code.
See Also
--------
dtype
Examples
--------
>>> import numpy as np
>>> typechars = ['S1', '?', 'B', 'D', 'G', 'F', 'I', 'H', 'L', 'O', 'Q',
... 'S', 'U', 'V', 'b', 'd', 'g', 'f', 'i', 'h', 'l', 'q']
>>> for typechar in typechars:
... print(typechar, ' : ', np.typename(typechar))
...
S1 : character
? : bool
B : unsigned char
D : complex double precision
G : complex long double precision
F : complex single precision
I : unsigned integer
H : unsigned short
L : unsigned long integer
O : object
Q : unsigned long long integer
S : string
U : unicode
V : void
b : signed char
d : double precision
g : long precision
f : single precision
i : integer
h : short
l : long integer
q : long long integer
union1d(ar1, ar2)
Find the union of two arrays.
Return the unique, sorted array of values that are in either of the two
input arrays.
Parameters
----------
ar1, ar2 : array_like
Input arrays. They are flattened if they are not already 1D.
Returns
-------
union1d : ndarray
Unique, sorted union of the input arrays.
Examples
--------
>>> import numpy as np
>>> np.union1d([-1, 0, 1], [-2, 0, 2])
array([-2, -1, 0, 1, 2])
To find the union of more than two arrays, use functools.reduce:
>>> from functools import reduce
>>> reduce(np.union1d, ([1, 3, 4, 3], [3, 1, 2, 1], [6, 3, 4, 2]))
array([1, 2, 3, 4, 6])
unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None, *, equal_nan=True)
Find the unique elements of an array.
Returns the sorted unique elements of an array. There are three optional
outputs in addition to the unique elements:
* the indices of the input array that give the unique values
* the indices of the unique array that reconstruct the input array
* the number of times each unique value comes up in the input array
Parameters
----------
ar : array_like
Input array. Unless `axis` is specified, this will be flattened if it
is not already 1-D.
return_index : bool, optional
If True, also return the indices of `ar` (along the specified axis,
if provided, or in the flattened array) that result in the unique array.
return_inverse : bool, optional
If True, also return the indices of the unique array (for the specified
axis, if provided) that can be used to reconstruct `ar`.
return_counts : bool, optional
If True, also return the number of times each unique item appears
in `ar`.
axis : int or None, optional
The axis to operate on. If None, `ar` will be flattened. If an integer,
the subarrays indexed by the given axis will be flattened and treated
as the elements of a 1-D array with the dimension of the given axis,
see the notes for more details. Object arrays or structured arrays
that contain objects are not supported if the `axis` kwarg is used. The
default is None.
.. versionadded:: 1.13.0
equal_nan : bool, optional
If True, collapses multiple NaN values in the return array into one.
.. versionadded:: 1.24
Returns
-------
unique : ndarray
The sorted unique values.
unique_indices : ndarray, optional
The indices of the first occurrences of the unique values in the
original array. Only provided if `return_index` is True.
unique_inverse : ndarray, optional
The indices to reconstruct the original array from the
unique array. Only provided if `return_inverse` is True.
unique_counts : ndarray, optional
The number of times each of the unique values comes up in the
original array. Only provided if `return_counts` is True.
.. versionadded:: 1.9.0
See Also
--------
repeat : Repeat elements of an array.
Notes
-----
When an axis is specified the subarrays indexed by the axis are sorted.
This is done by making the specified axis the first dimension of the array
(move the axis to the first dimension to keep the order of the other axes)
and then flattening the subarrays in C order. The flattened subarrays are
then viewed as a structured type with each element given a label, with the
effect that we end up with a 1-D array of structured types that can be
treated in the same way as any other 1-D array. The result is that the
flattened subarrays are sorted in lexicographic order starting with the
first element.
.. versionchanged: 1.21
If nan values are in the input array, a single nan is put
to the end of the sorted unique values.
Also for complex arrays all NaN values are considered equivalent
(no matter whether the NaN is in the real or imaginary part).
As the representant for the returned array the smallest one in the
lexicographical order is chosen - see np.sort for how the lexicographical
order is defined for complex arrays.
.. versionchanged: 2.0
For multi-dimensional inputs, ``unique_inverse`` is reshaped
such that the input can be reconstructed using
``np.take(unique, unique_inverse, axis=axis)``. The result is
now not 1-dimensional when ``axis=None``.
Note that in NumPy 2.0.0 a higher dimensional array was returned also
when ``axis`` was not ``None``. This was reverted, but
``inverse.reshape(-1)`` can be used to ensure compatibility with both
versions.
Examples
--------
>>> import numpy as np
>>> np.unique([1, 1, 2, 2, 3, 3])
array([1, 2, 3])
>>> a = np.array([[1, 1], [2, 3]])
>>> np.unique(a)
array([1, 2, 3])
Return the unique rows of a 2D array
>>> a = np.array([[1, 0, 0], [1, 0, 0], [2, 3, 4]])
>>> np.unique(a, axis=0)
array([[1, 0, 0], [2, 3, 4]])
Return the indices of the original array that give the unique values:
>>> a = np.array(['a', 'b', 'b', 'c', 'a'])
>>> u, indices = np.unique(a, return_index=True)
>>> u
array(['a', 'b', 'c'], dtype='<U1')
>>> indices
array([0, 1, 3])
>>> a[indices]
array(['a', 'b', 'c'], dtype='<U1')
Reconstruct the input array from the unique values and inverse:
>>> a = np.array([1, 2, 6, 4, 2, 3, 2])
>>> u, indices = np.unique(a, return_inverse=True)
>>> u
array([1, 2, 3, 4, 6])
>>> indices
array([0, 1, 4, 3, 1, 2, 1])
>>> u[indices]
array([1, 2, 6, 4, 2, 3, 2])
Reconstruct the input values from the unique values and counts:
>>> a = np.array([1, 2, 6, 4, 2, 3, 2])
>>> values, counts = np.unique(a, return_counts=True)
>>> values
array([1, 2, 3, 4, 6])
>>> counts
array([1, 3, 1, 1, 1])
>>> np.repeat(values, counts)
array([1, 2, 2, 2, 3, 4, 6]) # original order not preserved
unique_all(x)
Find the unique elements of an array, and counts, inverse and indices.
This function is an Array API compatible alternative to:
>>> x = np.array([1, 1, 2])
>>> np.unique(x, return_index=True, return_inverse=True,
... return_counts=True, equal_nan=False)
(array([1, 2]), array([0, 2]), array([0, 0, 1]), array([2, 1]))
Parameters
----------
x : array_like
Input array. It will be flattened if it is not already 1-D.
Returns
-------
out : namedtuple
The result containing:
* values - The unique elements of an input array.
* indices - The first occurring indices for each unique element.
* inverse_indices - The indices from the set of unique elements
that reconstruct `x`.
* counts - The corresponding counts for each unique element.
See Also
--------
unique : Find the unique elements of an array.
Examples
--------
>>> import numpy as np
>>> np.unique_all([1, 1, 2])
UniqueAllResult(values=array([1, 2]),
indices=array([0, 2]),
inverse_indices=array([0, 0, 1]),
counts=array([2, 1]))
unique_counts(x)
Find the unique elements and counts of an input array `x`.
This function is an Array API compatible alternative to:
>>> x = np.array([1, 1, 2])
>>> np.unique(x, return_counts=True, equal_nan=False)
(array([1, 2]), array([2, 1]))
Parameters
----------
x : array_like
Input array. It will be flattened if it is not already 1-D.
Returns
-------
out : namedtuple
The result containing:
* values - The unique elements of an input array.
* counts - The corresponding counts for each unique element.
See Also
--------
unique : Find the unique elements of an array.
Examples
--------
>>> import numpy as np
>>> np.unique_counts([1, 1, 2])
UniqueCountsResult(values=array([1, 2]), counts=array([2, 1]))
unique_inverse(x)
Find the unique elements of `x` and indices to reconstruct `x`.
This function is Array API compatible alternative to:
>>> x = np.array([1, 1, 2])
>>> np.unique(x, return_inverse=True, equal_nan=False)
(array([1, 2]), array([0, 0, 1]))
Parameters
----------
x : array_like
Input array. It will be flattened if it is not already 1-D.
Returns
-------
out : namedtuple
The result containing:
* values - The unique elements of an input array.
* inverse_indices - The indices from the set of unique elements
that reconstruct `x`.
See Also
--------
unique : Find the unique elements of an array.
Examples
--------
>>> import numpy as np
>>> np.unique_inverse([1, 1, 2])
UniqueInverseResult(values=array([1, 2]), inverse_indices=array([0, 0, 1]))
unique_values(x)
Returns the unique elements of an input array `x`.
This function is Array API compatible alternative to:
>>> x = np.array([1, 1, 2])
>>> np.unique(x, equal_nan=False)
array([1, 2])
Parameters
----------
x : array_like
Input array. It will be flattened if it is not already 1-D.
Returns
-------
out : ndarray
The unique elements of an input array.
See Also
--------
unique : Find the unique elements of an array.
Examples
--------
>>> import numpy as np
>>> np.unique_values([1, 1, 2])
array([1, 2])
unpackbits(...)
unpackbits(a, /, axis=None, count=None, bitorder='big')
Unpacks elements of a uint8 array into a binary-valued output array.
Each element of `a` represents a bit-field that should be unpacked
into a binary-valued output array. The shape of the output array is
either 1-D (if `axis` is ``None``) or the same shape as the input
array with unpacking done along the axis specified.
Parameters
----------
a : ndarray, uint8 type
Input array.
axis : int, optional
The dimension over which bit-unpacking is done.
``None`` implies unpacking the flattened array.
count : int or None, optional
The number of elements to unpack along `axis`, provided as a way
of undoing the effect of packing a size that is not a multiple
of eight. A non-negative number means to only unpack `count`
bits. A negative number means to trim off that many bits from
the end. ``None`` means to unpack the entire array (the
default). Counts larger than the available number of bits will
add zero padding to the output. Negative counts must not
exceed the available number of bits.
.. versionadded:: 1.17.0
bitorder : {'big', 'little'}, optional
The order of the returned bits. 'big' will mimic bin(val),
``3 = 0b00000011 => [0, 0, 0, 0, 0, 0, 1, 1]``, 'little' will reverse
the order to ``[1, 1, 0, 0, 0, 0, 0, 0]``.
Defaults to 'big'.
.. versionadded:: 1.17.0
Returns
-------
unpacked : ndarray, uint8 type
The elements are binary-valued (0 or 1).
See Also
--------
packbits : Packs the elements of a binary-valued array into bits in
a uint8 array.
Examples
--------
>>> import numpy as np
>>> a = np.array([[2], [7], [23]], dtype=np.uint8)
>>> a
array([[ 2],
[ 7],
[23]], dtype=uint8)
>>> b = np.unpackbits(a, axis=1)
>>> b
array([[0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1, 1, 1],
[0, 0, 0, 1, 0, 1, 1, 1]], dtype=uint8)
>>> c = np.unpackbits(a, axis=1, count=-3)
>>> c
array([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 1, 0]], dtype=uint8)
>>> p = np.packbits(b, axis=0)
>>> np.unpackbits(p, axis=0)
array([[0, 0, 0, 0, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1, 1, 1],
[0, 0, 0, 1, 0, 1, 1, 1],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
>>> np.array_equal(b, np.unpackbits(p, axis=0, count=b.shape[0]))
True
unravel_index(...)
unravel_index(indices, shape, order='C')
Converts a flat index or array of flat indices into a tuple
of coordinate arrays.
Parameters
----------
indices : array_like
An integer array whose elements are indices into the flattened
version of an array of dimensions ``shape``. Before version 1.6.0,
this function accepted just one index value.
shape : tuple of ints
The shape of the array to use for unraveling ``indices``.
.. versionchanged:: 1.16.0
Renamed from ``dims`` to ``shape``.
order : {'C', 'F'}, optional
Determines whether the indices should be viewed as indexing in
row-major (C-style) or column-major (Fortran-style) order.
.. versionadded:: 1.6.0
Returns
-------
unraveled_coords : tuple of ndarray
Each array in the tuple has the same shape as the ``indices``
array.
See Also
--------
ravel_multi_index
Examples
--------
>>> import numpy as np
>>> np.unravel_index([22, 41, 37], (7,6))
(array([3, 6, 6]), array([4, 5, 1]))
>>> np.unravel_index([31, 41, 13], (7,6), order='F')
(array([3, 6, 6]), array([4, 5, 1]))
>>> np.unravel_index(1621, (6,7,8,9))
(3, 1, 4, 1)
unstack(x, /, *, axis=0)
Split an array into a sequence of arrays along the given axis.
The ``axis`` parameter specifies the dimension along which the array will
be split. For example, if ``axis=0`` (the default) it will be the first
dimension and if ``axis=-1`` it will be the last dimension.
The result is a tuple of arrays split along ``axis``.
.. versionadded:: 2.1.0
Parameters
----------
x : ndarray
The array to be unstacked.
axis : int, optional
Axis along which the array will be split. Default: ``0``.
Returns
-------
unstacked : tuple of ndarrays
The unstacked arrays.
See Also
--------
stack : Join a sequence of arrays along a new axis.
concatenate : Join a sequence of arrays along an existing axis.
block : Assemble an nd-array from nested lists of blocks.
split : Split array into a list of multiple sub-arrays of equal size.
Notes
-----
``unstack`` serves as the reverse operation of :py:func:`stack`, i.e.,
``stack(unstack(x, axis=axis), axis=axis) == x``.
This function is equivalent to ``tuple(np.moveaxis(x, axis, 0))``, since
iterating on an array iterates along the first axis.
Examples
--------
>>> arr = np.arange(24).reshape((2, 3, 4))
>>> np.unstack(arr)
(array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]),
array([[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]))
>>> np.unstack(arr, axis=1)
(array([[ 0, 1, 2, 3],
[12, 13, 14, 15]]),
array([[ 4, 5, 6, 7],
[16, 17, 18, 19]]),
array([[ 8, 9, 10, 11],
[20, 21, 22, 23]]))
>>> arr2 = np.stack(np.unstack(arr, axis=1), axis=1)
>>> arr2.shape
(2, 3, 4)
>>> np.all(arr == arr2)
np.True_
unwrap(p, discont=None, axis=-1, *, period=6.283185307179586)
Unwrap by taking the complement of large deltas with respect to the period.
This unwraps a signal `p` by changing elements which have an absolute
difference from their predecessor of more than ``max(discont, period/2)``
to their `period`-complementary values.
For the default case where `period` is :math:`2\pi` and `discont` is
:math:`\pi`, this unwraps a radian phase `p` such that adjacent differences
are never greater than :math:`\pi` by adding :math:`2k\pi` for some
integer :math:`k`.
Parameters
----------
p : array_like
Input array.
discont : float, optional
Maximum discontinuity between values, default is ``period/2``.
Values below ``period/2`` are treated as if they were ``period/2``.
To have an effect different from the default, `discont` should be
larger than ``period/2``.
axis : int, optional
Axis along which unwrap will operate, default is the last axis.
period : float, optional
Size of the range over which the input wraps. By default, it is
``2 pi``.
.. versionadded:: 1.21.0
Returns
-------
out : ndarray
Output array.
See Also
--------
rad2deg, deg2rad
Notes
-----
If the discontinuity in `p` is smaller than ``period/2``,
but larger than `discont`, no unwrapping is done because taking
the complement would only make the discontinuity larger.
Examples
--------
>>> import numpy as np
>>> phase = np.linspace(0, np.pi, num=5)
>>> phase[3:] += np.pi
>>> phase
array([ 0. , 0.78539816, 1.57079633, 5.49778714, 6.28318531]) # may vary
>>> np.unwrap(phase)
array([ 0. , 0.78539816, 1.57079633, -0.78539816, 0. ]) # may vary
>>> np.unwrap([0, 1, 2, -1, 0], period=4)
array([0, 1, 2, 3, 4])
>>> np.unwrap([ 1, 2, 3, 4, 5, 6, 1, 2, 3], period=6)
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.unwrap([2, 3, 4, 5, 2, 3, 4, 5], period=4)
array([2, 3, 4, 5, 6, 7, 8, 9])
>>> phase_deg = np.mod(np.linspace(0 ,720, 19), 360) - 180
>>> np.unwrap(phase_deg, period=360)
array([-180., -140., -100., -60., -20., 20., 60., 100., 140.,
180., 220., 260., 300., 340., 380., 420., 460., 500.,
540.])
vander(x, N=None, increasing=False)
Generate a Vandermonde matrix.
The columns of the output matrix are powers of the input vector. The
order of the powers is determined by the `increasing` boolean argument.
Specifically, when `increasing` is False, the `i`-th output column is
the input vector raised element-wise to the power of ``N - i - 1``. Such
a matrix with a geometric progression in each row is named for Alexandre-
Theophile Vandermonde.
Parameters
----------
x : array_like
1-D input array.
N : int, optional
Number of columns in the output. If `N` is not specified, a square
array is returned (``N = len(x)``).
increasing : bool, optional
Order of the powers of the columns. If True, the powers increase
from left to right, if False (the default) they are reversed.
.. versionadded:: 1.9.0
Returns
-------
out : ndarray
Vandermonde matrix. If `increasing` is False, the first column is
``x^(N-1)``, the second ``x^(N-2)`` and so forth. If `increasing` is
True, the columns are ``x^0, x^1, ..., x^(N-1)``.
See Also
--------
polynomial.polynomial.polyvander
Examples
--------
>>> import numpy as np
>>> x = np.array([1, 2, 3, 5])
>>> N = 3
>>> np.vander(x, N)
array([[ 1, 1, 1],
[ 4, 2, 1],
[ 9, 3, 1],
[25, 5, 1]])
>>> np.column_stack([x**(N-1-i) for i in range(N)])
array([[ 1, 1, 1],
[ 4, 2, 1],
[ 9, 3, 1],
[25, 5, 1]])
>>> x = np.array([1, 2, 3, 5])
>>> np.vander(x)
array([[ 1, 1, 1, 1],
[ 8, 4, 2, 1],
[ 27, 9, 3, 1],
[125, 25, 5, 1]])
>>> np.vander(x, increasing=True)
array([[ 1, 1, 1, 1],
[ 1, 2, 4, 8],
[ 1, 3, 9, 27],
[ 1, 5, 25, 125]])
The determinant of a square Vandermonde matrix is the product
of the differences between the values of the input vector:
>>> np.linalg.det(np.vander(x))
48.000000000000043 # may vary
>>> (5-3)*(5-2)*(5-1)*(3-2)*(3-1)*(2-1)
48
var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=<no value>, *, where=<no value>, mean=<no value>, correction=<no value>)
Compute the variance along the specified axis.
Returns the variance of the array elements, a measure of the spread of a
distribution. The variance is computed for the flattened array by
default, otherwise over the specified axis.
Parameters
----------
a : array_like
Array containing numbers whose variance is desired. If `a` is not an
array, a conversion is attempted.
axis : None or int or tuple of ints, optional
Axis or axes along which the variance is computed. The default is to
compute the variance of the flattened array.
.. versionadded:: 1.7.0
If this is a tuple of ints, a variance is performed over multiple axes,
instead of a single axis or all the axes as before.
dtype : data-type, optional
Type to use in computing the variance. For arrays of integer type
the default is `float64`; for arrays of float types it is the same as
the array type.
out : ndarray, optional
Alternate output array in which to place the result. It must have
the same shape as the expected output, but the type is cast if
necessary.
ddof : {int, float}, optional
"Delta Degrees of Freedom": the divisor used in the calculation is
``N - ddof``, where ``N`` represents the number of elements. By
default `ddof` is zero. See notes for details about use of `ddof`.
keepdims : bool, optional
If this is set to True, the axes which are reduced are left
in the result as dimensions with size one. With this option,
the result will broadcast correctly against the input array.
If the default value is passed, then `keepdims` will not be
passed through to the `var` method of sub-classes of
`ndarray`, however any non-default value will be. If the
sub-class' method does not implement `keepdims` any
exceptions will be raised.
where : array_like of bool, optional
Elements to include in the variance. See `~numpy.ufunc.reduce` for
details.
.. versionadded:: 1.20.0
mean : array like, optional
Provide the mean to prevent its recalculation. The mean should have
a shape as if it was calculated with ``keepdims=True``.
The axis for the calculation of the mean should be the same as used in
the call to this var function.
.. versionadded:: 1.26.0
correction : {int, float}, optional
Array API compatible name for the ``ddof`` parameter. Only one of them
can be provided at the same time.
.. versionadded:: 2.0.0
Returns
-------
variance : ndarray, see dtype parameter above
If ``out=None``, returns a new array containing the variance;
otherwise, a reference to the output array is returned.
See Also
--------
std, mean, nanmean, nanstd, nanvar
:ref:`ufuncs-output-type`
Notes
-----
There are several common variants of the array variance calculation.
Assuming the input `a` is a one-dimensional NumPy array and ``mean`` is
either provided as an argument or computed as ``a.mean()``, NumPy
computes the variance of an array as::
N = len(a)
d2 = abs(a - mean)**2 # abs is for complex `a`
var = d2.sum() / (N - ddof) # note use of `ddof`
Different values of the argument `ddof` are useful in different
contexts. NumPy's default ``ddof=0`` corresponds with the expression:
.. math::
\frac{\sum_i{|a_i - \bar{a}|^2 }}{N}
which is sometimes called the "population variance" in the field of
statistics because it applies the definition of variance to `a` as if `a`
were a complete population of possible observations.
Many other libraries define the variance of an array differently, e.g.:
.. math::
\frac{\sum_i{|a_i - \bar{a}|^2}}{N - 1}
In statistics, the resulting quantity is sometimed called the "sample
variance" because if `a` is a random sample from a larger population,
this calculation provides an unbiased estimate of the variance of the
population. The use of :math:`N-1` in the denominator is often called
"Bessel's correction" because it corrects for bias (toward lower values)
in the variance estimate introduced when the sample mean of `a` is used
in place of the true mean of the population. For this quantity, use
``ddof=1``.
Note that for complex numbers, the absolute value is taken before
squaring, so that the result is always real and nonnegative.
For floating-point input, the variance is computed using the same
precision the input has. Depending on the input data, this can cause
the results to be inaccurate, especially for `float32` (see example
below). Specifying a higher-accuracy accumulator using the ``dtype``
keyword can alleviate this issue.
Examples
--------
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> np.var(a)
1.25
>>> np.var(a, axis=0)
array([1., 1.])
>>> np.var(a, axis=1)
array([0.25, 0.25])
In single precision, var() can be inaccurate:
>>> a = np.zeros((2, 512*512), dtype=np.float32)
>>> a[0, :] = 1.0
>>> a[1, :] = 0.1
>>> np.var(a)
0.20250003
Computing the variance in float64 is more accurate:
>>> np.var(a, dtype=np.float64)
0.20249999932944759 # may vary
>>> ((1-0.55)**2 + (0.1-0.55)**2)/2
0.2025
Specifying a where argument:
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> np.var(a)
6.833333333333333 # may vary
>>> np.var(a, where=[[True], [True], [False]])
4.0
Using the mean keyword to save computation time:
>>> import numpy as np
>>> from timeit import timeit
>>>
>>> a = np.array([[14, 8, 11, 10], [7, 9, 10, 11], [10, 15, 5, 10]])
>>> mean = np.mean(a, axis=1, keepdims=True)
>>>
>>> g = globals()
>>> n = 10000
>>> t1 = timeit("var = np.var(a, axis=1, mean=mean)", globals=g, number=n)
>>> t2 = timeit("var = np.var(a, axis=1)", globals=g, number=n)
>>> print(f'Percentage execution time saved {100*(t2-t1)/t2:.0f}%')
#doctest: +SKIP
Percentage execution time saved 32%
vdot(...)
vdot(a, b, /)
Return the dot product of two vectors.
The vdot(`a`, `b`) function handles complex numbers differently than
dot(`a`, `b`). If the first argument is complex the complex conjugate
of the first argument is used for the calculation of the dot product.
Note that `vdot` handles multidimensional arrays differently than `dot`:
it does *not* perform a matrix product, but flattens input arguments
to 1-D vectors first. Consequently, it should only be used for vectors.
Parameters
----------
a : array_like
If `a` is complex the complex conjugate is taken before calculation
of the dot product.
b : array_like
Second argument to the dot product.
Returns
-------
output : ndarray
Dot product of `a` and `b`. Can be an int, float, or
complex depending on the types of `a` and `b`.
See Also
--------
dot : Return the dot product without using the complex conjugate of the
first argument.
Examples
--------
>>> import numpy as np
>>> a = np.array([1+2j,3+4j])
>>> b = np.array([5+6j,7+8j])
>>> np.vdot(a, b)
(70-8j)
>>> np.vdot(b, a)
(70+8j)
Note that higher-dimensional arrays are flattened!
>>> a = np.array([[1, 4], [5, 6]])
>>> b = np.array([[4, 1], [2, 2]])
>>> np.vdot(a, b)
30
>>> np.vdot(b, a)
30
>>> 1*4 + 4*1 + 5*2 + 6*2
30
vsplit(ary, indices_or_sections)
Split an array into multiple sub-arrays vertically (row-wise).
Please refer to the ``split`` documentation. ``vsplit`` is equivalent
to ``split`` with `axis=0` (default), the array is always split along the
first axis regardless of the array dimension.
See Also
--------
split : Split an array into multiple sub-arrays of equal size.
Examples
--------
>>> import numpy as np
>>> x = np.arange(16.0).reshape(4, 4)
>>> x
array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.],
[12., 13., 14., 15.]])
>>> np.vsplit(x, 2)
[array([[0., 1., 2., 3.],
[4., 5., 6., 7.]]),
array([[ 8., 9., 10., 11.],
[12., 13., 14., 15.]])]
>>> np.vsplit(x, np.array([3, 6]))
[array([[ 0., 1., 2., 3.],
[ 4., 5., 6., 7.],
[ 8., 9., 10., 11.]]),
array([[12., 13., 14., 15.]]),
array([], shape=(0, 4), dtype=float64)]
With a higher dimensional array the split is still along the first axis.
>>> x = np.arange(8.0).reshape(2, 2, 2)
>>> x
array([[[0., 1.],
[2., 3.]],
[[4., 5.],
[6., 7.]]])
>>> np.vsplit(x, 2)
[array([[[0., 1.],
[2., 3.]]]),
array([[[4., 5.],
[6., 7.]]])]
vstack(tup, *, dtype=None, casting='same_kind')
Stack arrays in sequence vertically (row wise).
This is equivalent to concatenation along the first axis after 1-D arrays
of shape `(N,)` have been reshaped to `(1,N)`. Rebuilds arrays divided by
`vsplit`.
This function makes most sense for arrays with up to 3 dimensions. For
instance, for pixel-data with a height (first axis), width (second axis),
and r/g/b channels (third axis). The functions `concatenate`, `stack` and
`block` provide more general stacking and concatenation operations.
Parameters
----------
tup : sequence of ndarrays
The arrays must have the same shape along all but the first axis.
1-D arrays must have the same length.
dtype : str or dtype
If provided, the destination array will have this dtype. Cannot be
provided together with `out`.
.. versionadded:: 1.24
casting : {'no', 'equiv', 'safe', 'same_kind', 'unsafe'}, optional
Controls what kind of data casting may occur. Defaults to 'same_kind'.
.. versionadded:: 1.24
Returns
-------
stacked : ndarray
The array formed by stacking the given arrays, will be at least 2-D.
See Also
--------
concatenate : Join a sequence of arrays along an existing axis.
stack : Join a sequence of arrays along a new axis.
block : Assemble an nd-array from nested lists of blocks.
hstack : Stack arrays in sequence horizontally (column wise).
dstack : Stack arrays in sequence depth wise (along third axis).
column_stack : Stack 1-D arrays as columns into a 2-D array.
vsplit : Split an array into multiple sub-arrays vertically (row-wise).
unstack : Split an array into a tuple of sub-arrays along an axis.
Examples
--------
>>> import numpy as np
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> np.vstack((a,b))
array([[1, 2, 3],
[4, 5, 6]])
>>> a = np.array([[1], [2], [3]])
>>> b = np.array([[4], [5], [6]])
>>> np.vstack((a,b))
array([[1],
[2],
[3],
[4],
[5],
[6]])
where(...)
where(condition, [x, y], /)
Return elements chosen from `x` or `y` depending on `condition`.
.. note::
When only `condition` is provided, this function is a shorthand for
``np.asarray(condition).nonzero()``. Using `nonzero` directly should be
preferred, as it behaves correctly for subclasses. The rest of this
documentation covers only the case where all three arguments are
provided.
Parameters
----------
condition : array_like, bool
Where True, yield `x`, otherwise yield `y`.
x, y : array_like
Values from which to choose. `x`, `y` and `condition` need to be
broadcastable to some shape.
Returns
-------
out : ndarray
An array with elements from `x` where `condition` is True, and elements
from `y` elsewhere.
See Also
--------
choose
nonzero : The function that is called when x and y are omitted
Notes
-----
If all the arrays are 1-D, `where` is equivalent to::
[xv if c else yv
for c, xv, yv in zip(condition, x, y)]
Examples
--------
>>> import numpy as np
>>> a = np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.where(a < 5, a, 10*a)
array([ 0, 1, 2, 3, 4, 50, 60, 70, 80, 90])
This can be used on multidimensional arrays too:
>>> np.where([[True, False], [True, True]],
... [[1, 2], [3, 4]],
... [[9, 8], [7, 6]])
array([[1, 8],
[3, 4]])
The shapes of x, y, and the condition are broadcast together:
>>> x, y = np.ogrid[:3, :4]
>>> np.where(x < y, x, 10 + y) # both x and 10+y are broadcast
array([[10, 0, 0, 0],
[10, 11, 1, 1],
[10, 11, 12, 2]])
>>> a = np.array([[0, 1, 2],
... [0, 2, 4],
... [0, 3, 6]])
>>> np.where(a < 4, a, -1) # -1 is broadcast
array([[ 0, 1, 2],
[ 0, 2, -1],
[ 0, 3, -1]])
zeros(...)
zeros(shape, dtype=float, order='C', *, like=None)
Return a new array of given shape and type, filled with zeros.
Parameters
----------
shape : int or tuple of ints
Shape of the new array, e.g., ``(2, 3)`` or ``2``.
dtype : data-type, optional
The desired data-type for the array, e.g., `numpy.int8`. Default is
`numpy.float64`.
order : {'C', 'F'}, optional, default: 'C'
Whether to store multi-dimensional data in row-major
(C-style) or column-major (Fortran-style) order in
memory.
like : array_like, optional
Reference object to allow the creation of arrays which are not
NumPy arrays. If an array-like passed in as ``like`` supports
the ``__array_function__`` protocol, the result will be defined
by it. In this case, it ensures the creation of an array object
compatible with that passed in via this argument.
.. versionadded:: 1.20.0
Returns
-------
out : ndarray
Array of zeros with the given shape, dtype, and order.
See Also
--------
zeros_like : Return an array of zeros with shape and type of input.
empty : Return a new uninitialized array.
ones : Return a new array setting values to one.
full : Return a new array of given shape filled with value.
Examples
--------
>>> import numpy as np
>>> np.zeros(5)
array([ 0., 0., 0., 0., 0.])
>>> np.zeros((5,), dtype=int)
array([0, 0, 0, 0, 0])
>>> np.zeros((2, 1))
array([[ 0.],
[ 0.]])
>>> s = (2,2)
>>> np.zeros(s)
array([[ 0., 0.],
[ 0., 0.]])
>>> np.zeros((2,), dtype=[('x', 'i4'), ('y', 'i4')]) # custom dtype
array([(0, 0), (0, 0)],
dtype=[('x', '<i4'), ('y', '<i4')])
zeros_like(a, dtype=None, order='K', subok=True, shape=None, *, device=None)
Return an array of zeros with the same shape and type as a given array.
Parameters
----------
a : array_like
The shape and data-type of `a` define these same attributes of
the returned array.
dtype : data-type, optional
Overrides the data type of the result.
.. versionadded:: 1.6.0
order : {'C', 'F', 'A', or 'K'}, optional
Overrides the memory layout of the result. 'C' means C-order,
'F' means F-order, 'A' means 'F' if `a` is Fortran contiguous,
'C' otherwise. 'K' means match the layout of `a` as closely
as possible.
.. versionadded:: 1.6.0
subok : bool, optional.
If True, then the newly created array will use the sub-class
type of `a`, otherwise it will be a base-class array. Defaults
to True.
shape : int or sequence of ints, optional.
Overrides the shape of the result. If order='K' and the number of
dimensions is unchanged, will try to keep order, otherwise,
order='C' is implied.
.. versionadded:: 1.17.0
device : str, optional
The device on which to place the created array. Default: None.
For Array-API interoperability only, so must be ``"cpu"`` if passed.
.. versionadded:: 2.0.0
Returns
-------
out : ndarray
Array of zeros with the same shape and type as `a`.
See Also
--------
empty_like : Return an empty array with shape and type of input.
ones_like : Return an array of ones with shape and type of input.
full_like : Return a new array with shape of input filled with value.
zeros : Return a new array setting values to zero.
Examples
--------
>>> import numpy as np
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> np.zeros_like(x)
array([[0, 0, 0],
[0, 0, 0]])
>>> y = np.arange(3, dtype=float)
>>> y
array([0., 1., 2.])
>>> np.zeros_like(y)
array([0., 0., 0.])
DATA
False_ = np.False_
ScalarType = (<class 'int'>, <class 'float'>, <class 'complex'>, <clas...
True_ = np.True_
__NUMPY_SETUP__ = False
__all__ = ['transpose', 'polysub', 'argsort', 'uint32', 'ogrid', 'nanm...
__array_api_version__ = '2023.12'
__expired_attributes__ = {'DataSource': "It's still available as `np.l...
__former_attrs__ = {'complex': "module 'numpy' has no attribute 'compl...
__future_scalars__ = {'bytes', 'object', 'str'}
__numpy_submodules__ = {'char', 'core', 'ctypeslib', 'dtypes', 'except...
abs = <ufunc 'absolute'>
absolute(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate the absolute value element-wise.
``np.abs`` is a shorthand for this function.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
absolute : ndarray
An ndarray containing the absolute value of
each element in `x`. For complex input, ``a + ib``, the
absolute value is :math:`\sqrt{ a^2 + b^2 }`.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> x = np.array([-1.2, 1.2])
>>> np.absolute(x)
array([ 1.2, 1.2])
>>> np.absolute(1.2 + 1j)
1.5620499351813308
Plot the function over ``[-10, 10]``:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(start=-10, stop=10, num=101)
>>> plt.plot(x, np.absolute(x))
>>> plt.show()
Plot the function over the complex plane:
>>> xx = x + 1j * x[:, np.newaxis]
>>> plt.imshow(np.abs(xx), extent=[-10, 10, -10, 10], cmap='gray')
>>> plt.show()
The `abs` function can be used as a shorthand for ``np.absolute`` on
ndarrays.
>>> x = np.array([-1.2, 1.2])
>>> abs(x)
array([1.2, 1.2])
absolute = <ufunc 'absolute'>
absolute(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate the absolute value element-wise.
``np.abs`` is a shorthand for this function.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
absolute : ndarray
An ndarray containing the absolute value of
each element in `x`. For complex input, ``a + ib``, the
absolute value is :math:`\sqrt{ a^2 + b^2 }`.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> x = np.array([-1.2, 1.2])
>>> np.absolute(x)
array([ 1.2, 1.2])
>>> np.absolute(1.2 + 1j)
1.5620499351813308
Plot the function over ``[-10, 10]``:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(start=-10, stop=10, num=101)
>>> plt.plot(x, np.absolute(x))
>>> plt.show()
Plot the function over the complex plane:
>>> xx = x + 1j * x[:, np.newaxis]
>>> plt.imshow(np.abs(xx), extent=[-10, 10, -10, 10], cmap='gray')
>>> plt.show()
The `abs` function can be used as a shorthand for ``np.absolute`` on
ndarrays.
>>> x = np.array([-1.2, 1.2])
>>> abs(x)
array([1.2, 1.2])
acos = <ufunc 'arccos'>
arccos(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric inverse cosine, element-wise.
The inverse of `cos` so that, if ``y = cos(x)``, then ``x = arccos(y)``.
Parameters
----------
x : array_like
`x`-coordinate on the unit circle.
For real arguments, the domain is [-1, 1].
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
The angle of the ray intersecting the unit circle at the given
`x`-coordinate in radians [0, pi].
This is a scalar if `x` is a scalar.
See Also
--------
cos, arctan, arcsin, emath.arccos
Notes
-----
`arccos` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that ``cos(z) = x``. The convention is to return
the angle `z` whose real part lies in `[0, pi]`.
For real-valued input data types, `arccos` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arccos` is a complex analytic function that
has branch cuts ``[-inf, -1]`` and `[1, inf]` and is continuous from
above on the former and from below on the latter.
The inverse `cos` is also known as `acos` or cos^-1.
References
----------
M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 79.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
>>> import numpy as np
We expect the arccos of 1 to be 0, and of -1 to be pi:
>>> np.arccos([1, -1])
array([ 0. , 3.14159265])
Plot arccos:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-1, 1, num=100)
>>> plt.plot(x, np.arccos(x))
>>> plt.axis('tight')
>>> plt.show()
acosh = <ufunc 'arccosh'>
arccosh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic cosine, element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
arccosh : ndarray
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
cosh, arcsinh, sinh, arctanh, tanh
Notes
-----
`arccosh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that `cosh(z) = x`. The convention is to return the
`z` whose imaginary part lies in ``[-pi, pi]`` and the real part in
``[0, inf]``.
For real-valued input data types, `arccosh` always returns real output.
For each value that cannot be expressed as a real number or infinity, it
yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arccosh` is a complex analytical function that
has a branch cut `[-inf, 1]` and is continuous from above on it.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arccosh
Examples
--------
>>> import numpy as np
>>> np.arccosh([np.e, 10.0])
array([ 1.65745445, 2.99322285])
>>> np.arccosh(1)
0.0
add = <ufunc 'add'>
add(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Add arguments element-wise.
Parameters
----------
x1, x2 : array_like
The arrays to be added.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
add : ndarray or scalar
The sum of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
Notes
-----
Equivalent to `x1` + `x2` in terms of array broadcasting.
Examples
--------
>>> import numpy as np
>>> np.add(1.0, 4.0)
5.0
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.add(x1, x2)
array([[ 0., 2., 4.],
[ 3., 5., 7.],
[ 6., 8., 10.]])
The ``+`` operator can be used as a shorthand for ``np.add`` on ndarrays.
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> x1 + x2
array([[ 0., 2., 4.],
[ 3., 5., 7.],
[ 6., 8., 10.]])
arccos = <ufunc 'arccos'>
arccos(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric inverse cosine, element-wise.
The inverse of `cos` so that, if ``y = cos(x)``, then ``x = arccos(y)``.
Parameters
----------
x : array_like
`x`-coordinate on the unit circle.
For real arguments, the domain is [-1, 1].
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
The angle of the ray intersecting the unit circle at the given
`x`-coordinate in radians [0, pi].
This is a scalar if `x` is a scalar.
See Also
--------
cos, arctan, arcsin, emath.arccos
Notes
-----
`arccos` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that ``cos(z) = x``. The convention is to return
the angle `z` whose real part lies in `[0, pi]`.
For real-valued input data types, `arccos` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arccos` is a complex analytic function that
has branch cuts ``[-inf, -1]`` and `[1, inf]` and is continuous from
above on the former and from below on the latter.
The inverse `cos` is also known as `acos` or cos^-1.
References
----------
M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 79.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
>>> import numpy as np
We expect the arccos of 1 to be 0, and of -1 to be pi:
>>> np.arccos([1, -1])
array([ 0. , 3.14159265])
Plot arccos:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-1, 1, num=100)
>>> plt.plot(x, np.arccos(x))
>>> plt.axis('tight')
>>> plt.show()
arccosh = <ufunc 'arccosh'>
arccosh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic cosine, element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
arccosh : ndarray
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
cosh, arcsinh, sinh, arctanh, tanh
Notes
-----
`arccosh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that `cosh(z) = x`. The convention is to return the
`z` whose imaginary part lies in ``[-pi, pi]`` and the real part in
``[0, inf]``.
For real-valued input data types, `arccosh` always returns real output.
For each value that cannot be expressed as a real number or infinity, it
yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arccosh` is a complex analytical function that
has a branch cut `[-inf, 1]` and is continuous from above on it.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arccosh
Examples
--------
>>> import numpy as np
>>> np.arccosh([np.e, 10.0])
array([ 1.65745445, 2.99322285])
>>> np.arccosh(1)
0.0
arcsin = <ufunc 'arcsin'>
arcsin(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse sine, element-wise.
Parameters
----------
x : array_like
`y`-coordinate on the unit circle.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
The inverse sine of each element in `x`, in radians and in the
closed interval ``[-pi/2, pi/2]``.
This is a scalar if `x` is a scalar.
See Also
--------
sin, cos, arccos, tan, arctan, arctan2, emath.arcsin
Notes
-----
`arcsin` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that :math:`sin(z) = x`. The convention is to
return the angle `z` whose real part lies in [-pi/2, pi/2].
For real-valued input data types, *arcsin* always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arcsin` is a complex analytic function that
has, by convention, the branch cuts [-inf, -1] and [1, inf] and is
continuous from above on the former and from below on the latter.
The inverse sine is also known as `asin` or sin^{-1}.
References
----------
Abramowitz, M. and Stegun, I. A., *Handbook of Mathematical Functions*,
10th printing, New York: Dover, 1964, pp. 79ff.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
>>> import numpy as np
>>> np.arcsin(1) # pi/2
1.5707963267948966
>>> np.arcsin(-1) # -pi/2
-1.5707963267948966
>>> np.arcsin(0)
0.0
arcsinh = <ufunc 'arcsinh'>
arcsinh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic sine element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
Notes
-----
`arcsinh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that `sinh(z) = x`. The convention is to return the
`z` whose imaginary part lies in `[-pi/2, pi/2]`.
For real-valued input data types, `arcsinh` always returns real output.
For each value that cannot be expressed as a real number or infinity, it
returns ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arcsinh` is a complex analytical function that
has branch cuts `[1j, infj]` and `[-1j, -infj]` and is continuous from
the right on the former and from the left on the latter.
The inverse hyperbolic sine is also known as `asinh` or ``sinh^-1``.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arcsinh
Examples
--------
>>> import numpy as np
>>> np.arcsinh(np.array([np.e, 10.0]))
array([ 1.72538256, 2.99822295])
arctan = <ufunc 'arctan'>
arctan(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric inverse tangent, element-wise.
The inverse of tan, so that if ``y = tan(x)`` then ``x = arctan(y)``.
Parameters
----------
x : array_like
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Out has the same shape as `x`. Its real part is in
``[-pi/2, pi/2]`` (``arctan(+/-inf)`` returns ``+/-pi/2``).
This is a scalar if `x` is a scalar.
See Also
--------
arctan2 : The "four quadrant" arctan of the angle formed by (`x`, `y`)
and the positive `x`-axis.
angle : Argument of complex values.
Notes
-----
`arctan` is a multi-valued function: for each `x` there are infinitely
many numbers `z` such that tan(`z`) = `x`. The convention is to return
the angle `z` whose real part lies in [-pi/2, pi/2].
For real-valued input data types, `arctan` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arctan` is a complex analytic function that
has [``1j, infj``] and [``-1j, -infj``] as branch cuts, and is continuous
from the left on the former and from the right on the latter.
The inverse tangent is also known as `atan` or tan^{-1}.
References
----------
Abramowitz, M. and Stegun, I. A., *Handbook of Mathematical Functions*,
10th printing, New York: Dover, 1964, pp. 79.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
We expect the arctan of 0 to be 0, and of 1 to be pi/4:
>>> import numpy as np
>>> np.arctan([0, 1])
array([ 0. , 0.78539816])
>>> np.pi/4
0.78539816339744828
Plot arctan:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-10, 10)
>>> plt.plot(x, np.arctan(x))
>>> plt.axis('tight')
>>> plt.show()
arctan2 = <ufunc 'arctan2'>
arctan2(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise arc tangent of ``x1/x2`` choosing the quadrant correctly.
The quadrant (i.e., branch) is chosen so that ``arctan2(x1, x2)`` is
the signed angle in radians between the ray ending at the origin and
passing through the point (1,0), and the ray ending at the origin and
passing through the point (`x2`, `x1`). (Note the role reversal: the
"`y`-coordinate" is the first function parameter, the "`x`-coordinate"
is the second.) By IEEE convention, this function is defined for
`x2` = +/-0 and for either or both of `x1` and `x2` = +/-inf (see
Notes for specific values).
This function is not defined for complex-valued arguments; for the
so-called argument of complex values, use `angle`.
Parameters
----------
x1 : array_like, real-valued
`y`-coordinates.
x2 : array_like, real-valued
`x`-coordinates.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
Array of angles in radians, in the range ``[-pi, pi]``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
arctan, tan, angle
Notes
-----
*arctan2* is identical to the `atan2` function of the underlying
C library. The following special values are defined in the C
standard: [1]_
====== ====== ================
`x1` `x2` `arctan2(x1,x2)`
====== ====== ================
+/- 0 +0 +/- 0
+/- 0 -0 +/- pi
> 0 +/-inf +0 / +pi
< 0 +/-inf -0 / -pi
+/-inf +inf +/- (pi/4)
+/-inf -inf +/- (3*pi/4)
====== ====== ================
Note that +0 and -0 are distinct floating point numbers, as are +inf
and -inf.
References
----------
.. [1] ISO/IEC standard 9899:1999, "Programming language C."
Examples
--------
Consider four points in different quadrants:
>>> import numpy as np
>>> x = np.array([-1, +1, +1, -1])
>>> y = np.array([-1, -1, +1, +1])
>>> np.arctan2(y, x) * 180 / np.pi
array([-135., -45., 45., 135.])
Note the order of the parameters. `arctan2` is defined also when `x2` = 0
and at several other special points, obtaining values in
the range ``[-pi, pi]``:
>>> np.arctan2([1., -1.], [0., 0.])
array([ 1.57079633, -1.57079633])
>>> np.arctan2([0., 0., np.inf], [+0., -0., np.inf])
array([0. , 3.14159265, 0.78539816])
arctanh = <ufunc 'arctanh'>
arctanh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic tangent element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
emath.arctanh
Notes
-----
`arctanh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that ``tanh(z) = x``. The convention is to return
the `z` whose imaginary part lies in `[-pi/2, pi/2]`.
For real-valued input data types, `arctanh` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arctanh` is a complex analytical function
that has branch cuts `[-1, -inf]` and `[1, inf]` and is continuous from
above on the former and from below on the latter.
The inverse hyperbolic tangent is also known as `atanh` or ``tanh^-1``.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arctanh
Examples
--------
>>> import numpy as np
>>> np.arctanh([0, -0.5])
array([ 0. , -0.54930614])
asin = <ufunc 'arcsin'>
arcsin(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse sine, element-wise.
Parameters
----------
x : array_like
`y`-coordinate on the unit circle.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
The inverse sine of each element in `x`, in radians and in the
closed interval ``[-pi/2, pi/2]``.
This is a scalar if `x` is a scalar.
See Also
--------
sin, cos, arccos, tan, arctan, arctan2, emath.arcsin
Notes
-----
`arcsin` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that :math:`sin(z) = x`. The convention is to
return the angle `z` whose real part lies in [-pi/2, pi/2].
For real-valued input data types, *arcsin* always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arcsin` is a complex analytic function that
has, by convention, the branch cuts [-inf, -1] and [1, inf] and is
continuous from above on the former and from below on the latter.
The inverse sine is also known as `asin` or sin^{-1}.
References
----------
Abramowitz, M. and Stegun, I. A., *Handbook of Mathematical Functions*,
10th printing, New York: Dover, 1964, pp. 79ff.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
>>> import numpy as np
>>> np.arcsin(1) # pi/2
1.5707963267948966
>>> np.arcsin(-1) # -pi/2
-1.5707963267948966
>>> np.arcsin(0)
0.0
asinh = <ufunc 'arcsinh'>
arcsinh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic sine element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
Notes
-----
`arcsinh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that `sinh(z) = x`. The convention is to return the
`z` whose imaginary part lies in `[-pi/2, pi/2]`.
For real-valued input data types, `arcsinh` always returns real output.
For each value that cannot be expressed as a real number or infinity, it
returns ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arcsinh` is a complex analytical function that
has branch cuts `[1j, infj]` and `[-1j, -infj]` and is continuous from
the right on the former and from the left on the latter.
The inverse hyperbolic sine is also known as `asinh` or ``sinh^-1``.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arcsinh
Examples
--------
>>> import numpy as np
>>> np.arcsinh(np.array([np.e, 10.0]))
array([ 1.72538256, 2.99822295])
atan = <ufunc 'arctan'>
arctan(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric inverse tangent, element-wise.
The inverse of tan, so that if ``y = tan(x)`` then ``x = arctan(y)``.
Parameters
----------
x : array_like
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Out has the same shape as `x`. Its real part is in
``[-pi/2, pi/2]`` (``arctan(+/-inf)`` returns ``+/-pi/2``).
This is a scalar if `x` is a scalar.
See Also
--------
arctan2 : The "four quadrant" arctan of the angle formed by (`x`, `y`)
and the positive `x`-axis.
angle : Argument of complex values.
Notes
-----
`arctan` is a multi-valued function: for each `x` there are infinitely
many numbers `z` such that tan(`z`) = `x`. The convention is to return
the angle `z` whose real part lies in [-pi/2, pi/2].
For real-valued input data types, `arctan` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arctan` is a complex analytic function that
has [``1j, infj``] and [``-1j, -infj``] as branch cuts, and is continuous
from the left on the former and from the right on the latter.
The inverse tangent is also known as `atan` or tan^{-1}.
References
----------
Abramowitz, M. and Stegun, I. A., *Handbook of Mathematical Functions*,
10th printing, New York: Dover, 1964, pp. 79.
https://personal.math.ubc.ca/~cbm/aands/page_79.htm
Examples
--------
We expect the arctan of 0 to be 0, and of 1 to be pi/4:
>>> import numpy as np
>>> np.arctan([0, 1])
array([ 0. , 0.78539816])
>>> np.pi/4
0.78539816339744828
Plot arctan:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-10, 10)
>>> plt.plot(x, np.arctan(x))
>>> plt.axis('tight')
>>> plt.show()
atan2 = <ufunc 'arctan2'>
arctan2(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise arc tangent of ``x1/x2`` choosing the quadrant correctly.
The quadrant (i.e., branch) is chosen so that ``arctan2(x1, x2)`` is
the signed angle in radians between the ray ending at the origin and
passing through the point (1,0), and the ray ending at the origin and
passing through the point (`x2`, `x1`). (Note the role reversal: the
"`y`-coordinate" is the first function parameter, the "`x`-coordinate"
is the second.) By IEEE convention, this function is defined for
`x2` = +/-0 and for either or both of `x1` and `x2` = +/-inf (see
Notes for specific values).
This function is not defined for complex-valued arguments; for the
so-called argument of complex values, use `angle`.
Parameters
----------
x1 : array_like, real-valued
`y`-coordinates.
x2 : array_like, real-valued
`x`-coordinates.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
angle : ndarray
Array of angles in radians, in the range ``[-pi, pi]``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
arctan, tan, angle
Notes
-----
*arctan2* is identical to the `atan2` function of the underlying
C library. The following special values are defined in the C
standard: [1]_
====== ====== ================
`x1` `x2` `arctan2(x1,x2)`
====== ====== ================
+/- 0 +0 +/- 0
+/- 0 -0 +/- pi
> 0 +/-inf +0 / +pi
< 0 +/-inf -0 / -pi
+/-inf +inf +/- (pi/4)
+/-inf -inf +/- (3*pi/4)
====== ====== ================
Note that +0 and -0 are distinct floating point numbers, as are +inf
and -inf.
References
----------
.. [1] ISO/IEC standard 9899:1999, "Programming language C."
Examples
--------
Consider four points in different quadrants:
>>> import numpy as np
>>> x = np.array([-1, +1, +1, -1])
>>> y = np.array([-1, -1, +1, +1])
>>> np.arctan2(y, x) * 180 / np.pi
array([-135., -45., 45., 135.])
Note the order of the parameters. `arctan2` is defined also when `x2` = 0
and at several other special points, obtaining values in
the range ``[-pi, pi]``:
>>> np.arctan2([1., -1.], [0., 0.])
array([ 1.57079633, -1.57079633])
>>> np.arctan2([0., 0., np.inf], [+0., -0., np.inf])
array([0. , 3.14159265, 0.78539816])
atanh = <ufunc 'arctanh'>
arctanh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Inverse hyperbolic tangent element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Array of the same shape as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
emath.arctanh
Notes
-----
`arctanh` is a multivalued function: for each `x` there are infinitely
many numbers `z` such that ``tanh(z) = x``. The convention is to return
the `z` whose imaginary part lies in `[-pi/2, pi/2]`.
For real-valued input data types, `arctanh` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `arctanh` is a complex analytical function
that has branch cuts `[-1, -inf]` and `[1, inf]` and is continuous from
above on the former and from below on the latter.
The inverse hyperbolic tangent is also known as `atanh` or ``tanh^-1``.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 86.
https://personal.math.ubc.ca/~cbm/aands/page_86.htm
.. [2] Wikipedia, "Inverse hyperbolic function",
https://en.wikipedia.org/wiki/Arctanh
Examples
--------
>>> import numpy as np
>>> np.arctanh([0, -0.5])
array([ 0. , -0.54930614])
bitwise_and = <ufunc 'bitwise_and'>
bitwise_and(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the bit-wise AND of two arrays element-wise.
Computes the bit-wise AND of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``&``.
Parameters
----------
x1, x2 : array_like
Only integer and boolean types are handled.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_and
bitwise_or
bitwise_xor
binary_repr :
Return the binary representation of the input number as a string.
Examples
--------
>>> import numpy as np
The number 13 is represented by ``00001101``. Likewise, 17 is
represented by ``00010001``. The bit-wise AND of 13 and 17 is
therefore ``000000001``, or 1:
>>> np.bitwise_and(13, 17)
1
>>> np.bitwise_and(14, 13)
12
>>> np.binary_repr(12)
'1100'
>>> np.bitwise_and([14,3], 13)
array([12, 1])
>>> np.bitwise_and([11,7], [4,25])
array([0, 1])
>>> np.bitwise_and(np.array([2,5,255]), np.array([3,14,16]))
array([ 2, 4, 16])
>>> np.bitwise_and([True, True], [False, True])
array([False, True])
The ``&`` operator can be used as a shorthand for ``np.bitwise_and`` on
ndarrays.
>>> x1 = np.array([2, 5, 255])
>>> x2 = np.array([3, 14, 16])
>>> x1 & x2
array([ 2, 4, 16])
bitwise_count = <ufunc 'bitwise_count'>
bitwise_count(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Computes the number of 1-bits in the absolute value of ``x``.
Analogous to the builtin `int.bit_count` or ``popcount`` in C++.
Parameters
----------
x : array_like, unsigned int
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding number of 1-bits in the input.
Returns uint8 for all integer types
This is a scalar if `x` is a scalar.
References
----------
.. [1] https://graphics.stanford.edu/~seander/bithacks.html#CountBitsSetParallel
.. [2] Wikipedia, "Hamming weight",
https://en.wikipedia.org/wiki/Hamming_weight
.. [3] http://aggregate.ee.engr.uky.edu/MAGIC/#Population%20Count%20(Ones%20Count)
Examples
--------
>>> import numpy as np
>>> np.bitwise_count(1023)
10
>>> a = np.array([2**i - 1 for i in range(16)])
>>> np.bitwise_count(a)
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
dtype=uint8)
bitwise_invert = <ufunc 'invert'>
invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute bit-wise inversion, or bit-wise NOT, element-wise.
Computes the bit-wise NOT of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``~``.
For signed integer inputs, the bit-wise NOT of the absolute value is
returned. In a two's-complement system, this operation effectively flips
all the bits, resulting in a representation that corresponds to the
negative of the input plus one. This is the most common method of
representing signed integers on computers [1]_. A N-bit two's-complement
system can represent every integer in the range :math:`-2^{N-1}` to
:math:`+2^{N-1}-1`.
Parameters
----------
x : array_like
Only integer and boolean types are handled.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if `x` is a scalar.
See Also
--------
bitwise_and, bitwise_or, bitwise_xor
logical_not
binary_repr :
Return the binary representation of the input number as a string.
Notes
-----
``numpy.bitwise_not`` is an alias for `invert`:
>>> np.bitwise_not is np.invert
True
References
----------
.. [1] Wikipedia, "Two's complement",
https://en.wikipedia.org/wiki/Two's_complement
Examples
--------
>>> import numpy as np
We've seen that 13 is represented by ``00001101``.
The invert or bit-wise NOT of 13 is then:
>>> x = np.invert(np.array(13, dtype=np.uint8))
>>> x
242
>>> np.binary_repr(x, width=8)
'11110010'
The result depends on the bit-width:
>>> x = np.invert(np.array(13, dtype=np.uint16))
>>> x
65522
>>> np.binary_repr(x, width=16)
'1111111111110010'
When using signed integer types, the result is the bit-wise NOT of
the unsigned type, interpreted as a signed integer:
>>> np.invert(np.array([13], dtype=np.int8))
array([-14], dtype=int8)
>>> np.binary_repr(-14, width=8)
'11110010'
Booleans are accepted as well:
>>> np.invert(np.array([True, False]))
array([False, True])
The ``~`` operator can be used as a shorthand for ``np.invert`` on
ndarrays.
>>> x1 = np.array([True, False])
>>> ~x1
array([False, True])
bitwise_left_shift = <ufunc 'left_shift'>
left_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Shift the bits of an integer to the left.
Bits are shifted to the left by appending `x2` 0s at the right of `x1`.
Since the internal representation of numbers is in binary format, this
operation is equivalent to multiplying `x1` by ``2**x2``.
Parameters
----------
x1 : array_like of integer type
Input values.
x2 : array_like of integer type
Number of zeros to append to `x1`. Has to be non-negative.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : array of integer type
Return `x1` with bits shifted `x2` times to the left.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
right_shift : Shift the bits of an integer to the right.
binary_repr : Return the binary representation of the input number
as a string.
Examples
--------
>>> import numpy as np
>>> np.binary_repr(5)
'101'
>>> np.left_shift(5, 2)
20
>>> np.binary_repr(20)
'10100'
>>> np.left_shift(5, [1,2,3])
array([10, 20, 40])
Note that the dtype of the second argument may change the dtype of the
result and can lead to unexpected results in some cases (see
:ref:`Casting Rules <ufuncs.casting>`):
>>> a = np.left_shift(np.uint8(255), np.int64(1)) # Expect 254
>>> print(a, type(a)) # Unexpected result due to upcasting
510 <class 'numpy.int64'>
>>> b = np.left_shift(np.uint8(255), np.uint8(1))
>>> print(b, type(b))
254 <class 'numpy.uint8'>
The ``<<`` operator can be used as a shorthand for ``np.left_shift`` on
ndarrays.
>>> x1 = 5
>>> x2 = np.array([1, 2, 3])
>>> x1 << x2
array([10, 20, 40])
bitwise_not = <ufunc 'invert'>
invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute bit-wise inversion, or bit-wise NOT, element-wise.
Computes the bit-wise NOT of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``~``.
For signed integer inputs, the bit-wise NOT of the absolute value is
returned. In a two's-complement system, this operation effectively flips
all the bits, resulting in a representation that corresponds to the
negative of the input plus one. This is the most common method of
representing signed integers on computers [1]_. A N-bit two's-complement
system can represent every integer in the range :math:`-2^{N-1}` to
:math:`+2^{N-1}-1`.
Parameters
----------
x : array_like
Only integer and boolean types are handled.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if `x` is a scalar.
See Also
--------
bitwise_and, bitwise_or, bitwise_xor
logical_not
binary_repr :
Return the binary representation of the input number as a string.
Notes
-----
``numpy.bitwise_not`` is an alias for `invert`:
>>> np.bitwise_not is np.invert
True
References
----------
.. [1] Wikipedia, "Two's complement",
https://en.wikipedia.org/wiki/Two's_complement
Examples
--------
>>> import numpy as np
We've seen that 13 is represented by ``00001101``.
The invert or bit-wise NOT of 13 is then:
>>> x = np.invert(np.array(13, dtype=np.uint8))
>>> x
242
>>> np.binary_repr(x, width=8)
'11110010'
The result depends on the bit-width:
>>> x = np.invert(np.array(13, dtype=np.uint16))
>>> x
65522
>>> np.binary_repr(x, width=16)
'1111111111110010'
When using signed integer types, the result is the bit-wise NOT of
the unsigned type, interpreted as a signed integer:
>>> np.invert(np.array([13], dtype=np.int8))
array([-14], dtype=int8)
>>> np.binary_repr(-14, width=8)
'11110010'
Booleans are accepted as well:
>>> np.invert(np.array([True, False]))
array([False, True])
The ``~`` operator can be used as a shorthand for ``np.invert`` on
ndarrays.
>>> x1 = np.array([True, False])
>>> ~x1
array([False, True])
bitwise_or = <ufunc 'bitwise_or'>
bitwise_or(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the bit-wise OR of two arrays element-wise.
Computes the bit-wise OR of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``|``.
Parameters
----------
x1, x2 : array_like
Only integer and boolean types are handled.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_or
bitwise_and
bitwise_xor
binary_repr :
Return the binary representation of the input number as a string.
Examples
--------
>>> import numpy as np
The number 13 has the binary representation ``00001101``. Likewise,
16 is represented by ``00010000``. The bit-wise OR of 13 and 16 is
then ``00011101``, or 29:
>>> np.bitwise_or(13, 16)
29
>>> np.binary_repr(29)
'11101'
>>> np.bitwise_or(32, 2)
34
>>> np.bitwise_or([33, 4], 1)
array([33, 5])
>>> np.bitwise_or([33, 4], [1, 2])
array([33, 6])
>>> np.bitwise_or(np.array([2, 5, 255]), np.array([4, 4, 4]))
array([ 6, 5, 255])
>>> np.array([2, 5, 255]) | np.array([4, 4, 4])
array([ 6, 5, 255])
>>> np.bitwise_or(np.array([2, 5, 255, 2147483647], dtype=np.int32),
... np.array([4, 4, 4, 2147483647], dtype=np.int32))
array([ 6, 5, 255, 2147483647])
>>> np.bitwise_or([True, True], [False, True])
array([ True, True])
The ``|`` operator can be used as a shorthand for ``np.bitwise_or`` on
ndarrays.
>>> x1 = np.array([2, 5, 255])
>>> x2 = np.array([4, 4, 4])
>>> x1 | x2
array([ 6, 5, 255])
bitwise_right_shift = <ufunc 'right_shift'>
right_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Shift the bits of an integer to the right.
Bits are shifted to the right `x2`. Because the internal
representation of numbers is in binary format, this operation is
equivalent to dividing `x1` by ``2**x2``.
Parameters
----------
x1 : array_like, int
Input values.
x2 : array_like, int
Number of bits to remove at the right of `x1`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray, int
Return `x1` with bits shifted `x2` times to the right.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
left_shift : Shift the bits of an integer to the left.
binary_repr : Return the binary representation of the input number
as a string.
Examples
--------
>>> import numpy as np
>>> np.binary_repr(10)
'1010'
>>> np.right_shift(10, 1)
5
>>> np.binary_repr(5)
'101'
>>> np.right_shift(10, [1,2,3])
array([5, 2, 1])
The ``>>`` operator can be used as a shorthand for ``np.right_shift`` on
ndarrays.
>>> x1 = 10
>>> x2 = np.array([1,2,3])
>>> x1 >> x2
array([5, 2, 1])
bitwise_xor = <ufunc 'bitwise_xor'>
bitwise_xor(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the bit-wise XOR of two arrays element-wise.
Computes the bit-wise XOR of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``^``.
Parameters
----------
x1, x2 : array_like
Only integer and boolean types are handled.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_xor
bitwise_and
bitwise_or
binary_repr :
Return the binary representation of the input number as a string.
Examples
--------
>>> import numpy as np
The number 13 is represented by ``00001101``. Likewise, 17 is
represented by ``00010001``. The bit-wise XOR of 13 and 17 is
therefore ``00011100``, or 28:
>>> np.bitwise_xor(13, 17)
28
>>> np.binary_repr(28)
'11100'
>>> np.bitwise_xor(31, 5)
26
>>> np.bitwise_xor([31,3], 5)
array([26, 6])
>>> np.bitwise_xor([31,3], [5,6])
array([26, 5])
>>> np.bitwise_xor([True, True], [False, True])
array([ True, False])
The ``^`` operator can be used as a shorthand for ``np.bitwise_xor`` on
ndarrays.
>>> x1 = np.array([True, True])
>>> x2 = np.array([False, True])
>>> x1 ^ x2
array([ True, False])
c_ = <numpy.lib._index_tricks_impl.CClass object>
cbrt = <ufunc 'cbrt'>
cbrt(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the cube-root of an array, element-wise.
.. versionadded:: 1.10.0
Parameters
----------
x : array_like
The values whose cube-roots are required.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
An array of the same shape as `x`, containing the
cube root of each element in `x`.
If `out` was provided, `y` is a reference to it.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> np.cbrt([1,8,27])
array([ 1., 2., 3.])
ceil = <ufunc 'ceil'>
ceil(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the ceiling of the input, element-wise.
The ceil of the scalar `x` is the smallest integer `i`, such that
``i >= x``. It is often denoted as :math:`\lceil x \rceil`.
Parameters
----------
x : array_like
Input data.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The ceiling of each element in `x`.
This is a scalar if `x` is a scalar.
See Also
--------
floor, trunc, rint, fix
Examples
--------
>>> import numpy as np
>>> a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
>>> np.ceil(a)
array([-1., -1., -0., 1., 2., 2., 2.])
conj = <ufunc 'conjugate'>
conjugate(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the complex conjugate, element-wise.
The complex conjugate of a complex number is obtained by changing the
sign of its imaginary part.
Parameters
----------
x : array_like
Input value.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The complex conjugate of `x`, with same dtype as `y`.
This is a scalar if `x` is a scalar.
Notes
-----
`conj` is an alias for `conjugate`:
>>> np.conj is np.conjugate
True
Examples
--------
>>> import numpy as np
>>> np.conjugate(1+2j)
(1-2j)
>>> x = np.eye(2) + 1j * np.eye(2)
>>> np.conjugate(x)
array([[ 1.-1.j, 0.-0.j],
[ 0.-0.j, 1.-1.j]])
conjugate = <ufunc 'conjugate'>
conjugate(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the complex conjugate, element-wise.
The complex conjugate of a complex number is obtained by changing the
sign of its imaginary part.
Parameters
----------
x : array_like
Input value.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The complex conjugate of `x`, with same dtype as `y`.
This is a scalar if `x` is a scalar.
Notes
-----
`conj` is an alias for `conjugate`:
>>> np.conj is np.conjugate
True
Examples
--------
>>> import numpy as np
>>> np.conjugate(1+2j)
(1-2j)
>>> x = np.eye(2) + 1j * np.eye(2)
>>> np.conjugate(x)
array([[ 1.-1.j, 0.-0.j],
[ 0.-0.j, 1.-1.j]])
copysign = <ufunc 'copysign'>
copysign(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Change the sign of x1 to that of x2, element-wise.
If `x2` is a scalar, its sign will be copied to all elements of `x1`.
Parameters
----------
x1 : array_like
Values to change the sign of.
x2 : array_like
The sign of `x2` is copied to `x1`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
The values of `x1` with the sign of `x2`.
This is a scalar if both `x1` and `x2` are scalars.
Examples
--------
>>> import numpy as np
>>> np.copysign(1.3, -1)
-1.3
>>> 1/np.copysign(0, 1)
inf
>>> 1/np.copysign(0, -1)
-inf
>>> np.copysign([-1, 0, 1], -1.1)
array([-1., -0., -1.])
>>> np.copysign([-1, 0, 1], np.arange(3)-1)
array([-1., 0., 1.])
cos = <ufunc 'cos'>
cos(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Cosine element-wise.
Parameters
----------
x : array_like
Input array in radians.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding cosine values.
This is a scalar if `x` is a scalar.
Notes
-----
If `out` is provided, the function writes the result into it,
and returns a reference to `out`. (See Examples)
References
----------
M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions.
New York, NY: Dover, 1972.
Examples
--------
>>> import numpy as np
>>> np.cos(np.array([0, np.pi/2, np.pi]))
array([ 1.00000000e+00, 6.12303177e-17, -1.00000000e+00])
>>>
>>> # Example of providing the optional output parameter
>>> out1 = np.array([0], dtype='d')
>>> out2 = np.cos([0.1], out1)
>>> out2 is out1
True
>>>
>>> # Example of ValueError due to provision of shape mis-matched `out`
>>> np.cos(np.zeros((3,3)),np.zeros((2,2)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)
cosh = <ufunc 'cosh'>
cosh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Hyperbolic cosine, element-wise.
Equivalent to ``1/2 * (np.exp(x) + np.exp(-x))`` and ``np.cos(1j*x)``.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array of same shape as `x`.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> np.cosh(0)
1.0
The hyperbolic cosine describes the shape of a hanging cable:
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-4, 4, 1000)
>>> plt.plot(x, np.cosh(x))
>>> plt.show()
deg2rad = <ufunc 'deg2rad'>
deg2rad(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Convert angles from degrees to radians.
Parameters
----------
x : array_like
Angles in degrees.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding angle in radians.
This is a scalar if `x` is a scalar.
See Also
--------
rad2deg : Convert angles from radians to degrees.
unwrap : Remove large jumps in angle by wrapping.
Notes
-----
.. versionadded:: 1.3.0
``deg2rad(x)`` is ``x * pi / 180``.
Examples
--------
>>> import numpy as np
>>> np.deg2rad(180)
3.1415926535897931
degrees = <ufunc 'degrees'>
degrees(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Convert angles from radians to degrees.
Parameters
----------
x : array_like
Input array in radians.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray of floats
The corresponding degree values; if `out` was supplied this is a
reference to it.
This is a scalar if `x` is a scalar.
See Also
--------
rad2deg : equivalent function
Examples
--------
Convert a radian array to degrees
>>> import numpy as np
>>> rad = np.arange(12.)*np.pi/6
>>> np.degrees(rad)
array([ 0., 30., 60., 90., 120., 150., 180., 210., 240.,
270., 300., 330.])
>>> out = np.zeros((rad.shape))
>>> r = np.degrees(rad, out)
>>> np.all(r == out)
True
divide = <ufunc 'divide'>
divide(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Divide arguments element-wise.
Parameters
----------
x1 : array_like
Dividend array.
x2 : array_like
Divisor array.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The quotient ``x1/x2``, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
seterr : Set whether to raise or warn on overflow, underflow and
division by zero.
Notes
-----
Equivalent to ``x1`` / ``x2`` in terms of array-broadcasting.
The ``true_divide(x1, x2)`` function is an alias for
``divide(x1, x2)``.
Examples
--------
>>> import numpy as np
>>> np.divide(2.0, 4.0)
0.5
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.divide(x1, x2)
array([[nan, 1. , 1. ],
[inf, 4. , 2.5],
[inf, 7. , 4. ]])
The ``/`` operator can be used as a shorthand for ``np.divide`` on
ndarrays.
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = 2 * np.ones(3)
>>> x1 / x2
array([[0. , 0.5, 1. ],
[1.5, 2. , 2.5],
[3. , 3.5, 4. ]])
divmod = <ufunc 'divmod'>
divmod(x1, x2[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return element-wise quotient and remainder simultaneously.
.. versionadded:: 1.13.0
``np.divmod(x, y)`` is equivalent to ``(x // y, x % y)``, but faster
because it avoids redundant work. It is used to implement the Python
built-in function ``divmod`` on NumPy arrays.
Parameters
----------
x1 : array_like
Dividend array.
x2 : array_like
Divisor array.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out1 : ndarray
Element-wise quotient resulting from floor division.
This is a scalar if both `x1` and `x2` are scalars.
out2 : ndarray
Element-wise remainder from floor division.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
floor_divide : Equivalent to Python's ``//`` operator.
remainder : Equivalent to Python's ``%`` operator.
modf : Equivalent to ``divmod(x, 1)`` for positive ``x`` with the return
values switched.
Examples
--------
>>> import numpy as np
>>> np.divmod(np.arange(5), 3)
(array([0, 0, 0, 1, 1]), array([0, 1, 2, 0, 1]))
The `divmod` function can be used as a shorthand for ``np.divmod`` on
ndarrays.
>>> x = np.arange(5)
>>> divmod(x, 3)
(array([0, 0, 0, 1, 1]), array([0, 1, 2, 0, 1]))
e = 2.718281828459045
equal = <ufunc 'equal'>
equal(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return (x1 == x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
not_equal, greater_equal, less_equal, greater, less
Examples
--------
>>> import numpy as np
>>> np.equal([0, 1, 3], np.arange(3))
array([ True, True, False])
What is compared are values, not types. So an int (1) and an array of
length one can evaluate as True:
>>> np.equal(1, np.ones(1))
array([ True])
The ``==`` operator can be used as a shorthand for ``np.equal`` on
ndarrays.
>>> a = np.array([2, 4, 6])
>>> b = np.array([2, 4, 2])
>>> a == b
array([ True, True, False])
euler_gamma = 0.5772156649015329
exp = <ufunc 'exp'>
exp(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate the exponential of all elements in the input array.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise exponential of `x`.
This is a scalar if `x` is a scalar.
See Also
--------
expm1 : Calculate ``exp(x) - 1`` for all elements in the array.
exp2 : Calculate ``2**x`` for all elements in the array.
Notes
-----
The irrational number ``e`` is also known as Euler's number. It is
approximately 2.718281, and is the base of the natural logarithm,
``ln`` (this means that, if :math:`x = \ln y = \log_e y`,
then :math:`e^x = y`. For real input, ``exp(x)`` is always positive.
For complex arguments, ``x = a + ib``, we can write
:math:`e^x = e^a e^{ib}`. The first term, :math:`e^a`, is already
known (it is the real argument, described above). The second term,
:math:`e^{ib}`, is :math:`\cos b + i \sin b`, a function with
magnitude 1 and a periodic phase.
References
----------
.. [1] Wikipedia, "Exponential function",
https://en.wikipedia.org/wiki/Exponential_function
.. [2] M. Abramovitz and I. A. Stegun, "Handbook of Mathematical Functions
with Formulas, Graphs, and Mathematical Tables," Dover, 1964, p. 69,
https://personal.math.ubc.ca/~cbm/aands/page_69.htm
Examples
--------
Plot the magnitude and phase of ``exp(x)`` in the complex plane:
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> x = np.linspace(-2*np.pi, 2*np.pi, 100)
>>> xx = x + 1j * x[:, np.newaxis] # a + ib over complex plane
>>> out = np.exp(xx)
>>> plt.subplot(121)
>>> plt.imshow(np.abs(out),
... extent=[-2*np.pi, 2*np.pi, -2*np.pi, 2*np.pi], cmap='gray')
>>> plt.title('Magnitude of exp(x)')
>>> plt.subplot(122)
>>> plt.imshow(np.angle(out),
... extent=[-2*np.pi, 2*np.pi, -2*np.pi, 2*np.pi], cmap='hsv')
>>> plt.title('Phase (angle) of exp(x)')
>>> plt.show()
exp2 = <ufunc 'exp2'>
exp2(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate `2**p` for all `p` in the input array.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Element-wise 2 to the power `x`.
This is a scalar if `x` is a scalar.
See Also
--------
power
Notes
-----
.. versionadded:: 1.3.0
Examples
--------
>>> import numpy as np
>>> np.exp2([2, 3])
array([ 4., 8.])
expm1 = <ufunc 'expm1'>
expm1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Calculate ``exp(x) - 1`` for all elements in the array.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Element-wise exponential minus one: ``out = exp(x) - 1``.
This is a scalar if `x` is a scalar.
See Also
--------
log1p : ``log(1 + x)``, the inverse of expm1.
Notes
-----
This function provides greater precision than ``exp(x) - 1``
for small values of ``x``.
Examples
--------
The true value of ``exp(1e-10) - 1`` is ``1.00000000005e-10`` to
about 32 significant digits. This example shows the superiority of
expm1 in this case.
>>> import numpy as np
>>> np.expm1(1e-10)
1.00000000005e-10
>>> np.exp(1e-10) - 1
1.000000082740371e-10
fabs = <ufunc 'fabs'>
fabs(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the absolute values element-wise.
This function returns the absolute values (positive magnitude) of the
data in `x`. Complex values are not handled, use `absolute` to find the
absolute values of complex data.
Parameters
----------
x : array_like
The array of numbers for which the absolute values are required. If
`x` is a scalar, the result `y` will also be a scalar.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The absolute values of `x`, the returned values are always floats.
This is a scalar if `x` is a scalar.
See Also
--------
absolute : Absolute values including `complex` types.
Examples
--------
>>> import numpy as np
>>> np.fabs(-1)
1.0
>>> np.fabs([-1.2, 1.2])
array([ 1.2, 1.2])
float_power = <ufunc 'float_power'>
float_power(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
First array elements raised to powers from second array, element-wise.
Raise each base in `x1` to the positionally-corresponding power in `x2`.
`x1` and `x2` must be broadcastable to the same shape. This differs from
the power function in that integers, float16, and float32 are promoted to
floats with a minimum precision of float64 so that the result is always
inexact. The intent is that the function will return a usable result for
negative powers and seldom overflow for positive powers.
Negative values raised to a non-integral value will return ``nan``.
To get complex results, cast the input to complex, or specify the
``dtype`` to be ``complex`` (see the example below).
.. versionadded:: 1.12.0
Parameters
----------
x1 : array_like
The bases.
x2 : array_like
The exponents.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The bases in `x1` raised to the exponents in `x2`.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
power : power function that preserves type
Examples
--------
>>> import numpy as np
Cube each element in a list.
>>> x1 = range(6)
>>> x1
[0, 1, 2, 3, 4, 5]
>>> np.float_power(x1, 3)
array([ 0., 1., 8., 27., 64., 125.])
Raise the bases to different exponents.
>>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0]
>>> np.float_power(x1, x2)
array([ 0., 1., 8., 27., 16., 5.])
The effect of broadcasting.
>>> x2 = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
>>> x2
array([[1, 2, 3, 3, 2, 1],
[1, 2, 3, 3, 2, 1]])
>>> np.float_power(x1, x2)
array([[ 0., 1., 8., 27., 16., 5.],
[ 0., 1., 8., 27., 16., 5.]])
Negative values raised to a non-integral value will result in ``nan``
(and a warning will be generated).
>>> x3 = np.array([-1, -4])
>>> with np.errstate(invalid='ignore'):
... p = np.float_power(x3, 1.5)
...
>>> p
array([nan, nan])
To get complex results, give the argument ``dtype=complex``.
>>> np.float_power(x3, 1.5, dtype=complex)
array([-1.83697020e-16-1.j, -1.46957616e-15-8.j])
floor = <ufunc 'floor'>
floor(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the floor of the input, element-wise.
The floor of the scalar `x` is the largest integer `i`, such that
`i <= x`. It is often denoted as :math:`\lfloor x \rfloor`.
Parameters
----------
x : array_like
Input data.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The floor of each element in `x`.
This is a scalar if `x` is a scalar.
See Also
--------
ceil, trunc, rint, fix
Notes
-----
Some spreadsheet programs calculate the "floor-towards-zero", where
``floor(-2.5) == -2``. NumPy instead uses the definition of
`floor` where `floor(-2.5) == -3`. The "floor-towards-zero"
function is called ``fix`` in NumPy.
Examples
--------
>>> import numpy as np
>>> a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
>>> np.floor(a)
array([-2., -2., -1., 0., 1., 1., 2.])
floor_divide = <ufunc 'floor_divide'>
floor_divide(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the largest integer smaller or equal to the division of the inputs.
It is equivalent to the Python ``//`` operator and pairs with the
Python ``%`` (`remainder`), function so that ``a = a % b + b * (a // b)``
up to roundoff.
Parameters
----------
x1 : array_like
Numerator.
x2 : array_like
Denominator.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
y = floor(`x1`/`x2`)
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
remainder : Remainder complementary to floor_divide.
divmod : Simultaneous floor division and remainder.
divide : Standard division.
floor : Round a number to the nearest integer toward minus infinity.
ceil : Round a number to the nearest integer toward infinity.
Examples
--------
>>> import numpy as np
>>> np.floor_divide(7,3)
2
>>> np.floor_divide([1., 2., 3., 4.], 2.5)
array([ 0., 0., 1., 1.])
The ``//`` operator can be used as a shorthand for ``np.floor_divide``
on ndarrays.
>>> x1 = np.array([1., 2., 3., 4.])
>>> x1 // 2.5
array([0., 0., 1., 1.])
fmax = <ufunc 'fmax'>
fmax(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise maximum of array elements.
Compare two arrays and return a new array containing the element-wise
maxima. If one of the elements being compared is a NaN, then the
non-nan element is returned. If both elements are NaNs then the first
is returned. The latter distinction is important for complex NaNs,
which are defined as at least one of the real or imaginary parts being
a NaN. The net effect is that NaNs are ignored when possible.
Parameters
----------
x1, x2 : array_like
The arrays holding the elements to be compared.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The maximum of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
fmin :
Element-wise minimum of two arrays, ignores NaNs.
maximum :
Element-wise maximum of two arrays, propagates NaNs.
amax :
The maximum value of an array along a given axis, propagates NaNs.
nanmax :
The maximum value of an array along a given axis, ignores NaNs.
minimum, amin, nanmin
Notes
-----
.. versionadded:: 1.3.0
The fmax is equivalent to ``np.where(x1 >= x2, x1, x2)`` when neither
x1 nor x2 are NaNs, but it is faster and does proper broadcasting.
Examples
--------
>>> import numpy as np
>>> np.fmax([2, 3, 4], [1, 5, 2])
array([ 2., 5., 4.])
>>> np.fmax(np.eye(2), [0.5, 2])
array([[ 1. , 2. ],
[ 0.5, 2. ]])
>>> np.fmax([np.nan, 0, np.nan],[0, np.nan, np.nan])
array([ 0., 0., nan])
fmin = <ufunc 'fmin'>
fmin(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise minimum of array elements.
Compare two arrays and return a new array containing the element-wise
minima. If one of the elements being compared is a NaN, then the
non-nan element is returned. If both elements are NaNs then the first
is returned. The latter distinction is important for complex NaNs,
which are defined as at least one of the real or imaginary parts being
a NaN. The net effect is that NaNs are ignored when possible.
Parameters
----------
x1, x2 : array_like
The arrays holding the elements to be compared.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The minimum of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
fmax :
Element-wise maximum of two arrays, ignores NaNs.
minimum :
Element-wise minimum of two arrays, propagates NaNs.
amin :
The minimum value of an array along a given axis, propagates NaNs.
nanmin :
The minimum value of an array along a given axis, ignores NaNs.
maximum, amax, nanmax
Notes
-----
.. versionadded:: 1.3.0
The fmin is equivalent to ``np.where(x1 <= x2, x1, x2)`` when neither
x1 nor x2 are NaNs, but it is faster and does proper broadcasting.
Examples
--------
>>> import numpy as np
>>> np.fmin([2, 3, 4], [1, 5, 2])
array([1, 3, 2])
>>> np.fmin(np.eye(2), [0.5, 2])
array([[ 0.5, 0. ],
[ 0. , 1. ]])
>>> np.fmin([np.nan, 0, np.nan],[0, np.nan, np.nan])
array([ 0., 0., nan])
fmod = <ufunc 'fmod'>
fmod(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns the element-wise remainder of division.
This is the NumPy implementation of the C library function fmod, the
remainder has the same sign as the dividend `x1`. It is equivalent to
the Matlab(TM) ``rem`` function and should not be confused with the
Python modulus operator ``x1 % x2``.
Parameters
----------
x1 : array_like
Dividend.
x2 : array_like
Divisor.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : array_like
The remainder of the division of `x1` by `x2`.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
remainder : Equivalent to the Python ``%`` operator.
divide
Notes
-----
The result of the modulo operation for negative dividend and divisors
is bound by conventions. For `fmod`, the sign of result is the sign of
the dividend, while for `remainder` the sign of the result is the sign
of the divisor. The `fmod` function is equivalent to the Matlab(TM)
``rem`` function.
Examples
--------
>>> import numpy as np
>>> np.fmod([-3, -2, -1, 1, 2, 3], 2)
array([-1, 0, -1, 1, 0, 1])
>>> np.remainder([-3, -2, -1, 1, 2, 3], 2)
array([1, 0, 1, 1, 0, 1])
>>> np.fmod([5, 3], [2, 2.])
array([ 1., 1.])
>>> a = np.arange(-3, 3).reshape(3, 2)
>>> a
array([[-3, -2],
[-1, 0],
[ 1, 2]])
>>> np.fmod(a, [2,2])
array([[-1, 0],
[-1, 0],
[ 1, 0]])
frexp = <ufunc 'frexp'>
frexp(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Decompose the elements of x into mantissa and twos exponent.
Returns (`mantissa`, `exponent`), where ``x = mantissa * 2**exponent``.
The mantissa lies in the open interval(-1, 1), while the twos
exponent is a signed integer.
Parameters
----------
x : array_like
Array of numbers to be decomposed.
out1 : ndarray, optional
Output array for the mantissa. Must have the same shape as `x`.
out2 : ndarray, optional
Output array for the exponent. Must have the same shape as `x`.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
mantissa : ndarray
Floating values between -1 and 1.
This is a scalar if `x` is a scalar.
exponent : ndarray
Integer exponents of 2.
This is a scalar if `x` is a scalar.
See Also
--------
ldexp : Compute ``y = x1 * 2**x2``, the inverse of `frexp`.
Notes
-----
Complex dtypes are not supported, they will raise a TypeError.
Examples
--------
>>> import numpy as np
>>> x = np.arange(9)
>>> y1, y2 = np.frexp(x)
>>> y1
array([ 0. , 0.5 , 0.5 , 0.75 , 0.5 , 0.625, 0.75 , 0.875,
0.5 ])
>>> y2
array([0, 1, 2, 2, 3, 3, 3, 3, 4])
>>> y1 * 2**y2
array([ 0., 1., 2., 3., 4., 5., 6., 7., 8.])
gcd = <ufunc 'gcd'>
gcd(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns the greatest common divisor of ``|x1|`` and ``|x2|``
Parameters
----------
x1, x2 : array_like, int
Arrays of values.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
Returns
-------
y : ndarray or scalar
The greatest common divisor of the absolute value of the inputs
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
lcm : The lowest common multiple
Examples
--------
>>> import numpy as np
>>> np.gcd(12, 20)
4
>>> np.gcd.reduce([15, 25, 35])
5
>>> np.gcd(np.arange(6), 20)
array([20, 1, 2, 1, 4, 5])
greater = <ufunc 'greater'>
greater(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the truth value of (x1 > x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
greater_equal, less, less_equal, equal, not_equal
Examples
--------
>>> import numpy as np
>>> np.greater([4,2],[2,2])
array([ True, False])
The ``>`` operator can be used as a shorthand for ``np.greater`` on
ndarrays.
>>> a = np.array([4, 2])
>>> b = np.array([2, 2])
>>> a > b
array([ True, False])
greater_equal = <ufunc 'greater_equal'>
greater_equal(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the truth value of (x1 >= x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : bool or ndarray of bool
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
greater, less, less_equal, equal, not_equal
Examples
--------
>>> import numpy as np
>>> np.greater_equal([4, 2, 1], [2, 2, 2])
array([ True, True, False])
The ``>=`` operator can be used as a shorthand for ``np.greater_equal``
on ndarrays.
>>> a = np.array([4, 2, 1])
>>> b = np.array([2, 2, 2])
>>> a >= b
array([ True, True, False])
heaviside = <ufunc 'heaviside'>
heaviside(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the Heaviside step function.
The Heaviside step function [1]_ is defined as::
0 if x1 < 0
heaviside(x1, x2) = x2 if x1 == 0
1 if x1 > 0
where `x2` is often taken to be 0.5, but 0 and 1 are also sometimes used.
Parameters
----------
x1 : array_like
Input values.
x2 : array_like
The value of the function when x1 is 0.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
The output array, element-wise Heaviside step function of `x1`.
This is a scalar if both `x1` and `x2` are scalars.
Notes
-----
.. versionadded:: 1.13.0
References
----------
.. [1] Wikipedia, "Heaviside step function",
https://en.wikipedia.org/wiki/Heaviside_step_function
Examples
--------
>>> import numpy as np
>>> np.heaviside([-1.5, 0, 2.0], 0.5)
array([ 0. , 0.5, 1. ])
>>> np.heaviside([-1.5, 0, 2.0], 1)
array([ 0., 1., 1.])
hypot = <ufunc 'hypot'>
hypot(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Given the "legs" of a right triangle, return its hypotenuse.
Equivalent to ``sqrt(x1**2 + x2**2)``, element-wise. If `x1` or
`x2` is scalar_like (i.e., unambiguously cast-able to a scalar type),
it is broadcast for use with each element of the other argument.
(See Examples)
Parameters
----------
x1, x2 : array_like
Leg of the triangle(s).
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
z : ndarray
The hypotenuse of the triangle(s).
This is a scalar if both `x1` and `x2` are scalars.
Examples
--------
>>> import numpy as np
>>> np.hypot(3*np.ones((3, 3)), 4*np.ones((3, 3)))
array([[ 5., 5., 5.],
[ 5., 5., 5.],
[ 5., 5., 5.]])
Example showing broadcast of scalar_like argument:
>>> np.hypot(3*np.ones((3, 3)), [4])
array([[ 5., 5., 5.],
[ 5., 5., 5.],
[ 5., 5., 5.]])
index_exp = <numpy.lib._index_tricks_impl.IndexExpression object>
inf = inf
invert = <ufunc 'invert'>
invert(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute bit-wise inversion, or bit-wise NOT, element-wise.
Computes the bit-wise NOT of the underlying binary representation of
the integers in the input arrays. This ufunc implements the C/Python
operator ``~``.
For signed integer inputs, the bit-wise NOT of the absolute value is
returned. In a two's-complement system, this operation effectively flips
all the bits, resulting in a representation that corresponds to the
negative of the input plus one. This is the most common method of
representing signed integers on computers [1]_. A N-bit two's-complement
system can represent every integer in the range :math:`-2^{N-1}` to
:math:`+2^{N-1}-1`.
Parameters
----------
x : array_like
Only integer and boolean types are handled.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Result.
This is a scalar if `x` is a scalar.
See Also
--------
bitwise_and, bitwise_or, bitwise_xor
logical_not
binary_repr :
Return the binary representation of the input number as a string.
Notes
-----
``numpy.bitwise_not`` is an alias for `invert`:
>>> np.bitwise_not is np.invert
True
References
----------
.. [1] Wikipedia, "Two's complement",
https://en.wikipedia.org/wiki/Two's_complement
Examples
--------
>>> import numpy as np
We've seen that 13 is represented by ``00001101``.
The invert or bit-wise NOT of 13 is then:
>>> x = np.invert(np.array(13, dtype=np.uint8))
>>> x
242
>>> np.binary_repr(x, width=8)
'11110010'
The result depends on the bit-width:
>>> x = np.invert(np.array(13, dtype=np.uint16))
>>> x
65522
>>> np.binary_repr(x, width=16)
'1111111111110010'
When using signed integer types, the result is the bit-wise NOT of
the unsigned type, interpreted as a signed integer:
>>> np.invert(np.array([13], dtype=np.int8))
array([-14], dtype=int8)
>>> np.binary_repr(-14, width=8)
'11110010'
Booleans are accepted as well:
>>> np.invert(np.array([True, False]))
array([False, True])
The ``~`` operator can be used as a shorthand for ``np.invert`` on
ndarrays.
>>> x1 = np.array([True, False])
>>> ~x1
array([False, True])
isfinite = <ufunc 'isfinite'>
isfinite(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Test element-wise for finiteness (not infinity and not Not a Number).
The result is returned as a boolean array.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray, bool
True where ``x`` is not positive infinity, negative infinity,
or NaN; false otherwise.
This is a scalar if `x` is a scalar.
See Also
--------
isinf, isneginf, isposinf, isnan
Notes
-----
Not a Number, positive infinity and negative infinity are considered
to be non-finite.
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Also that positive infinity is not equivalent to negative infinity. But
infinity is equivalent to positive infinity. Errors result if the
second argument is also supplied when `x` is a scalar input, or if
first and second arguments have different shapes.
Examples
--------
>>> import numpy as np
>>> np.isfinite(1)
True
>>> np.isfinite(0)
True
>>> np.isfinite(np.nan)
False
>>> np.isfinite(np.inf)
False
>>> np.isfinite(-np.inf)
False
>>> np.isfinite([np.log(-1.),1.,np.log(0)])
array([False, True, False])
>>> x = np.array([-np.inf, 0., np.inf])
>>> y = np.array([2, 2, 2])
>>> np.isfinite(x, y)
array([0, 1, 0])
>>> y
array([0, 1, 0])
isinf = <ufunc 'isinf'>
isinf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Test element-wise for positive or negative infinity.
Returns a boolean array of the same shape as `x`, True where ``x ==
+/-inf``, otherwise False.
Parameters
----------
x : array_like
Input values
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : bool (scalar) or boolean ndarray
True where ``x`` is positive or negative infinity, false otherwise.
This is a scalar if `x` is a scalar.
See Also
--------
isneginf, isposinf, isnan, isfinite
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754).
Errors result if the second argument is supplied when the first
argument is a scalar, or if the first and second arguments have
different shapes.
Examples
--------
>>> import numpy as np
>>> np.isinf(np.inf)
True
>>> np.isinf(np.nan)
False
>>> np.isinf(-np.inf)
True
>>> np.isinf([np.inf, -np.inf, 1.0, np.nan])
array([ True, True, False, False])
>>> x = np.array([-np.inf, 0., np.inf])
>>> y = np.array([2, 2, 2])
>>> np.isinf(x, y)
array([1, 0, 1])
>>> y
array([1, 0, 1])
isnan = <ufunc 'isnan'>
isnan(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Test element-wise for NaN and return result as a boolean array.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or bool
True where ``x`` is NaN, false otherwise.
This is a scalar if `x` is a scalar.
See Also
--------
isinf, isneginf, isposinf, isfinite, isnat
Notes
-----
NumPy uses the IEEE Standard for Binary Floating-Point for Arithmetic
(IEEE 754). This means that Not a Number is not equivalent to infinity.
Examples
--------
>>> import numpy as np
>>> np.isnan(np.nan)
True
>>> np.isnan(np.inf)
False
>>> np.isnan([np.log(-1.),1.,np.log(0)])
array([ True, False, False])
isnat = <ufunc 'isnat'>
isnat(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Test element-wise for NaT (not a time) and return result as a boolean array.
.. versionadded:: 1.13.0
Parameters
----------
x : array_like
Input array with datetime or timedelta data type.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or bool
True where ``x`` is NaT, false otherwise.
This is a scalar if `x` is a scalar.
See Also
--------
isnan, isinf, isneginf, isposinf, isfinite
Examples
--------
>>> import numpy as np
>>> np.isnat(np.datetime64("NaT"))
True
>>> np.isnat(np.datetime64("2016-01-01"))
False
>>> np.isnat(np.array(["NaT", "2016-01-01"], dtype="datetime64[ns]"))
array([ True, False])
lcm = <ufunc 'lcm'>
lcm(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns the lowest common multiple of ``|x1|`` and ``|x2|``
Parameters
----------
x1, x2 : array_like, int
Arrays of values.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
Returns
-------
y : ndarray or scalar
The lowest common multiple of the absolute value of the inputs
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
gcd : The greatest common divisor
Examples
--------
>>> import numpy as np
>>> np.lcm(12, 20)
60
>>> np.lcm.reduce([3, 12, 20])
60
>>> np.lcm.reduce([40, 12, 20])
120
>>> np.lcm(np.arange(6), 20)
array([ 0, 20, 20, 60, 20, 20])
ldexp = <ufunc 'ldexp'>
ldexp(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns x1 * 2**x2, element-wise.
The mantissas `x1` and twos exponents `x2` are used to construct
floating point numbers ``x1 * 2**x2``.
Parameters
----------
x1 : array_like
Array of multipliers.
x2 : array_like, int
Array of twos exponents.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The result of ``x1 * 2**x2``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
frexp : Return (y1, y2) from ``x = y1 * 2**y2``, inverse to `ldexp`.
Notes
-----
Complex dtypes are not supported, they will raise a TypeError.
`ldexp` is useful as the inverse of `frexp`, if used by itself it is
more clear to simply use the expression ``x1 * 2**x2``.
Examples
--------
>>> import numpy as np
>>> np.ldexp(5, np.arange(4))
array([ 5., 10., 20., 40.], dtype=float16)
>>> x = np.arange(6)
>>> np.ldexp(*np.frexp(x))
array([ 0., 1., 2., 3., 4., 5.])
left_shift = <ufunc 'left_shift'>
left_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Shift the bits of an integer to the left.
Bits are shifted to the left by appending `x2` 0s at the right of `x1`.
Since the internal representation of numbers is in binary format, this
operation is equivalent to multiplying `x1` by ``2**x2``.
Parameters
----------
x1 : array_like of integer type
Input values.
x2 : array_like of integer type
Number of zeros to append to `x1`. Has to be non-negative.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : array of integer type
Return `x1` with bits shifted `x2` times to the left.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
right_shift : Shift the bits of an integer to the right.
binary_repr : Return the binary representation of the input number
as a string.
Examples
--------
>>> import numpy as np
>>> np.binary_repr(5)
'101'
>>> np.left_shift(5, 2)
20
>>> np.binary_repr(20)
'10100'
>>> np.left_shift(5, [1,2,3])
array([10, 20, 40])
Note that the dtype of the second argument may change the dtype of the
result and can lead to unexpected results in some cases (see
:ref:`Casting Rules <ufuncs.casting>`):
>>> a = np.left_shift(np.uint8(255), np.int64(1)) # Expect 254
>>> print(a, type(a)) # Unexpected result due to upcasting
510 <class 'numpy.int64'>
>>> b = np.left_shift(np.uint8(255), np.uint8(1))
>>> print(b, type(b))
254 <class 'numpy.uint8'>
The ``<<`` operator can be used as a shorthand for ``np.left_shift`` on
ndarrays.
>>> x1 = 5
>>> x2 = np.array([1, 2, 3])
>>> x1 << x2
array([10, 20, 40])
less = <ufunc 'less'>
less(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the truth value of (x1 < x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
greater, less_equal, greater_equal, equal, not_equal
Examples
--------
>>> import numpy as np
>>> np.less([1, 2], [2, 2])
array([ True, False])
The ``<`` operator can be used as a shorthand for ``np.less`` on ndarrays.
>>> a = np.array([1, 2])
>>> b = np.array([2, 2])
>>> a < b
array([ True, False])
less_equal = <ufunc 'less_equal'>
less_equal(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the truth value of (x1 <= x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
greater, less, greater_equal, equal, not_equal
Examples
--------
>>> import numpy as np
>>> np.less_equal([4, 2, 1], [2, 2, 2])
array([False, True, True])
The ``<=`` operator can be used as a shorthand for ``np.less_equal`` on
ndarrays.
>>> a = np.array([4, 2, 1])
>>> b = np.array([2, 2, 2])
>>> a <= b
array([False, True, True])
little_endian = True
log = <ufunc 'log'>
log(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Natural logarithm, element-wise.
The natural logarithm `log` is the inverse of the exponential function,
so that `log(exp(x)) = x`. The natural logarithm is logarithm in base
`e`.
Parameters
----------
x : array_like
Input value.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The natural logarithm of `x`, element-wise.
This is a scalar if `x` is a scalar.
See Also
--------
log10, log2, log1p, emath.log
Notes
-----
Logarithm is a multivalued function: for each `x` there is an infinite
number of `z` such that `exp(z) = x`. The convention is to return the
`z` whose imaginary part lies in `(-pi, pi]`.
For real-valued input data types, `log` always returns real output. For
each value that cannot be expressed as a real number or infinity, it
yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `log` is a complex analytical function that
has a branch cut `[-inf, 0]` and is continuous from above on it. `log`
handles the floating-point negative zero as an infinitesimal negative
number, conforming to the C99 standard.
In the cases where the input has a negative real part and a very small
negative complex part (approaching 0), the result is so close to `-pi`
that it evaluates to exactly `-pi`.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 67.
https://personal.math.ubc.ca/~cbm/aands/page_67.htm
.. [2] Wikipedia, "Logarithm". https://en.wikipedia.org/wiki/Logarithm
Examples
--------
>>> import numpy as np
>>> np.log([1, np.e, np.e**2, 0])
array([ 0., 1., 2., -inf])
log10 = <ufunc 'log10'>
log10(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the base 10 logarithm of the input array, element-wise.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The logarithm to the base 10 of `x`, element-wise. NaNs are
returned where x is negative.
This is a scalar if `x` is a scalar.
See Also
--------
emath.log10
Notes
-----
Logarithm is a multivalued function: for each `x` there is an infinite
number of `z` such that `10**z = x`. The convention is to return the
`z` whose imaginary part lies in `(-pi, pi]`.
For real-valued input data types, `log10` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `log10` is a complex analytical function that
has a branch cut `[-inf, 0]` and is continuous from above on it.
`log10` handles the floating-point negative zero as an infinitesimal
negative number, conforming to the C99 standard.
In the cases where the input has a negative real part and a very small
negative complex part (approaching 0), the result is so close to `-pi`
that it evaluates to exactly `-pi`.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 67.
https://personal.math.ubc.ca/~cbm/aands/page_67.htm
.. [2] Wikipedia, "Logarithm". https://en.wikipedia.org/wiki/Logarithm
Examples
--------
>>> import numpy as np
>>> np.log10([1e-15, -3.])
array([-15., nan])
log1p = <ufunc 'log1p'>
log1p(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the natural logarithm of one plus the input array, element-wise.
Calculates ``log(1 + x)``.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
Natural logarithm of `1 + x`, element-wise.
This is a scalar if `x` is a scalar.
See Also
--------
expm1 : ``exp(x) - 1``, the inverse of `log1p`.
Notes
-----
For real-valued input, `log1p` is accurate also for `x` so small
that `1 + x == 1` in floating-point accuracy.
Logarithm is a multivalued function: for each `x` there is an infinite
number of `z` such that `exp(z) = 1 + x`. The convention is to return
the `z` whose imaginary part lies in `[-pi, pi]`.
For real-valued input data types, `log1p` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `log1p` is a complex analytical function that
has a branch cut `[-inf, -1]` and is continuous from above on it.
`log1p` handles the floating-point negative zero as an infinitesimal
negative number, conforming to the C99 standard.
References
----------
.. [1] M. Abramowitz and I.A. Stegun, "Handbook of Mathematical Functions",
10th printing, 1964, pp. 67.
https://personal.math.ubc.ca/~cbm/aands/page_67.htm
.. [2] Wikipedia, "Logarithm". https://en.wikipedia.org/wiki/Logarithm
Examples
--------
>>> import numpy as np
>>> np.log1p(1e-99)
1e-99
>>> np.log(1 + 1e-99)
0.0
log2 = <ufunc 'log2'>
log2(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Base-2 logarithm of `x`.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
Base-2 logarithm of `x`.
This is a scalar if `x` is a scalar.
See Also
--------
log, log10, log1p, emath.log2
Notes
-----
.. versionadded:: 1.3.0
Logarithm is a multivalued function: for each `x` there is an infinite
number of `z` such that `2**z = x`. The convention is to return the `z`
whose imaginary part lies in `(-pi, pi]`.
For real-valued input data types, `log2` always returns real output.
For each value that cannot be expressed as a real number or infinity,
it yields ``nan`` and sets the `invalid` floating point error flag.
For complex-valued input, `log2` is a complex analytical function that
has a branch cut `[-inf, 0]` and is continuous from above on it. `log2`
handles the floating-point negative zero as an infinitesimal negative
number, conforming to the C99 standard.
In the cases where the input has a negative real part and a very small
negative complex part (approaching 0), the result is so close to `-pi`
that it evaluates to exactly `-pi`.
Examples
--------
>>> import numpy as np
>>> x = np.array([0, 1, 2, 2**4])
>>> np.log2(x)
array([-inf, 0., 1., 4.])
>>> xi = np.array([0+1.j, 1, 2+0.j, 4.j])
>>> np.log2(xi)
array([ 0.+2.26618007j, 0.+0.j , 1.+0.j , 2.+2.26618007j])
logaddexp = <ufunc 'logaddexp'>
logaddexp(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Logarithm of the sum of exponentiations of the inputs.
Calculates ``log(exp(x1) + exp(x2))``. This function is useful in
statistics where the calculated probabilities of events may be so small
as to exceed the range of normal floating point numbers. In such cases
the logarithm of the calculated probability is stored. This function
allows adding probabilities stored in such a fashion.
Parameters
----------
x1, x2 : array_like
Input values.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
result : ndarray
Logarithm of ``exp(x1) + exp(x2)``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logaddexp2: Logarithm of the sum of exponentiations of inputs in base 2.
Notes
-----
.. versionadded:: 1.3.0
Examples
--------
>>> import numpy as np
>>> prob1 = np.log(1e-50)
>>> prob2 = np.log(2.5e-50)
>>> prob12 = np.logaddexp(prob1, prob2)
>>> prob12
-113.87649168120691
>>> np.exp(prob12)
3.5000000000000057e-50
logaddexp2 = <ufunc 'logaddexp2'>
logaddexp2(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Logarithm of the sum of exponentiations of the inputs in base-2.
Calculates ``log2(2**x1 + 2**x2)``. This function is useful in machine
learning when the calculated probabilities of events may be so small as
to exceed the range of normal floating point numbers. In such cases
the base-2 logarithm of the calculated probability can be used instead.
This function allows adding probabilities stored in such a fashion.
Parameters
----------
x1, x2 : array_like
Input values.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
result : ndarray
Base-2 logarithm of ``2**x1 + 2**x2``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logaddexp: Logarithm of the sum of exponentiations of the inputs.
Notes
-----
.. versionadded:: 1.3.0
Examples
--------
>>> import numpy as np
>>> prob1 = np.log2(1e-50)
>>> prob2 = np.log2(2.5e-50)
>>> prob12 = np.logaddexp2(prob1, prob2)
>>> prob1, prob2, prob12
(-166.09640474436813, -164.77447664948076, -164.28904982231052)
>>> 2**prob12
3.4999999999999914e-50
logical_and = <ufunc 'logical_and'>
logical_and(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the truth value of x1 AND x2 element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or bool
Boolean result of the logical AND operation applied to the elements
of `x1` and `x2`; the shape is determined by broadcasting.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_or, logical_not, logical_xor
bitwise_and
Examples
--------
>>> import numpy as np
>>> np.logical_and(True, False)
False
>>> np.logical_and([True, False], [False, False])
array([False, False])
>>> x = np.arange(5)
>>> np.logical_and(x>1, x<4)
array([False, False, True, True, False])
The ``&`` operator can be used as a shorthand for ``np.logical_and`` on
boolean ndarrays.
>>> a = np.array([True, False])
>>> b = np.array([False, False])
>>> a & b
array([False, False])
logical_not = <ufunc 'logical_not'>
logical_not(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the truth value of NOT x element-wise.
Parameters
----------
x : array_like
Logical NOT is applied to the elements of `x`.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : bool or ndarray of bool
Boolean result with the same shape as `x` of the NOT operation
on elements of `x`.
This is a scalar if `x` is a scalar.
See Also
--------
logical_and, logical_or, logical_xor
Examples
--------
>>> import numpy as np
>>> np.logical_not(3)
False
>>> np.logical_not([True, False, 0, 1])
array([False, True, True, False])
>>> x = np.arange(5)
>>> np.logical_not(x<3)
array([False, False, False, True, True])
logical_or = <ufunc 'logical_or'>
logical_or(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the truth value of x1 OR x2 element-wise.
Parameters
----------
x1, x2 : array_like
Logical OR is applied to the elements of `x1` and `x2`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or bool
Boolean result of the logical OR operation applied to the elements
of `x1` and `x2`; the shape is determined by broadcasting.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_and, logical_not, logical_xor
bitwise_or
Examples
--------
>>> import numpy as np
>>> np.logical_or(True, False)
True
>>> np.logical_or([True, False], [False, False])
array([ True, False])
>>> x = np.arange(5)
>>> np.logical_or(x < 1, x > 3)
array([ True, False, False, False, True])
The ``|`` operator can be used as a shorthand for ``np.logical_or`` on
boolean ndarrays.
>>> a = np.array([True, False])
>>> b = np.array([False, False])
>>> a | b
array([ True, False])
logical_xor = <ufunc 'logical_xor'>
logical_xor(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute the truth value of x1 XOR x2, element-wise.
Parameters
----------
x1, x2 : array_like
Logical XOR is applied to the elements of `x1` and `x2`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : bool or ndarray of bool
Boolean result of the logical XOR operation applied to the elements
of `x1` and `x2`; the shape is determined by broadcasting.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
logical_and, logical_or, logical_not, bitwise_xor
Examples
--------
>>> import numpy as np
>>> np.logical_xor(True, False)
True
>>> np.logical_xor([True, True, False, False], [True, False, True, False])
array([False, True, True, False])
>>> x = np.arange(5)
>>> np.logical_xor(x < 1, x > 3)
array([ True, False, False, False, True])
Simple example showing support of broadcasting
>>> np.logical_xor(0, np.eye(2))
array([[ True, False],
[False, True]])
matmul = <ufunc 'matmul'>
matmul(x1, x2, /, out=None, *, casting='same_kind', order='K', dtype=None, subok=True[, signature, axes, axis])
Matrix product of two arrays.
Parameters
----------
x1, x2 : array_like
Input arrays, scalars not allowed.
out : ndarray, optional
A location into which the result is stored. If provided, it must have
a shape that matches the signature `(n,k),(k,m)->(n,m)`. If not
provided or None, a freshly-allocated array is returned.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
.. versionadded:: 1.16
Now handles ufunc kwargs
Returns
-------
y : ndarray
The matrix product of the inputs.
This is a scalar only when both x1, x2 are 1-d vectors.
Raises
------
ValueError
If the last dimension of `x1` is not the same size as
the second-to-last dimension of `x2`.
If a scalar value is passed in.
See Also
--------
vdot : Complex-conjugating dot product.
tensordot : Sum products over arbitrary axes.
einsum : Einstein summation convention.
dot : alternative matrix product with different broadcasting rules.
Notes
-----
The behavior depends on the arguments in the following way.
- If both arguments are 2-D they are multiplied like conventional
matrices.
- If either argument is N-D, N > 2, it is treated as a stack of
matrices residing in the last two indexes and broadcast accordingly.
- If the first argument is 1-D, it is promoted to a matrix by
prepending a 1 to its dimensions. After matrix multiplication
the prepended 1 is removed.
- If the second argument is 1-D, it is promoted to a matrix by
appending a 1 to its dimensions. After matrix multiplication
the appended 1 is removed.
``matmul`` differs from ``dot`` in two important ways:
- Multiplication by scalars is not allowed, use ``*`` instead.
- Stacks of matrices are broadcast together as if the matrices
were elements, respecting the signature ``(n,k),(k,m)->(n,m)``:
>>> a = np.ones([9, 5, 7, 4])
>>> c = np.ones([9, 5, 4, 3])
>>> np.dot(a, c).shape
(9, 5, 7, 9, 5, 3)
>>> np.matmul(a, c).shape
(9, 5, 7, 3)
>>> # n is 7, k is 4, m is 3
The matmul function implements the semantics of the ``@`` operator
introduced in Python 3.5 following :pep:`465`.
It uses an optimized BLAS library when possible (see `numpy.linalg`).
Examples
--------
For 2-D arrays it is the matrix product:
>>> import numpy as np
>>> a = np.array([[1, 0],
... [0, 1]])
>>> b = np.array([[4, 1],
... [2, 2]])
>>> np.matmul(a, b)
array([[4, 1],
[2, 2]])
For 2-D mixed with 1-D, the result is the usual.
>>> a = np.array([[1, 0],
... [0, 1]])
>>> b = np.array([1, 2])
>>> np.matmul(a, b)
array([1, 2])
>>> np.matmul(b, a)
array([1, 2])
Broadcasting is conventional for stacks of arrays
>>> a = np.arange(2 * 2 * 4).reshape((2, 2, 4))
>>> b = np.arange(2 * 2 * 4).reshape((2, 4, 2))
>>> np.matmul(a,b).shape
(2, 2, 2)
>>> np.matmul(a, b)[0, 1, 1]
98
>>> sum(a[0, 1, :] * b[0 , :, 1])
98
Vector, vector returns the scalar inner product, but neither argument
is complex-conjugated:
>>> np.matmul([2j, 3j], [2j, 3j])
(-13+0j)
Scalar multiplication raises an error.
>>> np.matmul([1,2], 3)
Traceback (most recent call last):
...
ValueError: matmul: Input operand 1 does not have enough dimensions ...
The ``@`` operator can be used as a shorthand for ``np.matmul`` on
ndarrays.
>>> x1 = np.array([2j, 3j])
>>> x2 = np.array([2j, 3j])
>>> x1 @ x2
(-13+0j)
.. versionadded:: 1.10.0
maximum = <ufunc 'maximum'>
maximum(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise maximum of array elements.
Compare two arrays and return a new array containing the element-wise
maxima. If one of the elements being compared is a NaN, then that
element is returned. If both elements are NaNs then the first is
returned. The latter distinction is important for complex NaNs, which
are defined as at least one of the real or imaginary parts being a NaN.
The net effect is that NaNs are propagated.
Parameters
----------
x1, x2 : array_like
The arrays holding the elements to be compared.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The maximum of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
minimum :
Element-wise minimum of two arrays, propagates NaNs.
fmax :
Element-wise maximum of two arrays, ignores NaNs.
amax :
The maximum value of an array along a given axis, propagates NaNs.
nanmax :
The maximum value of an array along a given axis, ignores NaNs.
fmin, amin, nanmin
Notes
-----
The maximum is equivalent to ``np.where(x1 >= x2, x1, x2)`` when
neither x1 nor x2 are nans, but it is faster and does proper
broadcasting.
Examples
--------
>>> import numpy as np
>>> np.maximum([2, 3, 4], [1, 5, 2])
array([2, 5, 4])
>>> np.maximum(np.eye(2), [0.5, 2]) # broadcasting
array([[ 1. , 2. ],
[ 0.5, 2. ]])
>>> np.maximum([np.nan, 0, np.nan], [0, np.nan, np.nan])
array([nan, nan, nan])
>>> np.maximum(np.inf, 1)
inf
mgrid = <numpy.lib._index_tricks_impl.MGridClass object>
minimum = <ufunc 'minimum'>
minimum(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Element-wise minimum of array elements.
Compare two arrays and return a new array containing the element-wise
minima. If one of the elements being compared is a NaN, then that
element is returned. If both elements are NaNs then the first is
returned. The latter distinction is important for complex NaNs, which
are defined as at least one of the real or imaginary parts being a NaN.
The net effect is that NaNs are propagated.
Parameters
----------
x1, x2 : array_like
The arrays holding the elements to be compared.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The minimum of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
maximum :
Element-wise maximum of two arrays, propagates NaNs.
fmin :
Element-wise minimum of two arrays, ignores NaNs.
amin :
The minimum value of an array along a given axis, propagates NaNs.
nanmin :
The minimum value of an array along a given axis, ignores NaNs.
fmax, amax, nanmax
Notes
-----
The minimum is equivalent to ``np.where(x1 <= x2, x1, x2)`` when
neither x1 nor x2 are NaNs, but it is faster and does proper
broadcasting.
Examples
--------
>>> import numpy as np
>>> np.minimum([2, 3, 4], [1, 5, 2])
array([1, 3, 2])
>>> np.minimum(np.eye(2), [0.5, 2]) # broadcasting
array([[ 0.5, 0. ],
[ 0. , 1. ]])
>>> np.minimum([np.nan, 0, np.nan],[0, np.nan, np.nan])
array([nan, nan, nan])
>>> np.minimum(-np.inf, 1)
-inf
mod = <ufunc 'remainder'>
remainder(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns the element-wise remainder of division.
Computes the remainder complementary to the `floor_divide` function. It is
equivalent to the Python modulus operator ``x1 % x2`` and has the same sign
as the divisor `x2`. The MATLAB function equivalent to ``np.remainder``
is ``mod``.
.. warning::
This should not be confused with:
* Python 3.7's `math.remainder` and C's ``remainder``, which
computes the IEEE remainder, which are the complement to
``round(x1 / x2)``.
* The MATLAB ``rem`` function and or the C ``%`` operator which is the
complement to ``int(x1 / x2)``.
Parameters
----------
x1 : array_like
Dividend array.
x2 : array_like
Divisor array.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The element-wise remainder of the quotient ``floor_divide(x1, x2)``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
floor_divide : Equivalent of Python ``//`` operator.
divmod : Simultaneous floor division and remainder.
fmod : Equivalent of the MATLAB ``rem`` function.
divide, floor
Notes
-----
Returns 0 when `x2` is 0 and both `x1` and `x2` are (arrays of)
integers.
``mod`` is an alias of ``remainder``.
Examples
--------
>>> import numpy as np
>>> np.remainder([4, 7], [2, 3])
array([0, 1])
>>> np.remainder(np.arange(7), 5)
array([0, 1, 2, 3, 4, 0, 1])
The ``%`` operator can be used as a shorthand for ``np.remainder`` on
ndarrays.
>>> x1 = np.arange(7)
>>> x1 % 5
array([0, 1, 2, 3, 4, 0, 1])
modf = <ufunc 'modf'>
modf(x[, out1, out2], / [, out=(None, None)], *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the fractional and integral parts of an array, element-wise.
The fractional and integral parts are negative if the given number is
negative.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y1 : ndarray
Fractional part of `x`.
This is a scalar if `x` is a scalar.
y2 : ndarray
Integral part of `x`.
This is a scalar if `x` is a scalar.
Notes
-----
For integer input the return values are floats.
See Also
--------
divmod : ``divmod(x, 1)`` is equivalent to ``modf`` with the return values
switched, except it always has a positive remainder.
Examples
--------
>>> import numpy as np
>>> np.modf([0, 3.5])
(array([ 0. , 0.5]), array([ 0., 3.]))
>>> np.modf(-0.5)
(-0.5, -0)
multiply = <ufunc 'multiply'>
multiply(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Multiply arguments element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays to be multiplied.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The product of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
Notes
-----
Equivalent to `x1` * `x2` in terms of array broadcasting.
Examples
--------
>>> import numpy as np
>>> np.multiply(2.0, 4.0)
8.0
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.multiply(x1, x2)
array([[ 0., 1., 4.],
[ 0., 4., 10.],
[ 0., 7., 16.]])
The ``*`` operator can be used as a shorthand for ``np.multiply`` on
ndarrays.
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> x1 * x2
array([[ 0., 1., 4.],
[ 0., 4., 10.],
[ 0., 7., 16.]])
nan = nan
negative = <ufunc 'negative'>
negative(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Numerical negative, element-wise.
Parameters
----------
x : array_like or scalar
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
Returned array or scalar: `y = -x`.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> np.negative([1.,-1.])
array([-1., 1.])
The unary ``-`` operator can be used as a shorthand for ``np.negative`` on
ndarrays.
>>> x1 = np.array(([1., -1.]))
>>> -x1
array([-1., 1.])
newaxis = None
nextafter = <ufunc 'nextafter'>
nextafter(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the next floating-point value after x1 towards x2, element-wise.
Parameters
----------
x1 : array_like
Values to find the next representable value of.
x2 : array_like
The direction where to look for the next representable value of `x1`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
The next representable values of `x1` in the direction of `x2`.
This is a scalar if both `x1` and `x2` are scalars.
Examples
--------
>>> import numpy as np
>>> eps = np.finfo(np.float64).eps
>>> np.nextafter(1, 2) == eps + 1
True
>>> np.nextafter([1, 2], [2, 1]) == [eps + 1, 2 - eps]
array([ True, True])
not_equal = <ufunc 'not_equal'>
not_equal(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return (x1 != x2) element-wise.
Parameters
----------
x1, x2 : array_like
Input arrays.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array, element-wise comparison of `x1` and `x2`.
Typically of type bool, unless ``dtype=object`` is passed.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
equal, greater, greater_equal, less, less_equal
Examples
--------
>>> import numpy as np
>>> np.not_equal([1.,2.], [1., 3.])
array([False, True])
>>> np.not_equal([1, 2], [[1, 3],[1, 4]])
array([[False, True],
[False, True]])
The ``!=`` operator can be used as a shorthand for ``np.not_equal`` on
ndarrays.
>>> a = np.array([1., 2.])
>>> b = np.array([1., 3.])
>>> a != b
array([False, True])
ogrid = <numpy.lib._index_tricks_impl.OGridClass object>
pi = 3.141592653589793
positive = <ufunc 'positive'>
positive(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Numerical positive, element-wise.
.. versionadded:: 1.13.0
Parameters
----------
x : array_like or scalar
Input array.
Returns
-------
y : ndarray or scalar
Returned array or scalar: `y = +x`.
This is a scalar if `x` is a scalar.
Notes
-----
Equivalent to `x.copy()`, but only defined for types that support
arithmetic.
Examples
--------
>>> import numpy as np
>>> x1 = np.array(([1., -1.]))
>>> np.positive(x1)
array([ 1., -1.])
The unary ``+`` operator can be used as a shorthand for ``np.positive`` on
ndarrays.
>>> x1 = np.array(([1., -1.]))
>>> +x1
array([ 1., -1.])
pow = <ufunc 'power'>
power(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
First array elements raised to powers from second array, element-wise.
Raise each base in `x1` to the positionally-corresponding power in
`x2`. `x1` and `x2` must be broadcastable to the same shape.
An integer type raised to a negative integer power will raise a
``ValueError``.
Negative values raised to a non-integral value will return ``nan``.
To get complex results, cast the input to complex, or specify the
``dtype`` to be ``complex`` (see the example below).
Parameters
----------
x1 : array_like
The bases.
x2 : array_like
The exponents.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The bases in `x1` raised to the exponents in `x2`.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
float_power : power function that promotes integers to float
Examples
--------
>>> import numpy as np
Cube each element in an array.
>>> x1 = np.arange(6)
>>> x1
[0, 1, 2, 3, 4, 5]
>>> np.power(x1, 3)
array([ 0, 1, 8, 27, 64, 125])
Raise the bases to different exponents.
>>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0]
>>> np.power(x1, x2)
array([ 0., 1., 8., 27., 16., 5.])
The effect of broadcasting.
>>> x2 = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
>>> x2
array([[1, 2, 3, 3, 2, 1],
[1, 2, 3, 3, 2, 1]])
>>> np.power(x1, x2)
array([[ 0, 1, 8, 27, 16, 5],
[ 0, 1, 8, 27, 16, 5]])
The ``**`` operator can be used as a shorthand for ``np.power`` on
ndarrays.
>>> x2 = np.array([1, 2, 3, 3, 2, 1])
>>> x1 = np.arange(6)
>>> x1 ** x2
array([ 0, 1, 8, 27, 16, 5])
Negative values raised to a non-integral value will result in ``nan``
(and a warning will be generated).
>>> x3 = np.array([-1.0, -4.0])
>>> with np.errstate(invalid='ignore'):
... p = np.power(x3, 1.5)
...
>>> p
array([nan, nan])
To get complex results, give the argument ``dtype=complex``.
>>> np.power(x3, 1.5, dtype=complex)
array([-1.83697020e-16-1.j, -1.46957616e-15-8.j])
power = <ufunc 'power'>
power(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
First array elements raised to powers from second array, element-wise.
Raise each base in `x1` to the positionally-corresponding power in
`x2`. `x1` and `x2` must be broadcastable to the same shape.
An integer type raised to a negative integer power will raise a
``ValueError``.
Negative values raised to a non-integral value will return ``nan``.
To get complex results, cast the input to complex, or specify the
``dtype`` to be ``complex`` (see the example below).
Parameters
----------
x1 : array_like
The bases.
x2 : array_like
The exponents.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The bases in `x1` raised to the exponents in `x2`.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
float_power : power function that promotes integers to float
Examples
--------
>>> import numpy as np
Cube each element in an array.
>>> x1 = np.arange(6)
>>> x1
[0, 1, 2, 3, 4, 5]
>>> np.power(x1, 3)
array([ 0, 1, 8, 27, 64, 125])
Raise the bases to different exponents.
>>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0]
>>> np.power(x1, x2)
array([ 0., 1., 8., 27., 16., 5.])
The effect of broadcasting.
>>> x2 = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]])
>>> x2
array([[1, 2, 3, 3, 2, 1],
[1, 2, 3, 3, 2, 1]])
>>> np.power(x1, x2)
array([[ 0, 1, 8, 27, 16, 5],
[ 0, 1, 8, 27, 16, 5]])
The ``**`` operator can be used as a shorthand for ``np.power`` on
ndarrays.
>>> x2 = np.array([1, 2, 3, 3, 2, 1])
>>> x1 = np.arange(6)
>>> x1 ** x2
array([ 0, 1, 8, 27, 16, 5])
Negative values raised to a non-integral value will result in ``nan``
(and a warning will be generated).
>>> x3 = np.array([-1.0, -4.0])
>>> with np.errstate(invalid='ignore'):
... p = np.power(x3, 1.5)
...
>>> p
array([nan, nan])
To get complex results, give the argument ``dtype=complex``.
>>> np.power(x3, 1.5, dtype=complex)
array([-1.83697020e-16-1.j, -1.46957616e-15-8.j])
r_ = <numpy.lib._index_tricks_impl.RClass object>
rad2deg = <ufunc 'rad2deg'>
rad2deg(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Convert angles from radians to degrees.
Parameters
----------
x : array_like
Angle in radians.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding angle in degrees.
This is a scalar if `x` is a scalar.
See Also
--------
deg2rad : Convert angles from degrees to radians.
unwrap : Remove large jumps in angle by wrapping.
Notes
-----
.. versionadded:: 1.3.0
rad2deg(x) is ``180 * x / pi``.
Examples
--------
>>> import numpy as np
>>> np.rad2deg(np.pi/2)
90.0
radians = <ufunc 'radians'>
radians(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Convert angles from degrees to radians.
Parameters
----------
x : array_like
Input array in degrees.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding radian values.
This is a scalar if `x` is a scalar.
See Also
--------
deg2rad : equivalent function
Examples
--------
>>> import numpy as np
Convert a degree array to radians
>>> deg = np.arange(12.) * 30.
>>> np.radians(deg)
array([ 0. , 0.52359878, 1.04719755, 1.57079633, 2.0943951 ,
2.61799388, 3.14159265, 3.66519143, 4.1887902 , 4.71238898,
5.23598776, 5.75958653])
>>> out = np.zeros((deg.shape))
>>> ret = np.radians(deg, out)
>>> ret is out
True
reciprocal = <ufunc 'reciprocal'>
reciprocal(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the reciprocal of the argument, element-wise.
Calculates ``1/x``.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
Return array.
This is a scalar if `x` is a scalar.
Notes
-----
.. note::
This function is not designed to work with integers.
For integer arguments with absolute value larger than 1 the result is
always zero because of the way Python handles integer division. For
integer zero the result is an overflow.
Examples
--------
>>> import numpy as np
>>> np.reciprocal(2.)
0.5
>>> np.reciprocal([1, 2., 3.33])
array([ 1. , 0.5 , 0.3003003])
remainder = <ufunc 'remainder'>
remainder(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns the element-wise remainder of division.
Computes the remainder complementary to the `floor_divide` function. It is
equivalent to the Python modulus operator ``x1 % x2`` and has the same sign
as the divisor `x2`. The MATLAB function equivalent to ``np.remainder``
is ``mod``.
.. warning::
This should not be confused with:
* Python 3.7's `math.remainder` and C's ``remainder``, which
computes the IEEE remainder, which are the complement to
``round(x1 / x2)``.
* The MATLAB ``rem`` function and or the C ``%`` operator which is the
complement to ``int(x1 / x2)``.
Parameters
----------
x1 : array_like
Dividend array.
x2 : array_like
Divisor array.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The element-wise remainder of the quotient ``floor_divide(x1, x2)``.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
floor_divide : Equivalent of Python ``//`` operator.
divmod : Simultaneous floor division and remainder.
fmod : Equivalent of the MATLAB ``rem`` function.
divide, floor
Notes
-----
Returns 0 when `x2` is 0 and both `x1` and `x2` are (arrays of)
integers.
``mod`` is an alias of ``remainder``.
Examples
--------
>>> import numpy as np
>>> np.remainder([4, 7], [2, 3])
array([0, 1])
>>> np.remainder(np.arange(7), 5)
array([0, 1, 2, 3, 4, 0, 1])
The ``%`` operator can be used as a shorthand for ``np.remainder`` on
ndarrays.
>>> x1 = np.arange(7)
>>> x1 % 5
array([0, 1, 2, 3, 4, 0, 1])
right_shift = <ufunc 'right_shift'>
right_shift(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Shift the bits of an integer to the right.
Bits are shifted to the right `x2`. Because the internal
representation of numbers is in binary format, this operation is
equivalent to dividing `x1` by ``2**x2``.
Parameters
----------
x1 : array_like, int
Input values.
x2 : array_like, int
Number of bits to remove at the right of `x1`.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray, int
Return `x1` with bits shifted `x2` times to the right.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
left_shift : Shift the bits of an integer to the left.
binary_repr : Return the binary representation of the input number
as a string.
Examples
--------
>>> import numpy as np
>>> np.binary_repr(10)
'1010'
>>> np.right_shift(10, 1)
5
>>> np.binary_repr(5)
'101'
>>> np.right_shift(10, [1,2,3])
array([5, 2, 1])
The ``>>`` operator can be used as a shorthand for ``np.right_shift`` on
ndarrays.
>>> x1 = 10
>>> x2 = np.array([1,2,3])
>>> x1 >> x2
array([5, 2, 1])
rint = <ufunc 'rint'>
rint(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Round elements of the array to the nearest integer.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Output array is same shape and type as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
fix, ceil, floor, trunc
Notes
-----
For values exactly halfway between rounded decimal values, NumPy
rounds to the nearest even value. Thus 1.5 and 2.5 round to 2.0,
-0.5 and 0.5 round to 0.0, etc.
Examples
--------
>>> import numpy as np
>>> a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
>>> np.rint(a)
array([-2., -2., -0., 0., 2., 2., 2.])
s_ = <numpy.lib._index_tricks_impl.IndexExpression object>
sctypeDict = {'a': <class 'numpy.bytes_'>, 'bool': <class 'numpy.bool'...
sign = <ufunc 'sign'>
sign(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns an element-wise indication of the sign of a number.
The `sign` function returns ``-1 if x < 0, 0 if x==0, 1 if x > 0``. nan
is returned for nan inputs.
For complex inputs, the `sign` function returns ``x / abs(x)``, the
generalization of the above (and ``0 if x==0``).
.. versionchanged:: 2.0.0
Definition of complex sign changed to follow the Array API standard.
Parameters
----------
x : array_like
Input values.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The sign of `x`.
This is a scalar if `x` is a scalar.
Notes
-----
There is more than one definition of sign in common use for complex
numbers. The definition used here, :math:`x/|x|`, is the more common
and useful one, but is different from the one used in numpy prior to
version 2.0, :math:`x/\sqrt{x*x}`, which is equivalent to
``sign(x.real) + 0j if x.real != 0 else sign(x.imag) + 0j``.
Examples
--------
>>> import numpy as np
>>> np.sign([-5., 4.5])
array([-1., 1.])
>>> np.sign(0)
0
>>> np.sign([3-4j, 8j])
array([0.6-0.8j, 0. +1.j ])
signbit = <ufunc 'signbit'>
signbit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Returns element-wise True where signbit is set (less than zero).
Parameters
----------
x : array_like
The input value(s).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
result : ndarray of bool
Output array, or reference to `out` if that was supplied.
This is a scalar if `x` is a scalar.
Examples
--------
>>> import numpy as np
>>> np.signbit(-1.2)
True
>>> np.signbit(np.array([1, -2.3, 2.1]))
array([False, True, False])
sin = <ufunc 'sin'>
sin(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Trigonometric sine, element-wise.
Parameters
----------
x : array_like
Angle, in radians (:math:`2 \pi` rad equals 360 degrees).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : array_like
The sine of each element of x.
This is a scalar if `x` is a scalar.
See Also
--------
arcsin, sinh, cos
Notes
-----
The sine is one of the fundamental functions of trigonometry (the
mathematical study of triangles). Consider a circle of radius 1
centered on the origin. A ray comes in from the :math:`+x` axis, makes
an angle at the origin (measured counter-clockwise from that axis), and
departs from the origin. The :math:`y` coordinate of the outgoing
ray's intersection with the unit circle is the sine of that angle. It
ranges from -1 for :math:`x=3\pi / 2` to +1 for :math:`\pi / 2.` The
function has zeroes where the angle is a multiple of :math:`\pi`.
Sines of angles between :math:`\pi` and :math:`2\pi` are negative.
The numerous properties of the sine and related functions are included
in any standard trigonometry text.
Examples
--------
>>> import numpy as np
Print sine of one angle:
>>> np.sin(np.pi/2.)
1.0
Print sines of an array of angles given in degrees:
>>> np.sin(np.array((0., 30., 45., 60., 90.)) * np.pi / 180. )
array([ 0. , 0.5 , 0.70710678, 0.8660254 , 1. ])
Plot the sine function:
>>> import matplotlib.pylab as plt
>>> x = np.linspace(-np.pi, np.pi, 201)
>>> plt.plot(x, np.sin(x))
>>> plt.xlabel('Angle [rad]')
>>> plt.ylabel('sin(x)')
>>> plt.axis('tight')
>>> plt.show()
sinh = <ufunc 'sinh'>
sinh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Hyperbolic sine, element-wise.
Equivalent to ``1/2 * (np.exp(x) - np.exp(-x))`` or
``-1j * np.sin(1j*x)``.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding hyperbolic sine values.
This is a scalar if `x` is a scalar.
Notes
-----
If `out` is provided, the function writes the result into it,
and returns a reference to `out`. (See Examples)
References
----------
M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions.
New York, NY: Dover, 1972, pg. 83.
Examples
--------
>>> import numpy as np
>>> np.sinh(0)
0.0
>>> np.sinh(np.pi*1j/2)
1j
>>> np.sinh(np.pi*1j) # (exact value is 0)
1.2246063538223773e-016j
>>> # Discrepancy due to vagaries of floating point arithmetic.
>>> # Example of providing the optional output parameter
>>> out1 = np.array([0], dtype='d')
>>> out2 = np.sinh([0.1], out1)
>>> out2 is out1
True
>>> # Example of ValueError due to provision of shape mis-matched `out`
>>> np.sinh(np.zeros((3,3)),np.zeros((2,2)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)
spacing = <ufunc 'spacing'>
spacing(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the distance between x and the nearest adjacent number.
Parameters
----------
x : array_like
Values to find the spacing of.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
The spacing of values of `x`.
This is a scalar if `x` is a scalar.
Notes
-----
It can be considered as a generalization of EPS:
``spacing(np.float64(1)) == np.finfo(np.float64).eps``, and there
should not be any representable number between ``x + spacing(x)`` and
x for any finite x.
Spacing of +- inf and NaN is NaN.
Examples
--------
>>> import numpy as np
>>> np.spacing(1) == np.finfo(np.float64).eps
True
sqrt = <ufunc 'sqrt'>
sqrt(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the non-negative square-root of an array, element-wise.
Parameters
----------
x : array_like
The values whose square-roots are required.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
An array of the same shape as `x`, containing the positive
square-root of each element in `x`. If any element in `x` is
complex, a complex array is returned (and the square-roots of
negative reals are calculated). If all of the elements in `x`
are real, so is `y`, with negative elements returning ``nan``.
If `out` was provided, `y` is a reference to it.
This is a scalar if `x` is a scalar.
See Also
--------
emath.sqrt
A version which returns complex numbers when given negative reals.
Note that 0.0 and -0.0 are handled differently for complex inputs.
Notes
-----
*sqrt* has--consistent with common convention--as its branch cut the
real "interval" [`-inf`, 0), and is continuous from above on it.
A branch cut is a curve in the complex plane across which a given
complex function fails to be continuous.
Examples
--------
>>> import numpy as np
>>> np.sqrt([1,4,9])
array([ 1., 2., 3.])
>>> np.sqrt([4, -1, -3+4J])
array([ 2.+0.j, 0.+1.j, 1.+2.j])
>>> np.sqrt([4, -1, np.inf])
array([ 2., nan, inf])
square = <ufunc 'square'>
square(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the element-wise square of the input.
Parameters
----------
x : array_like
Input data.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
out : ndarray or scalar
Element-wise `x*x`, of the same shape and dtype as `x`.
This is a scalar if `x` is a scalar.
See Also
--------
numpy.linalg.matrix_power
sqrt
power
Examples
--------
>>> import numpy as np
>>> np.square([-1j, 1])
array([-1.-0.j, 1.+0.j])
subtract = <ufunc 'subtract'>
subtract(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Subtract arguments, element-wise.
Parameters
----------
x1, x2 : array_like
The arrays to be subtracted from each other.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The difference of `x1` and `x2`, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
Notes
-----
Equivalent to ``x1 - x2`` in terms of array broadcasting.
Examples
--------
>>> import numpy as np
>>> np.subtract(1.0, 4.0)
-3.0
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.subtract(x1, x2)
array([[ 0., 0., 0.],
[ 3., 3., 3.],
[ 6., 6., 6.]])
The ``-`` operator can be used as a shorthand for ``np.subtract`` on
ndarrays.
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> x1 - x2
array([[0., 0., 0.],
[3., 3., 3.],
[6., 6., 6.]])
tan = <ufunc 'tan'>
tan(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute tangent element-wise.
Equivalent to ``np.sin(x)/np.cos(x)`` element-wise.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding tangent values.
This is a scalar if `x` is a scalar.
Notes
-----
If `out` is provided, the function writes the result into it,
and returns a reference to `out`. (See Examples)
References
----------
M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions.
New York, NY: Dover, 1972.
Examples
--------
>>> import numpy as np
>>> from math import pi
>>> np.tan(np.array([-pi,pi/2,pi]))
array([ 1.22460635e-16, 1.63317787e+16, -1.22460635e-16])
>>>
>>> # Example of providing the optional output parameter illustrating
>>> # that what is returned is a reference to said parameter
>>> out1 = np.array([0], dtype='d')
>>> out2 = np.cos([0.1], out1)
>>> out2 is out1
True
>>>
>>> # Example of ValueError due to provision of shape mis-matched `out`
>>> np.cos(np.zeros((3,3)),np.zeros((2,2)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)
tanh = <ufunc 'tanh'>
tanh(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Compute hyperbolic tangent element-wise.
Equivalent to ``np.sinh(x)/np.cosh(x)`` or ``-1j * np.tan(1j*x)``.
Parameters
----------
x : array_like
Input array.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The corresponding hyperbolic tangent values.
This is a scalar if `x` is a scalar.
Notes
-----
If `out` is provided, the function writes the result into it,
and returns a reference to `out`. (See Examples)
References
----------
.. [1] M. Abramowitz and I. A. Stegun, Handbook of Mathematical Functions.
New York, NY: Dover, 1972, pg. 83.
https://personal.math.ubc.ca/~cbm/aands/page_83.htm
.. [2] Wikipedia, "Hyperbolic function",
https://en.wikipedia.org/wiki/Hyperbolic_function
Examples
--------
>>> import numpy as np
>>> np.tanh((0, np.pi*1j, np.pi*1j/2))
array([ 0. +0.00000000e+00j, 0. -1.22460635e-16j, 0. +1.63317787e+16j])
>>> # Example of providing the optional output parameter illustrating
>>> # that what is returned is a reference to said parameter
>>> out1 = np.array([0], dtype='d')
>>> out2 = np.tanh([0.1], out1)
>>> out2 is out1
True
>>> # Example of ValueError due to provision of shape mis-matched `out`
>>> np.tanh(np.zeros((3,3)),np.zeros((2,2)))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: operands could not be broadcast together with shapes (3,3) (2,2)
test = <numpy._pytesttester.PytestTester object>
true_divide = <ufunc 'divide'>
divide(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Divide arguments element-wise.
Parameters
----------
x1 : array_like
Dividend array.
x2 : array_like
Divisor array.
If ``x1.shape != x2.shape``, they must be broadcastable to a common
shape (which becomes the shape of the output).
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The quotient ``x1/x2``, element-wise.
This is a scalar if both `x1` and `x2` are scalars.
See Also
--------
seterr : Set whether to raise or warn on overflow, underflow and
division by zero.
Notes
-----
Equivalent to ``x1`` / ``x2`` in terms of array-broadcasting.
The ``true_divide(x1, x2)`` function is an alias for
``divide(x1, x2)``.
Examples
--------
>>> import numpy as np
>>> np.divide(2.0, 4.0)
0.5
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = np.arange(3.0)
>>> np.divide(x1, x2)
array([[nan, 1. , 1. ],
[inf, 4. , 2.5],
[inf, 7. , 4. ]])
The ``/`` operator can be used as a shorthand for ``np.divide`` on
ndarrays.
>>> x1 = np.arange(9.0).reshape((3, 3))
>>> x2 = 2 * np.ones(3)
>>> x1 / x2
array([[0. , 0.5, 1. ],
[1.5, 2. , 2.5],
[3. , 3.5, 4. ]])
trunc = <ufunc 'trunc'>
trunc(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature])
Return the truncated value of the input, element-wise.
The truncated value of the scalar `x` is the nearest integer `i` which
is closer to zero than `x` is. In short, the fractional part of the
signed number `x` is discarded.
Parameters
----------
x : array_like
Input data.
out : ndarray, None, or tuple of ndarray and None, optional
A location into which the result is stored. If provided, it must have
a shape that the inputs broadcast to. If not provided or None,
a freshly-allocated array is returned. A tuple (possible only as a
keyword argument) must have length equal to the number of outputs.
where : array_like, optional
This condition is broadcast over the input. At locations where the
condition is True, the `out` array will be set to the ufunc result.
Elsewhere, the `out` array will retain its original value.
Note that if an uninitialized `out` array is created via the default
``out=None``, locations within it where the condition is False will
remain uninitialized.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray or scalar
The truncated value of each element in `x`.
This is a scalar if `x` is a scalar.
See Also
--------
ceil, floor, rint, fix
Notes
-----
.. versionadded:: 1.3.0
Examples
--------
>>> import numpy as np
>>> a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
>>> np.trunc(a)
array([-1., -1., -0., 0., 1., 1., 2.])
typecodes = {'All': '?bhilqnpBHILQNPefdgFDGSUVOMm', 'AllFloat': 'efdgF...
vecdot = <ufunc 'vecdot'>
vecdot(x1, x2, /, out=None, *, casting='same_kind', order='K', dtype=None, subok=True[, signature, axes, axis])
Vector dot product of two arrays.
Let :math:`\mathbf{a}` be a vector in `x1` and :math:`\mathbf{b}` be
a corresponding vector in `x2`. The dot product is defined as:
.. math::
\mathbf{a} \cdot \mathbf{b} = \sum_{i=0}^{n-1} \overline{a_i}b_i
where the sum is over the last dimension (unless `axis` is specified) and
where :math:`\overline{a_i}` denotes the complex conjugate if :math:`a_i`
is complex and the identity otherwise.
Parameters
----------
x1, x2 : array_like
Input arrays, scalars not allowed.
out : ndarray, optional
A location into which the result is stored. If provided, it must have
a shape that the broadcasted shape of `x1` and `x2` with the last axis
removed. If not provided or None, a freshly-allocated array is used.
**kwargs
For other keyword-only arguments, see the
:ref:`ufunc docs <ufuncs.kwargs>`.
Returns
-------
y : ndarray
The vector dot product of the inputs.
This is a scalar only when both x1, x2 are 1-d vectors.
Raises
------
ValueError
If the last dimension of `x1` is not the same size as
the last dimension of `x2`.
If a scalar value is passed in.
See Also
--------
vdot : same but flattens arguments first
einsum : Einstein summation convention.
Examples
--------
>>> import numpy as np
Get the projected size along a given normal for an array of vectors.
>>> v = np.array([[0., 5., 0.], [0., 0., 10.], [0., 6., 8.]])
>>> n = np.array([0., 0.6, 0.8])
>>> np.vecdot(v, n)
array([ 3., 8., 10.])
.. versionadded:: 2.0.0
VERSION
2.1.3
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\numpy\__init__.py
control.nyquist
Python Library Documentation: function nyquist_plot in module control.freqplot
nyquist_plot(data, omega=None, plot=None, label_freq=0, color=None, label=None, return_contour=None, title=None, ax=None, unit_circle=False, mt_circles=None, ms_circles=None, **kwargs)
Nyquist plot for a system.
Generates a Nyquist plot for the system over a (optional) frequency
range. The curve is computed by evaluating the Nyquist segment along
the positive imaginary axis, with a mirror image generated to reflect
the negative imaginary axis. Poles on or near the imaginary axis are
avoided using a small indentation. The portion of the Nyquist contour
at infinity is not explicitly computed (since it maps to a constant
value for any system with a proper transfer function).
Parameters
----------
data : list of `LTI` or `NyquistResponseData`
List of linear input/output systems (single system is OK) or
Nyquist responses (computed using `nyquist_response`).
Nyquist curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`.
unit_circle : bool, optional
If True, display the unit circle, to read gain crossover
frequency. The circle style is determined by
`config.defaults['nyquist.circle_style']`.
mt_circles : array_like, optional
Draw circles corresponding to the given magnitudes of sensitivity.
ms_circles : array_like, optional
Draw circles corresponding to the given magnitudes of complementary
sensitivity.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array is given by (nsys, 4) where nsys is the number of
systems or Nyquist responses passed to the function. The second
index specifies the segment type:
- lines[idx, 0]: unscaled portion of the primary curve
- lines[idx, 1]: scaled portion of the primary curve
- lines[idx, 2]: unscaled portion of the mirror curve
- lines[idx, 3]: scaled portion of the mirror curve
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
arrows : int or 1D/2D array of floats, optional
Specify the number of arrows to plot on the Nyquist curve. If an
integer is passed. that number of equally spaced arrows will be
plotted on each of the primary segment and the mirror image. If a
1D array is passed, it should consist of a sorted list of floats
between 0 and 1, indicating the location along the curve to plot an
arrow. If a 2D array is passed, the first row will be used to
specify arrow locations for the primary curve and the second row
will be used for the mirror image. Default value is 2 and can be
set using `config.defaults['nyquist.arrows']`.
arrow_size : float, optional
Arrowhead width and length (in display coordinates). Default value is
8 and can be set using `config.defaults['nyquist.arrow_size']`.
arrow_style : matplotlib.patches.ArrowStyle, optional
Define style used for Nyquist curve arrows (overrides `arrow_size`).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
blend_fraction : float, optional
For portions of the Nyquist curve that are scaled to have a maximum
magnitude of `max_curve_magnitude`, begin a smooth rescaling at
this fraction of `max_curve_magnitude`. Default value is 0.15.
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to indented
portions of the contour are plotted using a different line style.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If `data` is a list, strings should be specified for each
system.
label_freq : int, optional
Label every nth frequency on the plot. If not specified, no labels
are generated.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
max_curve_magnitude : float, optional
Restrict the maximum magnitude of the Nyquist plot to this value.
Portions of the Nyquist plot whose magnitude is restricted are
plotted using a different line style. The default value is 20 and
can be set using `config.defaults['nyquist.max_curve_magnitude']`.
max_curve_offset : float, optional
When plotting scaled portion of the Nyquist plot, increase/decrease
the magnitude by this fraction of the max_curve_magnitude to allow
any overlaps between the primary and mirror curves to be avoided.
The default value is 0.02 and can be set using
`config.defaults['nyquist.max_curve_magnitude']`.
mirror_style : [str, str] or False
Linestyles for mirror image of the Nyquist curve. The first element
is used for unscaled portions of the Nyquist curve, the second element
is used for portions that are scaled (using max_curve_magnitude). If
False then omit completely. Default linestyle (['--', ':']) is
determined by `config.defaults['nyquist.mirror_style']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if `data`
is not a system or list of systems.
plot : bool, optional
(legacy) If given, `nyquist_plot` returns the legacy return values
of (counts, contours). If False, return the values with no plot.
primary_style : [str, str], optional
Linestyles for primary image of the Nyquist curve. The first
element is used for unscaled portions of the Nyquist curve,
the second element is used for portions that are scaled (using
max_curve_magnitude). Default linestyle (['-', '-.']) is
determined by `config.defaults['nyquist.mirror_style']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
return_contour : bool, optional
(legacy) If True, return the encirclement count and Nyquist
contour used to generate the Nyquist plot.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
start_marker : str, optional
Matplotlib marker to use to mark the starting point of the Nyquist
plot. Defaults value is 'o' and can be set using
`config.defaults['nyquist.start_marker']`.
start_marker_size : float, optional
Start marker size (in display coordinates). Default value is
4 and can be set using `config.defaults['nyquist.start_marker_size']`.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
See Also
--------
nyquist_response
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation. If `return_contour` is True,
the exact contour used for evaluation is returned.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dashdot line style and the scaled portions of the mirror
image use a dotted line style.
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> out = ct.nyquist_plot(G)
control.nyquist_plot
Python Library Documentation: function nyquist_plot in module control.freqplot
nyquist_plot(data, omega=None, plot=None, label_freq=0, color=None, label=None, return_contour=None, title=None, ax=None, unit_circle=False, mt_circles=None, ms_circles=None, **kwargs)
Nyquist plot for a system.
Generates a Nyquist plot for the system over a (optional) frequency
range. The curve is computed by evaluating the Nyquist segment along
the positive imaginary axis, with a mirror image generated to reflect
the negative imaginary axis. Poles on or near the imaginary axis are
avoided using a small indentation. The portion of the Nyquist contour
at infinity is not explicitly computed (since it maps to a constant
value for any system with a proper transfer function).
Parameters
----------
data : list of `LTI` or `NyquistResponseData`
List of linear input/output systems (single system is OK) or
Nyquist responses (computed using `nyquist_response`).
Nyquist curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec. Specifying
`omega` as a list of two elements is equivalent to providing
`omega_limits`.
unit_circle : bool, optional
If True, display the unit circle, to read gain crossover
frequency. The circle style is determined by
`config.defaults['nyquist.circle_style']`.
mt_circles : array_like, optional
Draw circles corresponding to the given magnitudes of sensitivity.
ms_circles : array_like, optional
Draw circles corresponding to the given magnitudes of complementary
sensitivity.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array is given by (nsys, 4) where nsys is the number of
systems or Nyquist responses passed to the function. The second
index specifies the segment type:
- lines[idx, 0]: unscaled portion of the primary curve
- lines[idx, 1]: scaled portion of the primary curve
- lines[idx, 2]: unscaled portion of the mirror curve
- lines[idx, 3]: scaled portion of the mirror curve
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
arrows : int or 1D/2D array of floats, optional
Specify the number of arrows to plot on the Nyquist curve. If an
integer is passed. that number of equally spaced arrows will be
plotted on each of the primary segment and the mirror image. If a
1D array is passed, it should consist of a sorted list of floats
between 0 and 1, indicating the location along the curve to plot an
arrow. If a 2D array is passed, the first row will be used to
specify arrow locations for the primary curve and the second row
will be used for the mirror image. Default value is 2 and can be
set using `config.defaults['nyquist.arrows']`.
arrow_size : float, optional
Arrowhead width and length (in display coordinates). Default value is
8 and can be set using `config.defaults['nyquist.arrow_size']`.
arrow_style : matplotlib.patches.ArrowStyle, optional
Define style used for Nyquist curve arrows (overrides `arrow_size`).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
blend_fraction : float, optional
For portions of the Nyquist curve that are scaled to have a maximum
magnitude of `max_curve_magnitude`, begin a smooth rescaling at
this fraction of `max_curve_magnitude`. Default value is 0.15.
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to indented
portions of the contour are plotted using a different line style.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If `data` is a list, strings should be specified for each
system.
label_freq : int, optional
Label every nth frequency on the plot. If not specified, no labels
are generated.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
max_curve_magnitude : float, optional
Restrict the maximum magnitude of the Nyquist plot to this value.
Portions of the Nyquist plot whose magnitude is restricted are
plotted using a different line style. The default value is 20 and
can be set using `config.defaults['nyquist.max_curve_magnitude']`.
max_curve_offset : float, optional
When plotting scaled portion of the Nyquist plot, increase/decrease
the magnitude by this fraction of the max_curve_magnitude to allow
any overlaps between the primary and mirror curves to be avoided.
The default value is 0.02 and can be set using
`config.defaults['nyquist.max_curve_magnitude']`.
mirror_style : [str, str] or False
Linestyles for mirror image of the Nyquist curve. The first element
is used for unscaled portions of the Nyquist curve, the second element
is used for portions that are scaled (using max_curve_magnitude). If
False then omit completely. Default linestyle (['--', ':']) is
determined by `config.defaults['nyquist.mirror_style']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if `data`
is not a system or list of systems.
plot : bool, optional
(legacy) If given, `nyquist_plot` returns the legacy return values
of (counts, contours). If False, return the values with no plot.
primary_style : [str, str], optional
Linestyles for primary image of the Nyquist curve. The first
element is used for unscaled portions of the Nyquist curve,
the second element is used for portions that are scaled (using
max_curve_magnitude). Default linestyle (['-', '-.']) is
determined by `config.defaults['nyquist.mirror_style']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
return_contour : bool, optional
(legacy) If True, return the encirclement count and Nyquist
contour used to generate the Nyquist plot.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
start_marker : str, optional
Matplotlib marker to use to mark the starting point of the Nyquist
plot. Defaults value is 'o' and can be set using
`config.defaults['nyquist.start_marker']`.
start_marker_size : float, optional
Start marker size (in display coordinates). Default value is
4 and can be set using `config.defaults['nyquist.start_marker_size']`.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
See Also
--------
nyquist_response
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation. If `return_contour` is True,
the exact contour used for evaluation is returned.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dashdot line style and the scaled portions of the mirror
image use a dotted line style.
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> out = ct.nyquist_plot(G)
control.nyquist_response
Python Library Documentation: function nyquist_response in module control.freqplot
nyquist_response(sysdata, omega=None, omega_limits=None, omega_num=None, return_contour=False, warn_encirclements=True, warn_nyquist=True, _kwargs=None, _check_kwargs=True, **kwargs)
Nyquist response for a system.
Computes a Nyquist contour for the system over a (optional) frequency
range and evaluates the number of net encirclements. The curve is
computed by evaluating the Nyquist segment along the positive imaginary
axis, with a mirror image generated to reflect the negative imaginary
axis. Poles on or near the imaginary axis are avoided using a small
indentation. The portion of the Nyquist contour at infinity is not
explicitly computed (since it maps to a constant value for any system
with a proper transfer function).
Parameters
----------
sysdata : LTI or list of LTI
List of linear input/output systems (single system is OK). Nyquist
curves for each system are plotted on the same graph.
omega : array_like, optional
Set of frequencies to be evaluated, in rad/sec.
Returns
-------
responses : list of `NyquistResponseData`
For each system, a Nyquist response data object is returned. If
`sysdata` is a single system, a single element is returned (not a
list).
response.count : int
Number of encirclements of the point -1 by the Nyquist curve. If
multiple systems are given, an array of counts is returned.
response.contour : ndarray
The contour used to create the primary Nyquist curve segment. To
obtain the Nyquist curve values, evaluate system(s) along contour.
Other Parameters
----------------
encirclement_threshold : float, optional
Define the threshold for generating a warning if the number of net
encirclements is a non-integer value. Default value is 0.05 and can
be set using `config.defaults['nyquist.encirclement_threshold']`.
indent_direction : str, optional
For poles on the imaginary axis, set the direction of indentation to
be 'right' (default), 'left', or 'none'. The default value can
be set using `config.defaults['nyquist.indent_direction']`.
indent_points : int, optional
Number of points to insert in the Nyquist contour around poles that
are at or near the imaginary axis.
indent_radius : float, optional
Amount to indent the Nyquist contour around poles on or near the
imaginary axis. Portions of the Nyquist plot corresponding to
indented portions of the contour are plotted using a different line
style. The default value can be set using
`config.defaults['nyquist.indent_radius']`.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`.
warn_nyquist : bool, optional
If set to False, turn off warnings about frequencies above Nyquist.
warn_encirclements : bool, optional
If set to False, turn off warnings about number of encirclements not
meeting the Nyquist criterion.
Notes
-----
If a discrete-time model is given, the frequency response is computed
along the upper branch of the unit circle, using the mapping ``z =
exp(1j * omega * dt)`` where `omega` ranges from 0 to pi/`dt` and
`dt` is the discrete timebase. If timebase not specified
(`dt` = True), `dt` is set to 1.
If a continuous-time system contains poles on or near the imaginary
axis, a small indentation will be used to avoid the pole. The radius
of the indentation is given by `indent_radius` and it is taken to the
right of stable poles and the left of unstable poles. If a pole is
exactly on the imaginary axis, the `indent_direction` parameter can be
used to set the direction of indentation. Setting `indent_direction`
to 'none' will turn off indentation.
For those portions of the Nyquist plot in which the contour is indented
to avoid poles, resulting in a scaling of the Nyquist plot, the line
styles are according to the settings of the `primary_style` and
`mirror_style` keywords. By default the scaled portions of the primary
curve use a dotted line style and the scaled portion of the mirror
image use a dashdot line style.
If the legacy keyword `return_contour` is specified as True, the
response object can be iterated over to return ``(count, contour)``.
This behavior is deprecated and will be removed in a future release.
See Also
--------
nyquist_plot
Examples
--------
>>> G = ct.zpk([], [-1, -2, -3], gain=100)
>>> response = ct.nyquist_response(G)
>>> count = response.count
>>> cplt = response.plot()
control.observable_form
Python Library Documentation: function observable_form in module control.canonical
observable_form(xsys)
Convert a system into observable canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state `x`.
Returns
-------
zsys : `StateSpace` object
System in observable canonical form, with state `z`.
T : (M, M) real ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.observable_form(Gs)
>>> Gc.C
array([[1., 0.]])
control.obsv
Python Library Documentation: function obsv in module control.statefbk
obsv(A, C, t=None)
Observability matrix.
Parameters
----------
A, C : array_like or string
Dynamics and output matrix of the system.
t : None or integer
Maximum time horizon of the controllability matrix, max = A.shape[0].
Returns
-------
O : 2D array
Observability matrix.
Examples
--------
>>> G = ct.tf2ss([1], [1, 2, 3])
>>> C = ct.obsv(G.A, G.C)
>>> np.linalg.matrix_rank(C)
np.int64(2)
control.optimal
Python Library Documentation: module control.optimal in control
NAME
control.optimal - Optimization-based control module.
DESCRIPTION
This module provides support for optimization-based controllers for
nonlinear systems with state and input constraints. An optimal
control problem can be solved using the `solve_optimal_trajectory`
function or set up using the `OptimalControlProblem` class and then
solved using the `~OptimalControlProblem.compute_trajectory` method.
Utility functions are available to define common cost functions and
input/state constraints. Optimal estimation problems can be solved
using the `solve_optimal_estimate` function or by using the
`OptimalEstimationProblem` class and the
`~OptimalEstimationProblem.compute_estimate` method..
The docstring examples assume the following import commands::
>>> import numpy as np
>>> import control as ct
>>> import control.optimal as opt
CLASSES
builtins.object
OptimalControlProblem
OptimalEstimationProblem
scipy.optimize._optimize.OptimizeResult(scipy._lib._util._RichResult)
OptimalControlResult
OptimalEstimationResult
class OptimalControlProblem(builtins.object)
| OptimalControlProblem(sys, timepts, integral_cost, trajectory_constraints=None, terminal_cost=None, terminal_constraints=None, initial_guess=None, trajectory_method=None, basis=None, log=False, _kwargs_check=True, **kwargs)
|
| Description of a finite horizon, optimal control problem.
|
| The `OptimalControlProblem` class holds all of the information required
| to specify an optimal control problem: the system dynamics, cost
| function, and constraints. As much as possible, the information used
| to specify an optimal control problem matches the notation and
| terminology of `scipy.optimize` module, with the hope that
| this makes it easier to remember how to describe a problem.
|
| Parameters
| ----------
| sys : `InputOutputSystem`
| I/O system for which the optimal input will be computed.
| timepts : 1D array_like
| List of times at which the optimal input should be computed.
| integral_cost : callable
| Function that returns the integral cost given the current state
| and input. Called as integral_cost(x, u).
| trajectory_constraints : list of constraints, optional
| List of constraints that should hold at each point in the time
| vector. Each element of the list should be an object of type
| `scipy.optimize.LinearConstraint` with arguments ``(A, lb,
| ub)`` or `scipy.optimize.NonlinearConstraint` with arguments
| ``(fun, lb, ub)``. The constraints will be applied at each time point
| along the trajectory.
| terminal_cost : callable, optional
| Function that returns the terminal cost given the final state
| and input. Called as terminal_cost(x, u).
| trajectory_method : string, optional
| Method to use for carrying out the optimization. Currently supported
| methods are 'shooting' and 'collocation' (continuous time only). The
| default value is 'shooting' for discrete-time systems and
| 'collocation' for continuous-time systems.
| initial_guess : (tuple of) 1D or 2D array_like
| Initial states and/or inputs to use as a guess for the optimal
| trajectory. For shooting methods, an array of inputs for each time
| point should be specified. For collocation methods, the initial
| guess is either the input vector or a tuple consisting guesses for
| the state and the input. Guess should either be a 2D vector of
| shape (ninputs, ntimepts) or a 1D input of shape (ninputs,) that
| will be broadcast by extension of the time axis.
| log : bool, optional
| If True, turn on logging messages (using Python logging module).
| Use `logging.basicConfig` to enable logging output
| (e.g., to a file).
|
| Attributes
| ----------
| constraint: list of SciPy constraint objects
| List of `scipy.optimize.LinearConstraint` or
| `scipy.optimize.NonlinearConstraint` objects.
| constraint_lb, constrain_ub, eqconst_value : list of float
| List of constraint bounds.
|
| Other Parameters
| ----------------
| basis : `BasisFamily`, optional
| Use the given set of basis functions for the inputs instead of
| setting the value of the input at each point in the timepts vector.
| terminal_constraints : list of constraints, optional
| List of constraints that should hold at the terminal point in time,
| in the same form as `trajectory_constraints`.
| solve_ivp_method : str, optional
| Set the method used by `scipy.integrate.solve_ivp`.
| solve_ivp_kwargs : str, optional
| Pass additional keywords to `scipy.integrate.solve_ivp`.
| minimize_method : str, optional
| Set the method used by `scipy.optimize.minimize`.
| minimize_options : str, optional
| Set the options keyword used by `scipy.optimize.minimize`.
| minimize_kwargs : str, optional
| Pass additional keywords to `scipy.optimize.minimize`.
|
| Notes
| -----
| To describe an optimal control problem we need an input/output system,
| a set of time points over a a fixed horizon, a cost function, and
| (optionally) a set of constraints on the state and/or input, either
| along the trajectory and at the terminal time. This class sets up an
| optimization over the inputs at each point in time, using the integral
| and terminal costs as well as the trajectory and terminal constraints.
| The `compute_trajectory` method sets up an optimization problem that
| can be solved using `scipy.optimize.minimize`.
|
| The `_cost_function` method takes the information computes the cost of
| the trajectory generated by the proposed input. It does this by calling
| a user-defined function for the integral_cost given the current states
| and inputs at each point along the trajectory and then adding the value
| of a user-defined terminal cost at the final point in the trajectory.
|
| The `_constraint_function` method evaluates the constraint functions
| along the trajectory generated by the proposed input. As in the case
| of the cost function, the constraints are evaluated at the state and
| input along each time point on the trajectory. This information is
| compared against the constraint upper and lower bounds. The constraint
| function is processed in the class initializer, so that it only needs
| to be computed once.
|
| If `basis` is specified, then the optimization is done over coefficients
| of the basis elements. Otherwise, the optimization is performed over the
| values of the input at the specified times (using linear interpolation
| for continuous systems).
|
| The default values for `minimize_method`, `minimize_options`,
| `minimize_kwargs`, `solve_ivp_method`, and `solve_ivp_options` can
| be set using `config.defaults['optimal.<keyword>']`.
|
| Methods defined here:
|
| __init__(self, sys, timepts, integral_cost, trajectory_constraints=None, terminal_cost=None, terminal_constraints=None, initial_guess=None, trajectory_method=None, basis=None, log=False, _kwargs_check=True, **kwargs)
| Set up an optimal control problem.
|
| compute_mpc(self, x, squeeze=None)
| Compute the optimal input at state x.
|
| This function calls the :meth:`compute_trajectory` method and returns
| the input at the first time point.
|
| Parameters
| ----------
| x : array_like or number, optional
| Initial state for the system.
| squeeze : bool, optional
| If True and if the system has a single output, return
| the system output as a 1D array rather than a 2D array. If
| False, return the system output as a 2D array even if
| the system is SISO. Default value set by
| `config.defaults['control.squeeze_time_response']`.
|
| Returns
| -------
| input : array
| Optimal input for the system at the current time, as a 1D array
| (even in the SISO case). Set to None if the optimization failed.
|
| compute_trajectory(self, x, squeeze=None, transpose=None, return_states=True, initial_guess=None, print_summary=True, **kwargs)
| Compute the optimal trajectory starting at state x.
|
| Parameters
| ----------
| x : array_like or number, optional
| Initial state for the system.
| initial_guess : (tuple of) 1D or 2D array_like
| Initial states and/or inputs to use as a guess for the optimal
| trajectory. For shooting methods, an array of inputs for each
| time point should be specified. For collocation methods, the
| initial guess is either the input vector or a tuple consisting
| guesses for the state and the input. Guess should either be a
| 2D vector of shape (ninputs, ntimepts) or a 1D input of shape
| (ninputs,) that will be broadcast by extension of the time axis.
| return_states : bool, optional
| If True (default), return the values of the state at each time.
| squeeze : bool, optional
| If True and if the system has a single output, return
| the system output as a 1D array rather than a 2D array. If
| False, return the system output as a 2D array even if
| the system is SISO. Default value set by
| `config.defaults['control.squeeze_time_response']`.
| transpose : bool, optional
| If True, assume that 2D input arrays are transposed from the
| standard format. Used to convert MATLAB-style inputs to our
| format.
| print_summary : bool, optional
| If True (default), print a short summary of the computation.
|
| Returns
| -------
| res : `OptimalControlResult`
| Bundle object with the results of the optimal control problem.
| res.success : bool
| Boolean flag indicating whether the optimization was successful.
| res.time : array
| Time values of the input.
| res.inputs : array
| Optimal inputs for the system. If the system is SISO and
| squeeze is not True, the array is 1D (indexed by time).
| If the system is not SISO or squeeze is False, the array
| is 2D (indexed by the output number and time).
| res.states : array
| Time evolution of the state vector.
|
| create_mpc_iosystem(self, **kwargs)
| Create an I/O system implementing an MPC controller.
|
| For a discrete-time system, creates an input/output system taking
| the current state x and returning the control u to apply at the
| current time step.
|
| Parameters
| ----------
| name : str, optional
| Name for the system controller. Defaults to a generic system
| name of the form 'sys[i]'.
| inputs : list of str, optional
| Labels for the controller inputs. Defaults to the system state
| labels.
| outputs : list of str, optional
| Labels for the controller outputs. Defaults to the system input
| labels.
| states : list of str, optional
| Labels for the internal controller states, which consist either
| of the input values over the horizon of the controller or the
| coefficients of the basis functions. Defaults to strings of
| the form 'x[i]'.
|
| Returns
| -------
| `NonlinearIOSystem`
|
| Notes
| -----
| Only works for discrete-time systems.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class OptimalControlResult(scipy.optimize._optimize.OptimizeResult)
| OptimalControlResult(ocp, res, return_states=True, print_summary=False, transpose=None, squeeze=None)
|
| Result from solving an optimal control problem.
|
| This class is a subclass of `scipy.optimize.OptimizeResult` with
| additional attributes associated with solving optimal control problems.
| It is used as the return type for optimal control problems.
|
| Parameters
| ----------
| ocp : OptimalControlProblem
| Optimal control problem that generated this solution.
| res : scipy.minimize.OptimizeResult
| Result of optimization.
| print_summary : bool, optional
| If True (default), print a short summary of the computation.
| squeeze : bool, optional
| If True and if the system has a single output, return the system
| output as a 1D array rather than a 2D array. If False, return the
| system output as a 2D array even if the system is SISO. Default
| value set by `config.defaults['control.squeeze_time_response']`.
|
| Attributes
| ----------
| inputs : ndarray
| The optimal inputs associated with the optimal control problem.
| states : ndarray
| If `return_states` was set to true, stores the state trajectory
| associated with the optimal input.
| success : bool
| Whether or not the optimizer exited successful.
| cost : float
| Final cost of the return solution.
| system_simulations, cost_evaluations, constraint_evaluations, eqconst_evaluations : int
| Number of system simulations and evaluations of the cost function,
| (inequality) constraint function, and equality constraint function
| performed during the optimization.
| cost_process_time, constraint_process_time, eqconst_process_time : float
| If logging was enabled, the amount of time spent evaluating the cost
| and constraint functions.
|
| Method resolution order:
| OptimalControlResult
| scipy.optimize._optimize.OptimizeResult
| scipy._lib._util._RichResult
| builtins.dict
| builtins.object
|
| Methods defined here:
|
| __init__(self, ocp, res, return_states=True, print_summary=False, transpose=None, squeeze=None)
| Create a OptimalControlResult object
|
| ----------------------------------------------------------------------
| Methods inherited from scipy._lib._util._RichResult:
|
| __delattr__ = __delitem__(self, key, /)
|
| __dir__(self)
| Default dir() implementation.
|
| __getattr__(self, name)
|
| __repr__(self)
| Return repr(self).
|
| __setattr__ = __setitem__(self, key, value, /)
|
| ----------------------------------------------------------------------
| Data descriptors inherited from scipy._lib._util._RichResult:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.dict:
|
| __contains__(self, key, /)
| True if the dictionary has the specified key, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __ior__(self, value, /)
| Return self|=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __or__(self, value, /)
| Return self|value.
|
| __reversed__(self, /)
| Return a reverse iterator over the dict keys.
|
| __ror__(self, value, /)
| Return value|self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| D.__sizeof__() -> size of D in memory, in bytes
|
| clear(...)
| D.clear() -> None. Remove all items from D.
|
| copy(...)
| D.copy() -> a shallow copy of D
|
| get(self, key, default=None, /)
| Return the value for key if key is in the dictionary, else default.
|
| items(...)
| D.items() -> a set-like object providing a view on D's items
|
| keys(...)
| D.keys() -> a set-like object providing a view on D's keys
|
| pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
|
| If the key is not found, return the default if given; otherwise,
| raise a KeyError.
|
| popitem(self, /)
| Remove and return a (key, value) pair as a 2-tuple.
|
| Pairs are returned in LIFO (last-in, first-out) order.
| Raises KeyError if the dict is empty.
|
| setdefault(self, key, default=None, /)
| Insert key with a value of default if key is not in the dictionary.
|
| Return the value for key if key is in the dictionary, else default.
|
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.dict:
|
| __class_getitem__(...)
| See PEP 585
|
| fromkeys(iterable, value=None, /)
| Create a new dictionary with keys from iterable and values set to value.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.dict:
|
| __new__(*args, **kwargs) class method of builtins.dict
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from builtins.dict:
|
| __hash__ = None
class OptimalEstimationProblem(builtins.object)
| OptimalEstimationProblem(sys, timepts, integral_cost, terminal_cost=None, trajectory_constraints=None, control_indices=None, disturbance_indices=None, **kwargs)
|
| Description of a finite horizon, optimal estimation problem.
|
| The `OptimalEstimationProblem` class holds all of the information
| required to specify an optimal estimation problem: the system dynamics,
| cost function (negative of the log likelihood), and constraints.
|
| Parameters
| ----------
| sys : `InputOutputSystem`
| I/O system for which the optimal input will be computed.
| timepts : 1D array
| Set up time points at which the inputs and outputs are given.
| integral_cost : callable
| Function that returns the integral cost given the estimated state,
| system inputs, and output error. Called as integral_cost(xhat, u,
| v, w) where xhat is the estimated state, u is the applied input to
| the system, v is the estimated disturbance input, and w is the
| difference between the measured and the estimated output.
| trajectory_constraints : list of constraints, optional
| List of constraints that should hold at each point in the time
| vector. Each element of the list should be an object of type
| `scipy.optimize.LinearConstraint` with arguments ``(A, lb,
| ub)`` or `scipy.optimize.NonlinearConstraint` with arguments
| ``(fun, lb, ub)``. The constraints will be applied at each time point
| along the trajectory.
| terminal_cost : callable, optional
| Function that returns the terminal cost given the initial estimated
| state and expected value. Called as terminal_cost(xhat, x0).
| control_indices : int, slice, or list of int or string, optional
| Specify the indices in the system input vector that correspond to
| the control inputs. These inputs will be used as known control
| inputs for the estimator. If value is an integer `m`, the first
| `m` system inputs are used. Otherwise, the value should be a slice
| or a list of indices. The list of indices can be specified as
| either integer offsets or as system input signal names. If not
| specified, defaults to the complement of the disturbance indices
| (see also notes below).
| disturbance_indices : int, list of int, or slice, optional
| Specify the indices in the system input vector that correspond to
| the process disturbances. If value is an integer `m`, the last `m`
| system inputs are used. Otherwise, the value should be a slice or
| a list of indices, as described for `control_indices`. If not
| specified, defaults to the complement of the control indices (see
| also notes below).
|
| Attributes
| ----------
| constraint: list of SciPy constraint objects
| List of `scipy.optimize.LinearConstraint` or
| `scipy.optimize.NonlinearConstraint` objects.
| constraint_lb, constrain_ub, eqconst_value : list of float
| List of constraint bounds.
|
| Other Parameters
| ----------------
| terminal_constraints : list of constraints, optional
| List of constraints that should hold at the terminal point in time,
| in the same form as `trajectory_constraints`.
| solve_ivp_method : str, optional
| Set the method used by `scipy.integrate.solve_ivp`.
| solve_ivp_kwargs : str, optional
| Pass additional keywords to `scipy.integrate.solve_ivp`.
| minimize_method : str, optional
| Set the method used by `scipy.optimize.minimize`.
| minimize_options : str, optional
| Set the options keyword used by `scipy.optimize.minimize`.
| minimize_kwargs : str, optional
| Pass additional keywords to `scipy.optimize.minimize`.
|
| Notes
| -----
| To describe an optimal estimation problem we need an input/output
| system, a set of time points, applied inputs and measured outputs, a
| cost function, and (optionally) a set of constraints on the state
| and/or inputs along the trajectory (and at the terminal time). This
| class sets up an optimization over the state and disturbances at
| each point in time, using the integral and terminal costs as well as
| the trajectory constraints. The `compute_estimate` method solves
| the underling optimization problem using `scipy.optimize.minimize`.
|
| The control input and disturbance indices can be specified using the
| `control_indices` and `disturbance_indices` keywords. If only one is
| given, the other is assumed to be the remaining indices in the system
| input. If neither is given, the disturbance inputs are assumed to be
| the same as the control inputs.
|
| The "cost" (e.g. negative of the log likelihood) of the estimated
| trajectory is computed using the estimated state, the disturbances and
| noise, and the measured output. This is done by calling a user-defined
| function for the integral_cost along the trajectory and then adding the
| value of a user-defined terminal cost at the initial point in the
| trajectory.
|
| The constraint functions are evaluated at each point on the trajectory
| generated by the proposed estimate and disturbances. As in the case of
| the cost function, the constraints are evaluated at the estimated
| state, inputs, and measured outputs along each point on the trajectory.
| This information is compared against the constraint upper and lower
| bounds. The constraint function is processed in the class initializer,
| so that it only needs to be computed once.
|
| The default values for `minimize_method`, `minimize_options`,
| `minimize_kwargs`, `solve_ivp_method`, and `solve_ivp_options`
| can be set using `config.defaults['optimal.<keyword>']`.
|
| Methods defined here:
|
| __init__(self, sys, timepts, integral_cost, terminal_cost=None, trajectory_constraints=None, control_indices=None, disturbance_indices=None, **kwargs)
| Set up an optimal control problem.
|
| compute_estimate(self, outputs=None, inputs=None, initial_state=None, initial_guess=None, squeeze=None, print_summary=True, **kwargs)
| Compute the optimal input at state x.
|
| Parameters
| ----------
| outputs (or Y) : 2D array
| Measured outputs at each time point.
| inputs (or U) : 2D array
| Applied inputs at each time point.
| initial_state (or X0) : 1D array
| Expected initial value of the state.
| initial_guess : 2-tuple of 2D arrays
| A 2-tuple consisting of the estimated states and disturbance
| values to use as a guess for the optimal estimated trajectory.
| squeeze : bool, optional
| If True and if the system has a single disturbance input and
| single measured output, return the system input and output as a
| 1D array rather than a 2D array. If False, return the system
| output as a 2D array even if the system is SISO. Default value
| set by `config.defaults['control.squeeze_time_response']`.
| print_summary : bool, optional
| If True (default), print a short summary of the computation.
|
| Returns
| -------
| res : `OptimalEstimationResult`
| Bundle object with the results of the optimal estimation problem.
| res.success : bool
| Boolean flag indicating whether the optimization was successful.
| res.time : array
| Time values of the input (same as self.timepts).
| res.inputs : array
| Estimated disturbance inputs for the system trajectory.
| res.states : array
| Time evolution of the estimated state vector.
| res.outputs : array
| Estimated measurement noise for the system trajectory.
|
| create_mhe_iosystem(self, estimate_labels=None, measurement_labels=None, control_labels=None, inputs=None, outputs=None, **kwargs)
| Create an I/O system implementing an MPC controller.
|
| This function creates an input/output system that implements a
| moving horizon estimator for a an optimal estimation problem. The
| I/O system takes the system measurements and applied inputs as as
| inputs and outputs the estimated state.
|
| Parameters
| ----------
| estimate_labels : str or list of str, optional
| Set the name of the signals to use for the estimated state
| (estimator outputs). If a single string is specified, it
| should be a format string using the variable `i` as an index.
| Otherwise, a list of strings matching the size of the estimated
| state should be used. Default is "xhat[{i}]". These settings
| can also be overridden using the `outputs` keyword.
| measurement_labels, control_labels : str or list of str, optional
| Set the names of the measurement and control signal names
| (estimator inputs). If a single string is specified, it should
| be a format string using the variable `i` as an index.
| Otherwise, a list of strings matching the size of the system
| inputs and outputs should be used. Default is the signal names
| for the system outputs and control inputs. These settings can
| also be overridden using the `inputs` keyword.
| **kwargs, optional
| Additional keyword arguments to set system, input, and output
| signal names; see `InputOutputSystem`.
|
| Returns
| -------
| estim : `InputOutputSystem`
| An I/O system taking the measured output and applied input for
| the model system and returning the estimated state of the
| system, as determined by solving the optimal estimation problem.
|
| Notes
| -----
| The labels for the input signals for the system are determined
| based on the signal names for the system model used in the optimal
| estimation problem. The system name and signal names can be
| overridden using the `name`, `input`, and `output` keywords, as
| described in `InputOutputSystem`.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
class OptimalEstimationResult(scipy.optimize._optimize.OptimizeResult)
| OptimalEstimationResult(oep, res, return_states=True, print_summary=False, transpose=None, squeeze=None)
|
| Result from solving an optimal estimation problem.
|
| This class is a subclass of `scipy.optimize.OptimizeResult` with
| additional attributes associated with solving optimal estimation
| problems.
|
| Parameters
| ----------
| oep : OptimalEstimationProblem
| Optimal estimation problem that generated this solution.
| res : scipy.minimize.OptimizeResult
| Result of optimization.
| print_summary : bool, optional
| If True (default), print a short summary of the computation.
| squeeze : bool, optional
| If True and if the system has a single output, return the system
| output as a 1D array rather than a 2D array. If False, return the
| system output as a 2D array even if the system is SISO. Default
| value set by `config.defaults['control.squeeze_time_response']`.
|
| Attributes
| ----------
| states : ndarray
| Estimated state trajectory.
| inputs : ndarray
| The disturbances associated with the estimated state trajectory.
| outputs :
| The error between measured outputs and estimated outputs.
| success : bool
| Whether or not the optimizer exited successful.
| problem : OptimalControlProblem
| Optimal control problem that generated this solution.
| cost : float
| Final cost of the return solution.
| system_simulations, {cost, constraint, eqconst}_evaluations : int
| Number of system simulations and evaluations of the cost function,
| (inequality) constraint function, and equality constraint function
| performed during the optimization.
| cost_process_time, constraint_process_time, eqconst_process_time : float
| If logging was enabled, the amount of time spent evaluating the cost
| and constraint functions.
|
| Method resolution order:
| OptimalEstimationResult
| scipy.optimize._optimize.OptimizeResult
| scipy._lib._util._RichResult
| builtins.dict
| builtins.object
|
| Methods defined here:
|
| __init__(self, oep, res, return_states=True, print_summary=False, transpose=None, squeeze=None)
| Create a OptimalControlResult object
|
| ----------------------------------------------------------------------
| Methods inherited from scipy._lib._util._RichResult:
|
| __delattr__ = __delitem__(self, key, /)
|
| __dir__(self)
| Default dir() implementation.
|
| __getattr__(self, name)
|
| __repr__(self)
| Return repr(self).
|
| __setattr__ = __setitem__(self, key, value, /)
|
| ----------------------------------------------------------------------
| Data descriptors inherited from scipy._lib._util._RichResult:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.dict:
|
| __contains__(self, key, /)
| True if the dictionary has the specified key, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __ior__(self, value, /)
| Return self|=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __or__(self, value, /)
| Return self|value.
|
| __reversed__(self, /)
| Return a reverse iterator over the dict keys.
|
| __ror__(self, value, /)
| Return value|self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| D.__sizeof__() -> size of D in memory, in bytes
|
| clear(...)
| D.clear() -> None. Remove all items from D.
|
| copy(...)
| D.copy() -> a shallow copy of D
|
| get(self, key, default=None, /)
| Return the value for key if key is in the dictionary, else default.
|
| items(...)
| D.items() -> a set-like object providing a view on D's items
|
| keys(...)
| D.keys() -> a set-like object providing a view on D's keys
|
| pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
|
| If the key is not found, return the default if given; otherwise,
| raise a KeyError.
|
| popitem(self, /)
| Remove and return a (key, value) pair as a 2-tuple.
|
| Pairs are returned in LIFO (last-in, first-out) order.
| Raises KeyError if the dict is empty.
|
| setdefault(self, key, default=None, /)
| Insert key with a value of default if key is not in the dictionary.
|
| Return the value for key if key is in the dictionary, else default.
|
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.dict:
|
| __class_getitem__(...)
| See PEP 585
|
| fromkeys(iterable, value=None, /)
| Create a new dictionary with keys from iterable and values set to value.
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.dict:
|
| __new__(*args, **kwargs) class method of builtins.dict
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from builtins.dict:
|
| __hash__ = None
FUNCTIONS
create_mpc_iosystem(sys, timepts, integral_cost=None, trajectory_constraints=None, terminal_cost=None, terminal_constraints=None, log=False, **kwargs)
Create a model predictive I/O control system.
This function creates an input/output system that implements a model
predictive control for a system given the time points, cost function and
constraints that define the finite-horizon optimization that should be
carried out at each state.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the optimal input will be computed.
timepts : 1D array_like
List of times at which the optimal input should be computed.
integral_cost (or cost) : callable
Function that returns the integral cost given the current state
and input. Called as ``integral_cost(x, u)``.
trajectory_constraints (or constraints) : list of tuples, optional
List of constraints that should hold at each point in the time
vector. See `solve_optimal_trajectory` for more details.
terminal_cost : callable, optional
Function that returns the terminal cost given the final state
and input. Called as terminal_cost(x, u).
terminal_constraints : list of tuples, optional
List of constraints that should hold at the end of the trajectory.
Same format as `constraints`.
**kwargs
Additional parameters, passed to `scipy.optimize.minimize` and
`~control.NonlinearIOSystem`.
Returns
-------
ctrl : `InputOutputSystem`
An I/O system taking the current state of the model system and
returning the current input to be applied that minimizes the cost
function while satisfying the constraints.
Other Parameters
----------------
inputs, outputs, states : int or list of str, optional
Set the names of the inputs, outputs, and states, as described in
`InputOutputSystem`.
log : bool, optional
If True, turn on logging messages (using Python logging module).
Use `logging.basicConfig` to enable logging output
(e.g., to a file).
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Notes
-----
Additional keyword parameters can be used to fine-tune the behavior of
the underlying optimization and integration functions. See
`OptimalControlProblem` for more information.
disturbance_range_constraint(sys, lb, ub)
Create constraint for bounded disturbances.
This function computes a constraint that puts a bound on the size of
input disturbances. The output of this function can be passed as a
trajectory constraint for optimal estimation problems.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
lb : 1D array
Lower bound for each of the disturbance.
ub : 1D array
Upper bound for each of the disturbance.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
gaussian_likelihood_cost(sys, Rv, Rw=None)
Create cost function for Gaussian likelihoods.
Returns a quadratic cost function that can be used for an optimal
estimation problem. The cost function is of the form
cost = v^T R_v^{-1} v + w^T R_w^{-1} w
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the cost function is being defined.
Rv : 2D array_like
Covariance matrix for input (or state) disturbances.
Rw : 2D array_like
Covariance matrix for sensor noise.
Returns
-------
cost_fun : callable
Function that can be used to evaluate the cost for a given
disturbance and sensor noise. The call signature of the function
is cost_fun(v, w).
input_poly_constraint(sys, A, b)
Create input constraint from polytope.
Creates a linear constraint on the system input of the form A u <= b that
can be used as an optimal control constraint (trajectory or terminal).
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
A : 2D array
Constraint matrix.
b : 1D array
Upper bound for the constraint.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
input_range_constraint(sys, lb, ub)
Create input constraint from polytope.
Creates a linear constraint on the system input that bounds the range of
the individual states to be between `lb` and `ub`. The upper and lower
bounds can be set of 'inf' and '-inf' to indicate there is no constraint
or to the same value to describe an equality constraint.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
lb : 1D array
Lower bound for each of the inputs.
ub : 1D array
Upper bound for each of the inputs.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
output_poly_constraint(sys, A, b)
Create output constraint from polytope.
Creates a linear constraint on the system output of the form A y <= b that
can be used as an optimal control constraint (trajectory or terminal).
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
A : 2D array
Constraint matrix.
b : 1D array
Upper bound for the constraint.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
output_range_constraint(sys, lb, ub)
Create output constraint from range.
Creates a linear constraint on the system output that bounds the range of
the individual states to be between `lb` and `ub`. The upper and lower
bounds can be set of 'inf' and '-inf' to indicate there is no constraint
or to the same value to describe an equality constraint.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
lb : 1D array
Lower bound for each of the outputs.
ub : 1D array
Upper bound for each of the outputs.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
quadratic_cost(sys, Q, R, x0=0, u0=0)
Create quadratic cost function.
Returns a quadratic cost function that can be used for an optimal control
problem. The cost function is of the form
cost = (x - x0)^T Q (x - x0) + (u - u0)^T R (u - u0)
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the cost function is being defined.
Q : 2D array_like
Weighting matrix for state cost. Dimensions must match system state.
R : 2D array_like
Weighting matrix for input cost. Dimensions must match system input.
x0 : 1D array
Nominal value of the system state (for which cost should be zero).
u0 : 1D array
Nominal value of the system input (for which cost should be zero).
Returns
-------
cost_fun : callable
Function that can be used to evaluate the cost at a given state and
input. The call signature of the function is cost_fun(x, u).
solve_ocp = solve_optimal_trajectory(sys, timepts, initial_state=None, integral_cost=None, trajectory_constraints=None, terminal_cost=None, terminal_constraints=None, initial_guess=None, basis=None, squeeze=None, transpose=None, return_states=True, print_summary=True, log=False, **kwargs)
Compute the solution to an optimal control problem.
The optimal trajectory (states and inputs) is computed so as to
approximately minimize a cost function of the following form (for
continuous-time systems):
J(x(.), u(.)) = \int_0^T L(x(t), u(t)) dt + V(x(T)),
where T is the time horizon.
Discrete time systems use a similar formulation, with the integral
replaced by a sum:
J(x[.], u[.]) = \sum_0^{N-1} L(x_k, u_k) + V(x_N),
where N is the time horizon (corresponding to timepts[-1]).
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the optimal input will be computed.
timepts : 1D array_like
List of times at which the optimal input should be computed.
initial_state (or X0) : array_like or number, optional
Initial condition (default = 0).
integral_cost (or cost) : callable
Function that returns the integral cost (L) given the current state
and input. Called as ``integral_cost(x, u)``.
trajectory_constraints (or constraints) : list of tuples, optional
List of constraints that should hold at each point in the time
vector. Each element of the list should consist of a tuple with
first element given by `scipy.optimize.LinearConstraint` or
`scipy.optimize.NonlinearConstraint` and the remaining elements of
the tuple are the arguments that would be passed to those functions.
The following tuples are supported:
* (LinearConstraint, A, lb, ub): The matrix A is multiplied by
stacked vector of the state and input at each point on the
trajectory for comparison against the upper and lower bounds.
* (NonlinearConstraint, fun, lb, ub): a user-specific constraint
function ``fun(x, u)`` is called at each point along the trajectory
and compared against the upper and lower bounds.
The constraints are applied at each time point along the trajectory.
terminal_cost : callable, optional
Function that returns the terminal cost (V) given the final state
and input. Called as terminal_cost(x, u). (For compatibility with
the form of the cost function, u is passed even though it is often
not part of the terminal cost.)
terminal_constraints : list of tuples, optional
List of constraints that should hold at the end of the trajectory.
Same format as `constraints`.
initial_guess : 1D or 2D array_like
Initial inputs to use as a guess for the optimal input. The inputs
should either be a 2D vector of shape (ninputs, len(timepts)) or a
1D input of shape (ninputs,) that will be broadcast by extension of
the time axis.
basis : `BasisFamily`, optional
Use the given set of basis functions for the inputs instead of
setting the value of the input at each point in the timepts vector.
Returns
-------
res : `OptimalControlResult`
Bundle object with the results of the optimal control problem.
res.success : bool
Boolean flag indicating whether the optimization was successful.
res.time : array
Time values of the input.
res.inputs : array
Optimal inputs for the system. If the system is SISO and squeeze is
not True, the array is 1D (indexed by time). If the system is not
SISO or squeeze is False, the array is 2D (indexed by the output
number and time).
res.states : array
Time evolution of the state vector.
Other Parameters
----------------
log : bool, optional
If True, turn on logging messages (using Python logging module).
minimize_method : str, optional
Set the method used by `scipy.optimize.minimize`.
print_summary : bool, optional
If True (default), print a short summary of the computation.
return_states : bool, optional
If True (default), return the values of the state at each time.
squeeze : bool, optional
If True and if the system has a single output, return the system
output as a 1D array rather than a 2D array. If False, return the
system output as a 2D array even if the system is SISO. Default
value set by `config.defaults['control.squeeze_time_response']`.
trajectory_method : string, optional
Method to use for carrying out the optimization. Currently supported
methods are 'shooting' and 'collocation' (continuous time only). The
default value is 'shooting' for discrete-time systems and
'collocation' for continuous-time systems.
transpose : bool, optional
If True, assume that 2D input arrays are transposed from the standard
format. Used to convert MATLAB-style inputs to our format.
Notes
-----
For discrete-time systems, the final value of the timepts vector
specifies the final time t_N, and the trajectory cost is computed from
time t_0 to t_{N-1}. Note that the input u_N does not affect the state
x_N and so it should always be returned as 0. Further, if neither a
terminal cost nor a terminal constraint is given, then the input at
time point t_{N-1} does not affect the cost function and hence u_{N-1}
will also be returned as zero. If you want the trajectory cost to
include state costs at time t_{N}, then you can set `terminal_cost` to
be the same function as `cost`.
Additional keyword parameters can be used to fine-tune the behavior of
the underlying optimization and integration functions. See
`OptimalControlProblem` for more information.
solve_oep = solve_optimal_estimate(sys, timepts, outputs=None, inputs=None, integral_cost=None, initial_state=None, trajectory_constraints=None, initial_guess=None, squeeze=None, print_summary=True, **kwargs)
Compute the solution to a finite horizon estimation problem.
This function computes the maximum likelihood estimate of a system
state given the input and output over a fixed horizon. The likelihood
is evaluated according to a cost function whose value is minimized
to compute the maximum likelihood estimate.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the optimal input will be computed.
timepts : 1D array_like
List of times at which the optimal input should be computed.
outputs (or Y) : 2D array_like
Values of the outputs at each time point.
inputs (or U) : 2D array_like
Values of the inputs at each time point.
integral_cost (or cost) : callable
Function that returns the cost given the current state
and input. Called as ``cost(y, u, x0)``.
initial_state (or X0) : 1D array_like, optional
Mean value of the initial condition (defaults to 0).
trajectory_constraints : list of tuples, optional
List of constraints that should hold at each point in the time
vector. See `solve_optimal_trajectory` for more information.
control_indices : int, slice, or list of int or string, optional
Specify the indices in the system input vector that correspond to
the control inputs. For more information on possible values, see
`OptimalEstimationProblem`.
disturbance_indices : int, list of int, or slice, optional
Specify the indices in the system input vector that correspond to
the input disturbances. For more information on possible values, see
`OptimalEstimationProblem`.
initial_guess : 2D array_like, optional
Initial guess for the state estimate at each time point.
print_summary : bool, optional
If True (default), print a short summary of the computation.
squeeze : bool, optional
If True and if the system has a single output, return the system
output as a 1D array rather than a 2D array. If False, return the
system output as a 2D array even if the system is SISO. Default
value set by `config.defaults['control.squeeze_time_response']`.
Returns
-------
res : `TimeResponseData`
Bundle object with the estimated state and noise values.
res.success : bool
Boolean flag indicating whether the optimization was successful.
res.time : array
Time values of the input.
res.inputs : array
Disturbance values corresponding to the estimated state. If the
system is SISO and squeeze is not True, the array is 1D (indexed by
time). If the system is not SISO or squeeze is False, the array is
2D (indexed by the output number and time).
res.states : array
Estimated state vector over the given time points.
res.outputs : array
Noise values corresponding to the estimated state. If the system
is SISO and squeeze is not True, the array is 1D (indexed by time).
If the system is not SISO or squeeze is False, the array is 2D
(indexed by the output number and time).
Notes
-----
Additional keyword parameters can be used to fine-tune the behavior of
the underlying optimization and integration functions. See
`OptimalControlProblem` for more information.
solve_optimal_estimate(sys, timepts, outputs=None, inputs=None, integral_cost=None, initial_state=None, trajectory_constraints=None, initial_guess=None, squeeze=None, print_summary=True, **kwargs)
Compute the solution to a finite horizon estimation problem.
This function computes the maximum likelihood estimate of a system
state given the input and output over a fixed horizon. The likelihood
is evaluated according to a cost function whose value is minimized
to compute the maximum likelihood estimate.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the optimal input will be computed.
timepts : 1D array_like
List of times at which the optimal input should be computed.
outputs (or Y) : 2D array_like
Values of the outputs at each time point.
inputs (or U) : 2D array_like
Values of the inputs at each time point.
integral_cost (or cost) : callable
Function that returns the cost given the current state
and input. Called as ``cost(y, u, x0)``.
initial_state (or X0) : 1D array_like, optional
Mean value of the initial condition (defaults to 0).
trajectory_constraints : list of tuples, optional
List of constraints that should hold at each point in the time
vector. See `solve_optimal_trajectory` for more information.
control_indices : int, slice, or list of int or string, optional
Specify the indices in the system input vector that correspond to
the control inputs. For more information on possible values, see
`OptimalEstimationProblem`.
disturbance_indices : int, list of int, or slice, optional
Specify the indices in the system input vector that correspond to
the input disturbances. For more information on possible values, see
`OptimalEstimationProblem`.
initial_guess : 2D array_like, optional
Initial guess for the state estimate at each time point.
print_summary : bool, optional
If True (default), print a short summary of the computation.
squeeze : bool, optional
If True and if the system has a single output, return the system
output as a 1D array rather than a 2D array. If False, return the
system output as a 2D array even if the system is SISO. Default
value set by `config.defaults['control.squeeze_time_response']`.
Returns
-------
res : `TimeResponseData`
Bundle object with the estimated state and noise values.
res.success : bool
Boolean flag indicating whether the optimization was successful.
res.time : array
Time values of the input.
res.inputs : array
Disturbance values corresponding to the estimated state. If the
system is SISO and squeeze is not True, the array is 1D (indexed by
time). If the system is not SISO or squeeze is False, the array is
2D (indexed by the output number and time).
res.states : array
Estimated state vector over the given time points.
res.outputs : array
Noise values corresponding to the estimated state. If the system
is SISO and squeeze is not True, the array is 1D (indexed by time).
If the system is not SISO or squeeze is False, the array is 2D
(indexed by the output number and time).
Notes
-----
Additional keyword parameters can be used to fine-tune the behavior of
the underlying optimization and integration functions. See
`OptimalControlProblem` for more information.
solve_optimal_trajectory(sys, timepts, initial_state=None, integral_cost=None, trajectory_constraints=None, terminal_cost=None, terminal_constraints=None, initial_guess=None, basis=None, squeeze=None, transpose=None, return_states=True, print_summary=True, log=False, **kwargs)
Compute the solution to an optimal control problem.
The optimal trajectory (states and inputs) is computed so as to
approximately minimize a cost function of the following form (for
continuous-time systems):
J(x(.), u(.)) = \int_0^T L(x(t), u(t)) dt + V(x(T)),
where T is the time horizon.
Discrete time systems use a similar formulation, with the integral
replaced by a sum:
J(x[.], u[.]) = \sum_0^{N-1} L(x_k, u_k) + V(x_N),
where N is the time horizon (corresponding to timepts[-1]).
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the optimal input will be computed.
timepts : 1D array_like
List of times at which the optimal input should be computed.
initial_state (or X0) : array_like or number, optional
Initial condition (default = 0).
integral_cost (or cost) : callable
Function that returns the integral cost (L) given the current state
and input. Called as ``integral_cost(x, u)``.
trajectory_constraints (or constraints) : list of tuples, optional
List of constraints that should hold at each point in the time
vector. Each element of the list should consist of a tuple with
first element given by `scipy.optimize.LinearConstraint` or
`scipy.optimize.NonlinearConstraint` and the remaining elements of
the tuple are the arguments that would be passed to those functions.
The following tuples are supported:
* (LinearConstraint, A, lb, ub): The matrix A is multiplied by
stacked vector of the state and input at each point on the
trajectory for comparison against the upper and lower bounds.
* (NonlinearConstraint, fun, lb, ub): a user-specific constraint
function ``fun(x, u)`` is called at each point along the trajectory
and compared against the upper and lower bounds.
The constraints are applied at each time point along the trajectory.
terminal_cost : callable, optional
Function that returns the terminal cost (V) given the final state
and input. Called as terminal_cost(x, u). (For compatibility with
the form of the cost function, u is passed even though it is often
not part of the terminal cost.)
terminal_constraints : list of tuples, optional
List of constraints that should hold at the end of the trajectory.
Same format as `constraints`.
initial_guess : 1D or 2D array_like
Initial inputs to use as a guess for the optimal input. The inputs
should either be a 2D vector of shape (ninputs, len(timepts)) or a
1D input of shape (ninputs,) that will be broadcast by extension of
the time axis.
basis : `BasisFamily`, optional
Use the given set of basis functions for the inputs instead of
setting the value of the input at each point in the timepts vector.
Returns
-------
res : `OptimalControlResult`
Bundle object with the results of the optimal control problem.
res.success : bool
Boolean flag indicating whether the optimization was successful.
res.time : array
Time values of the input.
res.inputs : array
Optimal inputs for the system. If the system is SISO and squeeze is
not True, the array is 1D (indexed by time). If the system is not
SISO or squeeze is False, the array is 2D (indexed by the output
number and time).
res.states : array
Time evolution of the state vector.
Other Parameters
----------------
log : bool, optional
If True, turn on logging messages (using Python logging module).
minimize_method : str, optional
Set the method used by `scipy.optimize.minimize`.
print_summary : bool, optional
If True (default), print a short summary of the computation.
return_states : bool, optional
If True (default), return the values of the state at each time.
squeeze : bool, optional
If True and if the system has a single output, return the system
output as a 1D array rather than a 2D array. If False, return the
system output as a 2D array even if the system is SISO. Default
value set by `config.defaults['control.squeeze_time_response']`.
trajectory_method : string, optional
Method to use for carrying out the optimization. Currently supported
methods are 'shooting' and 'collocation' (continuous time only). The
default value is 'shooting' for discrete-time systems and
'collocation' for continuous-time systems.
transpose : bool, optional
If True, assume that 2D input arrays are transposed from the standard
format. Used to convert MATLAB-style inputs to our format.
Notes
-----
For discrete-time systems, the final value of the timepts vector
specifies the final time t_N, and the trajectory cost is computed from
time t_0 to t_{N-1}. Note that the input u_N does not affect the state
x_N and so it should always be returned as 0. Further, if neither a
terminal cost nor a terminal constraint is given, then the input at
time point t_{N-1} does not affect the cost function and hence u_{N-1}
will also be returned as zero. If you want the trajectory cost to
include state costs at time t_{N}, then you can set `terminal_cost` to
be the same function as `cost`.
Additional keyword parameters can be used to fine-tune the behavior of
the underlying optimization and integration functions. See
`OptimalControlProblem` for more information.
state_poly_constraint(sys, A, b)
Create state constraint from polytope.
Creates a linear constraint on the system state of the form A x <= b that
can be used as an optimal control constraint (trajectory or terminal).
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
A : 2D array
Constraint matrix.
b : 1D array
Upper bound for the constraint.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
state_range_constraint(sys, lb, ub)
Create state constraint from range.
Creates a linear constraint on the system state that bounds the range of
the individual states to be between `lb` and `ub`. The upper and lower
bounds can be set of 'inf' and '-inf' to indicate there is no constraint
or to the same value to describe an equality constraint.
Parameters
----------
sys : `InputOutputSystem`
I/O system for which the constraint is being defined.
lb : 1D array
Lower bound for each of the states.
ub : 1D array
Upper bound for each of the states.
Returns
-------
constraint : tuple
A tuple consisting of the constraint type and parameter values.
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\optimal.py
control.pade
Python Library Documentation: function pade in module control.delay
pade(T, n=1, numdeg=None)
Create a linear system that approximates a delay.
Return the numerator and denominator coefficients of the Pade
approximation of the given order.
Parameters
----------
T : number
Time. delay
n : positive integer
Degree of denominator of approximation.
numdeg : integer, or None (the default)
If numdeg is None, numerator degree equals denominator degree.
If numdeg >= 0, specifies degree of numerator.
If numdeg < 0, numerator degree is n+numdeg.
Returns
-------
num, den : ndarray
Polynomial coefficients of the delay model, in descending powers of s.
Notes
-----
Based on [1]_ and [2]_.
References
----------
.. [1] Algorithm 11.3.1 in Golub and van Loan, "Matrix Computation" 3rd.
Ed. pp. 572-574.
.. [2] M. Vajta, "Some remarks on Padé-approximations",
3rd TEMPUS-INTCOM Symposium.
Examples
--------
>>> delay = 1
>>> num, den = ct.pade(delay, 3)
>>> num, den
([-1.0, 12.0, -60.0, 120.0], [1.0, 12.0, 60.0, 120.0])
>>> num, den = ct.pade(delay, 3, -2)
>>> num, den
([-6.0, 24.0], [1.0, 6.0, 18.0, 24.0])
control.pandas_check
Python Library Documentation: function pandas_check in module control.exception
pandas_check()
Return True if pandas is installed, otherwise False.
control.pandas_installed
Python Library Documentation: NoneType object class NoneType(object) | Methods defined here: | | __bool__(self, /) | True if self else False | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __le__(self, value, /) | Return self<=value. | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) | Create and return a new object. See help(type) for accurate signature.
control.parallel
Python Library Documentation: function parallel in module control.bdalg
parallel(*sys, **kwargs)
parallel(sys1, sys2[, ..., sysn])
Parallel connection of I/O systems.
Generates a parallel connection ``sys1 + sys2 [+ ... + sysn]``.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `InputOutputSystem`
I/O systems to combine.
Returns
-------
out : `InputOutputSystem`
Parallel interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i'` (where 's' is one of 'u',
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys1` and `sys2` do not have the same numbers of inputs and
outputs.
See Also
--------
append, feedback, interconnect, negate, series
Notes
-----
This function is a wrapper for the __add__ function in the
`StateSpace` and `TransferFunction` classes. The output type is usually
the type of `sys1`. If `sys1` is a scalar, then the output type is
the type of `sys2`.
If both systems have a defined timebase (`dt` = 0 for continuous time,
`dt` > 0 for discrete time), then the timebase for both systems must
match. If only one of the system has a timebase, the return
timebase will be set to match it.
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.parallel(G1, G2) # Same as sys3 = sys1 + sys2
>>> G.ninputs, G.noutputs, G.nstates
(1, 1, 7)
>>> G1 = ct.rss(3, inputs=3, outputs=4)
>>> G2 = ct.rss(4, inputs=3, outputs=4)
>>> G = ct.parallel(G1, G2) # Add another system
>>> G.ninputs, G.noutputs, G.nstates
(3, 4, 7)
control.passivity
Python Library Documentation: module control.passivity in control
NAME
control.passivity - Functions for passive control.
FUNCTIONS
get_input_ff_index(sys)
Input feedforward passivity (IFP) index for a system.
The input feedforward passivity (IFP) is the largest gain that can be
placed in negative parallel interconnection with a system such that the
new interconnected system is passive.
Parameters
----------
sys : LTI
System to be checked.
Returns
-------
float
The IFP index.
get_output_fb_index(sys)
Return the output feedback passivity (OFP) index for the system.
The OFP is the largest gain that can be placed in positive feedback
with a system such that the new interconnected system is passive.
Parameters
----------
sys : LTI
System to be checked.
Returns
-------
float
The OFP index.
ispassive(sys, ofp_index=0, ifp_index=0)
Indicate if a linear time invariant (LTI) system is passive.
Checks if system is passive with the given output feedback (OFP)
and input feedforward (IFP) passivity indices.
Parameters
----------
sys : LTI
System to be checked.
ofp_index : float
Output feedback passivity index.
ifp_index : float
Input feedforward passivity index.
Returns
-------
bool
The system is passive.
Notes
-----
Querying if the system is passive in the sense of
.. math:: V(x) >= 0 \land \dot{V}(x) <= y^T u
is equivalent to the default case of `ofp_index` = 0 and `ifp_index` =
0. Note that computing the `ofp_index` and `ifp_index` for a system,
then using both values simultaneously as inputs to this function is not
guaranteed to have an output of True (the system might not be passive
with both indices at the same time).
For more details, see [1]_.
References
----------
.. [1] McCourt, Michael J., and Panos J. Antsaklis "Demonstrating
passivity and dissipativity using computational methods."
Technical Report of the ISIS Group at the University of Notre
Dame. ISIS-2013-008, Aug. 2013.
solve_passivity_LMI(sys, rho=None, nu=None)
Compute passivity indices and/or solves feasibility via a LMI.
Constructs a linear matrix inequality (LMI) such that if a solution
exists and the last element of the solution is positive, the system
`sys` is passive. Inputs of None for `rho` or `nu` indicate that the
function should solve for that index (they are mutually exclusive, they
can't both be None, otherwise you're trying to solve a nonconvex
bilinear matrix inequality.) The last element of the output `solution`
is either the output or input passivity index, for `rho` = None and
`nu` = None, respectively.
Parameters
----------
sys : LTI
System to be checked.
rho : float or None
Output feedback passivity index.
nu : float or None
Input feedforward passivity index.
Returns
-------
solution : ndarray
The LMI solution.
References
----------
.. [1] McCourt, Michael J., and Panos J. Antsaklis, "Demonstrating
passivity and dissipativity using computational methods."
.. [2] Nicholas Kottenstette and Panos J. Antsaklis,
"Relationships Between Positive Real, Passive Dissipative, &
Positive Systems", equation 36.
DATA
__all__ = ['get_output_fb_index', 'get_input_ff_index', 'ispassive', '...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\passivity.py
control.phase_crossover_frequencies
Python Library Documentation: function phase_crossover_frequencies in module control.margins
phase_crossover_frequencies(sys)
Compute Nyquist plot real-axis crossover frequencies and gains.
Parameters
----------
sys : LTI
SISO LTI system.
Returns
-------
omega : ndarray
1d array of (non-negative) frequencies where Nyquist plot
intersects the real axis.
gains : ndarray
1d array of corresponding gains.
Examples
--------
>>> G = ct.tf([1], [1, 2, 3, 4])
>>> x_omega, x_gain = ct.phase_crossover_frequencies(G)
control.phase_plane_plot
Python Library Documentation: function phase_plane_plot in module control.phaseplot
phase_plane_plot(sys, pointdata=None, timedata=None, gridtype=None, gridspec=None, plot_streamlines=None, plot_vectorfield=None, plot_streamplot=None, plot_equilpoints=True, plot_separatrices=True, ax=None, suppress_warnings=False, title=None, **kwargs)
Plot phase plane diagram.
This function plots phase plane data, including vector fields, stream
lines, equilibrium points, and contour curves.
If none of plot_streamlines, plot_vectorfield, or plot_streamplot are
set, then plot_streamplot is used by default.
Parameters
----------
sys : `NonlinearIOSystem` or callable(t, x, ...)
I/O system or function used to generate phase plane data. If a
function is given, the remaining arguments are drawn from the
`params` keyword.
pointdata : list or 2D array
List of the form [xmin, xmax, ymin, ymax] describing the
boundaries of the phase plot or an array of shape (N, 2)
giving points of at which to plot the vector field.
timedata : int or list of int
Time to simulate each streamline. If a list is given, a different
time can be used for each initial condition in `pointdata`.
gridtype : str, optional
The type of grid to use for generating initial conditions:
'meshgrid' (default) generates a mesh of initial conditions within
the specified boundaries, 'boxgrid' generates initial conditions
along the edges of the boundary, 'circlegrid' generates a circle of
initial conditions around each point in point data.
gridspec : list, optional
If the gridtype is 'meshgrid' and 'boxgrid', `gridspec` gives the
size of the grid in the x and y axes on which to generate points.
If gridtype is 'circlegrid', then `gridspec` is a 2-tuple
specifying the radius and number of points around each point in the
`pointdata` array.
params : dict, optional
Parameters to pass to system. For an I/O system, `params` should be
a dict of parameters and values. For a callable, `params` should be
dict with key 'args' and value given by a tuple (passed to callable).
color : matplotlib color spec, optional
Plot all elements in the given color (use ``plot_<element>`` =
{'color': c} to set the color in one element of the phase
plot (equilpoints, separatrices, streamlines, etc).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
Array of list of `matplotlib.artist.Artist` objects:
- lines[0] = list of Line2D objects (streamlines, separatrices).
- lines[1] = Quiver object (vector field arrows).
- lines[2] = list of Line2D objects (equilibrium points).
- lines[3] = StreamplotSet object (lines with arrows).
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
Other Parameters
----------------
arrows : int
Set the number of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrows']`.
arrow_size : float
Set the size of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_size']`.
arrow_style : matplotlib patch
Set the style of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_style']`.
dir : str, optional
Direction to draw streamlines: 'forward' to flow forward in time
from the reference points, 'reverse' to flow backward in time, or
'both' to flow both forward and backward. The amount of time to
simulate in each direction is given by the `timedata` argument.
plot_streamlines : bool or dict, optional
If True then plot streamlines based on the pointdata and gridtype.
If set to a dict, pass on the key-value pairs in the dict as
keywords to `streamlines`.
plot_vectorfield : bool or dict, optional
If True then plot the vector field based on the pointdata and
gridtype. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.vectorfield`.
plot_streamplot : bool or dict, optional
If True then use `matplotlib.axes.Axes.streamplot` function
to plot the streamlines. If set to a dict, pass on the key-value
pairs in the dict as keywords to `phaseplot.streamplot`.
plot_equilpoints : bool or dict, optional
If True (default) then plot equilibrium points based in the phase
plot boundary. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.equilpoints`.
plot_separatrices : bool or dict, optional
If True (default) then plot separatrices starting from each
equilibrium point. If set to a dict, pass on the key-value pairs
in the dict as keywords to `phaseplot.separatrices`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
suppress_warnings : bool, optional
If set to True, suppress warning messages in generating trajectories.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The default method for producing streamlines is determined based on which
keywords are specified, with `plot_streamplot` serving as the generic
default. If any of the `arrows`, `arrow_size`, `arrow_style`, or `dir`
keywords are used and neither `plot_streamlines` nor `plot_streamplot` is
set, then `plot_streamlines` will be set to True. If neither
`plot_streamlines` nor `plot_vectorfield` set set to True, then
`plot_streamplot` will be set to True.
control.phase_plot
Python Library Documentation: function phase_plot in module control.phaseplot
phase_plot(odefun, X=None, Y=None, scale=1, X0=None, T=None, lingrid=None, lintime=None, logtime=None, timepts=None, parms=None, params=(), tfirst=False, verbose=True)
(legacy) Phase plot for 2D dynamical systems.
.. deprecated:: 0.10.1
This function is deprecated; use `phase_plane_plot` instead.
Produces a vector field or stream line plot for a planar system. This
function has been replaced by the `phase_plane_map` and
`phase_plane_plot` functions.
Call signatures:
phase_plot(func, X, Y, ...) - display vector field on meshgrid
phase_plot(func, X, Y, scale, ...) - scale arrows
phase_plot(func. X0=(...), T=Tmax, ...) - display stream lines
phase_plot(func, X, Y, X0=[...], T=Tmax, ...) - plot both
phase_plot(func, X0=[...], T=Tmax, lingrid=N, ...) - plot both
phase_plot(func, X0=[...], lintime=N, ...) - stream lines with arrows
Parameters
----------
func : callable(x, t, ...)
Computes the time derivative of y (compatible with odeint). The
function should be the same for as used for `scipy.integrate`.
Namely, it should be a function of the form dx/dt = F(t, x) that
accepts a state x of dimension 2 and returns a derivative dx/dt of
dimension 2.
X, Y: 3-element sequences, optional, as [start, stop, npts]
Two 3-element sequences specifying x and y coordinates of a
grid. These arguments are passed to linspace and meshgrid to
generate the points at which the vector field is plotted. If
absent (or None), the vector field is not plotted.
scale: float, optional
Scale size of arrows; default = 1
X0: ndarray of initial conditions, optional
List of initial conditions from which streamlines are plotted.
Each initial condition should be a pair of numbers.
T: array_like or number, optional
Length of time to run simulations that generate streamlines.
If a single number, the same simulation time is used for all
initial conditions. Otherwise, should be a list of length
len(X0) that gives the simulation time for each initial
condition. Default value = 50.
lingrid : integer or 2-tuple of integers, optional
Argument is either N or (N, M). If X0 is given and X, Y are
missing, a grid of arrows is produced using the limits of the
initial conditions, with N grid points in each dimension or N grid
points in x and M grid points in y.
lintime : integer or tuple (integer, float), optional
If a single integer N is given, draw N arrows using equally space
time points. If a tuple (N, lambda) is given, draw N arrows using
exponential time constant lambda
timepts : array_like, optional
Draw arrows at the given list times [t1, t2, ...]
tfirst : bool, optional
If True, call `func` with signature ``func(t, x, ...)``.
params: tuple, optional
List of parameters to pass to vector field: ``func(x, t, *params)``.
See Also
--------
box_grid
control.phaseplot
Python Library Documentation: module control.phaseplot in control
NAME
control.phaseplot - Generate 2D phase portraits.
DESCRIPTION
This module contains functions for generating 2D phase plots. The base
function for creating phase plane portraits is `~control.phase_plane_plot`,
which generates a phase plane portrait for a 2 state I/O system (with no
inputs). Utility functions are available to customize the individual
elements of a phase plane portrait.
The docstring examples assume the following import commands::
>>> import numpy as np
>>> import control as ct
>>> import control.phaseplot as pp
FUNCTIONS
box_grid(xlimp, ylimp)
Generate list of points on edge of box.
.. deprecated:: 0.10.0
Use `phaseplot.boxgrid` instead.
list = box_grid([xmin xmax xnum], [ymin ymax ynum]) generates a
list of points that correspond to a uniform grid at the end of the
box defined by the corners [xmin ymin] and [xmax ymax].
phase_plane_plot(sys, pointdata=None, timedata=None, gridtype=None, gridspec=None, plot_streamlines=None, plot_vectorfield=None, plot_streamplot=None, plot_equilpoints=True, plot_separatrices=True, ax=None, suppress_warnings=False, title=None, **kwargs)
Plot phase plane diagram.
This function plots phase plane data, including vector fields, stream
lines, equilibrium points, and contour curves.
If none of plot_streamlines, plot_vectorfield, or plot_streamplot are
set, then plot_streamplot is used by default.
Parameters
----------
sys : `NonlinearIOSystem` or callable(t, x, ...)
I/O system or function used to generate phase plane data. If a
function is given, the remaining arguments are drawn from the
`params` keyword.
pointdata : list or 2D array
List of the form [xmin, xmax, ymin, ymax] describing the
boundaries of the phase plot or an array of shape (N, 2)
giving points of at which to plot the vector field.
timedata : int or list of int
Time to simulate each streamline. If a list is given, a different
time can be used for each initial condition in `pointdata`.
gridtype : str, optional
The type of grid to use for generating initial conditions:
'meshgrid' (default) generates a mesh of initial conditions within
the specified boundaries, 'boxgrid' generates initial conditions
along the edges of the boundary, 'circlegrid' generates a circle of
initial conditions around each point in point data.
gridspec : list, optional
If the gridtype is 'meshgrid' and 'boxgrid', `gridspec` gives the
size of the grid in the x and y axes on which to generate points.
If gridtype is 'circlegrid', then `gridspec` is a 2-tuple
specifying the radius and number of points around each point in the
`pointdata` array.
params : dict, optional
Parameters to pass to system. For an I/O system, `params` should be
a dict of parameters and values. For a callable, `params` should be
dict with key 'args' and value given by a tuple (passed to callable).
color : matplotlib color spec, optional
Plot all elements in the given color (use ``plot_<element>`` =
{'color': c} to set the color in one element of the phase
plot (equilpoints, separatrices, streamlines, etc).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
Array of list of `matplotlib.artist.Artist` objects:
- lines[0] = list of Line2D objects (streamlines, separatrices).
- lines[1] = Quiver object (vector field arrows).
- lines[2] = list of Line2D objects (equilibrium points).
- lines[3] = StreamplotSet object (lines with arrows).
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
Other Parameters
----------------
arrows : int
Set the number of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrows']`.
arrow_size : float
Set the size of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_size']`.
arrow_style : matplotlib patch
Set the style of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_style']`.
dir : str, optional
Direction to draw streamlines: 'forward' to flow forward in time
from the reference points, 'reverse' to flow backward in time, or
'both' to flow both forward and backward. The amount of time to
simulate in each direction is given by the `timedata` argument.
plot_streamlines : bool or dict, optional
If True then plot streamlines based on the pointdata and gridtype.
If set to a dict, pass on the key-value pairs in the dict as
keywords to `streamlines`.
plot_vectorfield : bool or dict, optional
If True then plot the vector field based on the pointdata and
gridtype. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.vectorfield`.
plot_streamplot : bool or dict, optional
If True then use `matplotlib.axes.Axes.streamplot` function
to plot the streamlines. If set to a dict, pass on the key-value
pairs in the dict as keywords to `phaseplot.streamplot`.
plot_equilpoints : bool or dict, optional
If True (default) then plot equilibrium points based in the phase
plot boundary. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.equilpoints`.
plot_separatrices : bool or dict, optional
If True (default) then plot separatrices starting from each
equilibrium point. If set to a dict, pass on the key-value pairs
in the dict as keywords to `phaseplot.separatrices`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
suppress_warnings : bool, optional
If set to True, suppress warning messages in generating trajectories.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The default method for producing streamlines is determined based on which
keywords are specified, with `plot_streamplot` serving as the generic
default. If any of the `arrows`, `arrow_size`, `arrow_style`, or `dir`
keywords are used and neither `plot_streamlines` nor `plot_streamplot` is
set, then `plot_streamlines` will be set to True. If neither
`plot_streamlines` nor `plot_vectorfield` set set to True, then
`plot_streamplot` will be set to True.
phase_plot(odefun, X=None, Y=None, scale=1, X0=None, T=None, lingrid=None, lintime=None, logtime=None, timepts=None, parms=None, params=(), tfirst=False, verbose=True)
(legacy) Phase plot for 2D dynamical systems.
.. deprecated:: 0.10.1
This function is deprecated; use `phase_plane_plot` instead.
Produces a vector field or stream line plot for a planar system. This
function has been replaced by the `phase_plane_map` and
`phase_plane_plot` functions.
Call signatures:
phase_plot(func, X, Y, ...) - display vector field on meshgrid
phase_plot(func, X, Y, scale, ...) - scale arrows
phase_plot(func. X0=(...), T=Tmax, ...) - display stream lines
phase_plot(func, X, Y, X0=[...], T=Tmax, ...) - plot both
phase_plot(func, X0=[...], T=Tmax, lingrid=N, ...) - plot both
phase_plot(func, X0=[...], lintime=N, ...) - stream lines with arrows
Parameters
----------
func : callable(x, t, ...)
Computes the time derivative of y (compatible with odeint). The
function should be the same for as used for `scipy.integrate`.
Namely, it should be a function of the form dx/dt = F(t, x) that
accepts a state x of dimension 2 and returns a derivative dx/dt of
dimension 2.
X, Y: 3-element sequences, optional, as [start, stop, npts]
Two 3-element sequences specifying x and y coordinates of a
grid. These arguments are passed to linspace and meshgrid to
generate the points at which the vector field is plotted. If
absent (or None), the vector field is not plotted.
scale: float, optional
Scale size of arrows; default = 1
X0: ndarray of initial conditions, optional
List of initial conditions from which streamlines are plotted.
Each initial condition should be a pair of numbers.
T: array_like or number, optional
Length of time to run simulations that generate streamlines.
If a single number, the same simulation time is used for all
initial conditions. Otherwise, should be a list of length
len(X0) that gives the simulation time for each initial
condition. Default value = 50.
lingrid : integer or 2-tuple of integers, optional
Argument is either N or (N, M). If X0 is given and X, Y are
missing, a grid of arrows is produced using the limits of the
initial conditions, with N grid points in each dimension or N grid
points in x and M grid points in y.
lintime : integer or tuple (integer, float), optional
If a single integer N is given, draw N arrows using equally space
time points. If a tuple (N, lambda) is given, draw N arrows using
exponential time constant lambda
timepts : array_like, optional
Draw arrows at the given list times [t1, t2, ...]
tfirst : bool, optional
If True, call `func` with signature ``func(t, x, ...)``.
params: tuple, optional
List of parameters to pass to vector field: ``func(x, t, *params)``.
See Also
--------
box_grid
DATA
__all__ = ['phase_plane_plot', 'phase_plot', 'box_grid']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\phaseplot.py
control.place
Python Library Documentation: function place in module control.statefbk
place(A, B, p)
Place closed loop eigenvalues.
K = place(A, B, p)
Parameters
----------
A : 2D array_like
Dynamics matrix.
B : 2D array_like
Input matrix.
p : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gain such that A - B K has eigenvalues given in p.
Notes
-----
This is a wrapper function for `scipy.signal.place_poles`, which
implements the Tits and Yang algorithm [1]_. It will handle SISO, MISO,
and MIMO systems. If you want more control over the algorithm, use
`scipy.signal.place_poles` directly.
Limitations: The algorithm will not place poles at the same location
more than rank(B) times.
References
----------
.. [1] A.L. Tits and Y. Yang, "Globally convergent algorithms for robust
pole assignment by state feedback, IEEE Transactions on Automatic
Control, Vol. 41, pp. 1432-1452, 1996.
Examples
--------
>>> A = [[-1, -1], [0, 1]]
>>> B = [[0], [1]]
>>> K = ct.place(A, B, [-2, -5])
See Also
--------
place_acker, place_varga
control.place_acker
Python Library Documentation: function place_acker in module control.statefbk
place_acker(A, B, poles)
Pole placement using Ackermann method.
Call:
K = place_acker(A, B, poles)
Parameters
----------
A, B : 2D array_like
State and input matrix of the system.
poles : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gains such that A - B K has given eigenvalues.
See Also
--------
place, place_varga
control.place_varga
Python Library Documentation: function place_varga in module control.statefbk
place_varga(A, B, p, dtime=False, alpha=None)
Place closed loop eigenvalues using Varga method.
K = place_varga(A, B, p, dtime=False, alpha=None)
Parameters
----------
A : 2D array_like
Dynamics matrix.
B : 2D array_like
Input matrix.
p : 1D array_like
Desired eigenvalue locations.
dtime : bool, optional
False (default) for continuous-time pole placement or True
for discrete time.
alpha : float, optional
If `dtime` is false then place_varga will leave the eigenvalues with
real part less than alpha untouched. If `dtime` is true then
place_varga will leave eigenvalues with modulus less than alpha
untouched.
By default (alpha=None), place_varga computes alpha such that all
poles will be placed.
Returns
-------
K : 2D array
Gain such that A - B K has eigenvalues given in p.
See Also
--------
place, place_acker
Notes
-----
This function is a wrapper for the Slycot function sb01bd, which
implements the pole placement algorithm of Varga [1]_. In contrast
to the algorithm used by `place`, the Varga algorithm can place
multiple poles at the same location. The placement, however, may
not be as robust.
References
----------
.. [1] Varga A. "A Schur method for pole assignment." IEEE Trans.
Automatic Control, Vol. AC-26, pp. 517-519, 1981.
Examples
--------
>>> A = [[-1, -1], [0, 1]]
>>> B = [[0], [1]]
>>> K = ct.place_varga(A, B, [-2, -5])
control.pole_zero_map
Python Library Documentation: function pole_zero_map in module control.pzmap
pole_zero_map(sysdata)
Compute the pole/zero map for an LTI system.
Parameters
----------
sysdata : `StateSpace` or `TransferFunction`
Linear system for which poles and zeros are computed.
Returns
-------
pzmap_data : `PoleZeroMap`
Pole/zero map containing the poles and zeros of the system. Use
``pzmap_data.plot()`` or ``pole_zero_plot(pzmap_data)`` to plot the
pole/zero map.
control.pole_zero_plot
Python Library Documentation: function pole_zero_plot in module control.pzmap
pole_zero_plot(data, plot=None, grid=None, title=None, color=None, marker_size=None, marker_width=None, xlim=None, ylim=None, interactive=None, ax=None, scaling=None, initial_gain=None, label=None, **kwargs)
Plot a pole/zero map for a linear system.
If the system data include root loci, a root locus diagram for the
system is plotted. When the root locus for a single system is plotted,
clicking on a location on the root locus will mark the gain on all
branches of the diagram and show the system gain and damping for the
given pole in the axes title. Set to False to turn off this behavior.
Parameters
----------
data : List of `PoleZeroData` objects or `LTI` systems
List of pole/zero response data objects generated by pzmap_response()
or root_locus_map() that are to be plotted. If a list of systems
is given, the poles and zeros of those systems will be plotted.
grid : bool or str, optional
If True plot omega-damping grid, if False show imaginary
axis for continuous-time systems, unit circle for discrete-time
systems. If 'empty', do not draw any additional lines. Default
value is set by `config.defaults['pzmap.grid']` or
`config.defaults['rlocus.grid']`.
plot : bool, optional
(legacy) If True a graph is generated with matplotlib,
otherwise the poles and zeros are only computed and returned.
If this argument is present, the legacy value of poles and
zeros is returned.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
The shape of the array is given by (nsys, 2) where nsys is the number
of systems or responses passed to the function. The second index
specifies the pzmap object type:
- lines[idx, 0]: poles
- lines[idx, 1]: zeros
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
poles, zeros : list of arrays
(legacy) If the `plot` keyword is given, the system poles and zeros
are returned.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
color : matplotlib color spec, optional
Specify the color of the markers and lines.
initial_gain : float, optional
If given, the specified system gain will be marked on the plot.
interactive : bool, optional
Turn off interactive mode for root locus plots.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with given
label(s). If data is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
marker_color : str, optional
Set the color of the markers used for poles and zeros.
marker_size : int, optional
Set the size of the markers used for poles and zeros.
marker_width : int, optional
Set the line width of the markers used for poles and zeros.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
scaling : str or list, optional
Set the type of axis scaling. Can be 'equal' (default), 'auto', or
a list of the form [xmin, xmax, ymin, ymax].
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
xlim : list, optional
Set the limits for the x axis.
ylim : list, optional
Set the limits for the y axis.
Notes
-----
By default, the pzmap function calls matplotlib.pyplot.axis('equal'),
which means that trying to reset the axis limits may not behave as
expected. To change the axis limits, use the `scaling` keyword of use
matplotlib.pyplot.gca().axis('auto') and then set the axis limits to
the desired values.
Pole/zero plots that use the continuous-time omega-damping grid do not
work with the `ax` keyword argument, due to the way that axes grids
are implemented. The `grid` argument must be set to False or
'empty' when using the `ax` keyword argument.
The limits of the pole/zero plot are set based on the location features
in the plot, including the location of poles, zeros, and local maxima
of root locus curves. The locations of local maxima are expanded by a
buffer factor set by `config.defaults['phaseplot.buffer_factor']` that is
applied to the locations of the local maxima. The final axis limits
are set to by the largest features in the plot multiplied by an
expansion factor set by `config.defaults['phaseplot.expansion_factor']`.
The default value for the buffer factor is 1.05 (5% buffer around local
maxima) and the default value for the expansion factor is 1.8 (80%
increase in limits around the most distant features).
control.pole_zero_subplots
Python Library Documentation: function pole_zero_subplots in module control.ctrlplot
pole_zero_subplots(nrows, ncols, grid=None, dt=None, fig=None, scaling=None, rcParams=None)
Create axes for pole/zero plot.
Parameters
----------
nrows, ncols : int
Number of rows and columns.
grid : True, False, or 'empty', optional
Grid style to use. Can also be a list, in which case each subplot
will have a different style (columns then rows).
dt : timebase, option
Timebase for each subplot (or a list of timebases).
scaling : 'auto', 'equal', or None
Scaling to apply to the subplots.
fig : `matplotlib.figure.Figure`
Figure to use for creating subplots.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
Returns
-------
ax_array : ndarray
2D array of axes.
control.poles
Python Library Documentation: function poles in module control.lti
poles(sys)
Compute system poles.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
Returns
-------
poles : ndarray
Array that contains the system's poles.
See Also
--------
zeros, StateSpace.poles, TransferFunction.poles
control.pp
Python Library Documentation: module control.phaseplot in control
NAME
control.phaseplot - Generate 2D phase portraits.
DESCRIPTION
This module contains functions for generating 2D phase plots. The base
function for creating phase plane portraits is `~control.phase_plane_plot`,
which generates a phase plane portrait for a 2 state I/O system (with no
inputs). Utility functions are available to customize the individual
elements of a phase plane portrait.
The docstring examples assume the following import commands::
>>> import numpy as np
>>> import control as ct
>>> import control.phaseplot as pp
FUNCTIONS
box_grid(xlimp, ylimp)
Generate list of points on edge of box.
.. deprecated:: 0.10.0
Use `phaseplot.boxgrid` instead.
list = box_grid([xmin xmax xnum], [ymin ymax ynum]) generates a
list of points that correspond to a uniform grid at the end of the
box defined by the corners [xmin ymin] and [xmax ymax].
phase_plane_plot(sys, pointdata=None, timedata=None, gridtype=None, gridspec=None, plot_streamlines=None, plot_vectorfield=None, plot_streamplot=None, plot_equilpoints=True, plot_separatrices=True, ax=None, suppress_warnings=False, title=None, **kwargs)
Plot phase plane diagram.
This function plots phase plane data, including vector fields, stream
lines, equilibrium points, and contour curves.
If none of plot_streamlines, plot_vectorfield, or plot_streamplot are
set, then plot_streamplot is used by default.
Parameters
----------
sys : `NonlinearIOSystem` or callable(t, x, ...)
I/O system or function used to generate phase plane data. If a
function is given, the remaining arguments are drawn from the
`params` keyword.
pointdata : list or 2D array
List of the form [xmin, xmax, ymin, ymax] describing the
boundaries of the phase plot or an array of shape (N, 2)
giving points of at which to plot the vector field.
timedata : int or list of int
Time to simulate each streamline. If a list is given, a different
time can be used for each initial condition in `pointdata`.
gridtype : str, optional
The type of grid to use for generating initial conditions:
'meshgrid' (default) generates a mesh of initial conditions within
the specified boundaries, 'boxgrid' generates initial conditions
along the edges of the boundary, 'circlegrid' generates a circle of
initial conditions around each point in point data.
gridspec : list, optional
If the gridtype is 'meshgrid' and 'boxgrid', `gridspec` gives the
size of the grid in the x and y axes on which to generate points.
If gridtype is 'circlegrid', then `gridspec` is a 2-tuple
specifying the radius and number of points around each point in the
`pointdata` array.
params : dict, optional
Parameters to pass to system. For an I/O system, `params` should be
a dict of parameters and values. For a callable, `params` should be
dict with key 'args' and value given by a tuple (passed to callable).
color : matplotlib color spec, optional
Plot all elements in the given color (use ``plot_<element>`` =
{'color': c} to set the color in one element of the phase
plot (equilpoints, separatrices, streamlines, etc).
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
Array of list of `matplotlib.artist.Artist` objects:
- lines[0] = list of Line2D objects (streamlines, separatrices).
- lines[1] = Quiver object (vector field arrows).
- lines[2] = list of Line2D objects (equilibrium points).
- lines[3] = StreamplotSet object (lines with arrows).
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
Other Parameters
----------------
arrows : int
Set the number of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrows']`.
arrow_size : float
Set the size of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_size']`.
arrow_style : matplotlib patch
Set the style of arrows to plot along the streamlines. The default
value can be set in `config.defaults['phaseplot.arrow_style']`.
dir : str, optional
Direction to draw streamlines: 'forward' to flow forward in time
from the reference points, 'reverse' to flow backward in time, or
'both' to flow both forward and backward. The amount of time to
simulate in each direction is given by the `timedata` argument.
plot_streamlines : bool or dict, optional
If True then plot streamlines based on the pointdata and gridtype.
If set to a dict, pass on the key-value pairs in the dict as
keywords to `streamlines`.
plot_vectorfield : bool or dict, optional
If True then plot the vector field based on the pointdata and
gridtype. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.vectorfield`.
plot_streamplot : bool or dict, optional
If True then use `matplotlib.axes.Axes.streamplot` function
to plot the streamlines. If set to a dict, pass on the key-value
pairs in the dict as keywords to `phaseplot.streamplot`.
plot_equilpoints : bool or dict, optional
If True (default) then plot equilibrium points based in the phase
plot boundary. If set to a dict, pass on the key-value pairs in the
dict as keywords to `phaseplot.equilpoints`.
plot_separatrices : bool or dict, optional
If True (default) then plot separatrices starting from each
equilibrium point. If set to a dict, pass on the key-value pairs
in the dict as keywords to `phaseplot.separatrices`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
suppress_warnings : bool, optional
If set to True, suppress warning messages in generating trajectories.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The default method for producing streamlines is determined based on which
keywords are specified, with `plot_streamplot` serving as the generic
default. If any of the `arrows`, `arrow_size`, `arrow_style`, or `dir`
keywords are used and neither `plot_streamlines` nor `plot_streamplot` is
set, then `plot_streamlines` will be set to True. If neither
`plot_streamlines` nor `plot_vectorfield` set set to True, then
`plot_streamplot` will be set to True.
phase_plot(odefun, X=None, Y=None, scale=1, X0=None, T=None, lingrid=None, lintime=None, logtime=None, timepts=None, parms=None, params=(), tfirst=False, verbose=True)
(legacy) Phase plot for 2D dynamical systems.
.. deprecated:: 0.10.1
This function is deprecated; use `phase_plane_plot` instead.
Produces a vector field or stream line plot for a planar system. This
function has been replaced by the `phase_plane_map` and
`phase_plane_plot` functions.
Call signatures:
phase_plot(func, X, Y, ...) - display vector field on meshgrid
phase_plot(func, X, Y, scale, ...) - scale arrows
phase_plot(func. X0=(...), T=Tmax, ...) - display stream lines
phase_plot(func, X, Y, X0=[...], T=Tmax, ...) - plot both
phase_plot(func, X0=[...], T=Tmax, lingrid=N, ...) - plot both
phase_plot(func, X0=[...], lintime=N, ...) - stream lines with arrows
Parameters
----------
func : callable(x, t, ...)
Computes the time derivative of y (compatible with odeint). The
function should be the same for as used for `scipy.integrate`.
Namely, it should be a function of the form dx/dt = F(t, x) that
accepts a state x of dimension 2 and returns a derivative dx/dt of
dimension 2.
X, Y: 3-element sequences, optional, as [start, stop, npts]
Two 3-element sequences specifying x and y coordinates of a
grid. These arguments are passed to linspace and meshgrid to
generate the points at which the vector field is plotted. If
absent (or None), the vector field is not plotted.
scale: float, optional
Scale size of arrows; default = 1
X0: ndarray of initial conditions, optional
List of initial conditions from which streamlines are plotted.
Each initial condition should be a pair of numbers.
T: array_like or number, optional
Length of time to run simulations that generate streamlines.
If a single number, the same simulation time is used for all
initial conditions. Otherwise, should be a list of length
len(X0) that gives the simulation time for each initial
condition. Default value = 50.
lingrid : integer or 2-tuple of integers, optional
Argument is either N or (N, M). If X0 is given and X, Y are
missing, a grid of arrows is produced using the limits of the
initial conditions, with N grid points in each dimension or N grid
points in x and M grid points in y.
lintime : integer or tuple (integer, float), optional
If a single integer N is given, draw N arrows using equally space
time points. If a tuple (N, lambda) is given, draw N arrows using
exponential time constant lambda
timepts : array_like, optional
Draw arrows at the given list times [t1, t2, ...]
tfirst : bool, optional
If True, call `func` with signature ``func(t, x, ...)``.
params: tuple, optional
List of parameters to pass to vector field: ``func(x, t, *params)``.
See Also
--------
box_grid
DATA
__all__ = ['phase_plane_plot', 'phase_plot', 'box_grid']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\phaseplot.py
control.pzmap
Python Library Documentation: function pole_zero_plot in module control.pzmap
pole_zero_plot(data, plot=None, grid=None, title=None, color=None, marker_size=None, marker_width=None, xlim=None, ylim=None, interactive=None, ax=None, scaling=None, initial_gain=None, label=None, **kwargs)
Plot a pole/zero map for a linear system.
If the system data include root loci, a root locus diagram for the
system is plotted. When the root locus for a single system is plotted,
clicking on a location on the root locus will mark the gain on all
branches of the diagram and show the system gain and damping for the
given pole in the axes title. Set to False to turn off this behavior.
Parameters
----------
data : List of `PoleZeroData` objects or `LTI` systems
List of pole/zero response data objects generated by pzmap_response()
or root_locus_map() that are to be plotted. If a list of systems
is given, the poles and zeros of those systems will be plotted.
grid : bool or str, optional
If True plot omega-damping grid, if False show imaginary
axis for continuous-time systems, unit circle for discrete-time
systems. If 'empty', do not draw any additional lines. Default
value is set by `config.defaults['pzmap.grid']` or
`config.defaults['rlocus.grid']`.
plot : bool, optional
(legacy) If True a graph is generated with matplotlib,
otherwise the poles and zeros are only computed and returned.
If this argument is present, the legacy value of poles and
zeros is returned.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
The shape of the array is given by (nsys, 2) where nsys is the number
of systems or responses passed to the function. The second index
specifies the pzmap object type:
- lines[idx, 0]: poles
- lines[idx, 1]: zeros
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
poles, zeros : list of arrays
(legacy) If the `plot` keyword is given, the system poles and zeros
are returned.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
color : matplotlib color spec, optional
Specify the color of the markers and lines.
initial_gain : float, optional
If given, the specified system gain will be marked on the plot.
interactive : bool, optional
Turn off interactive mode for root locus plots.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with given
label(s). If data is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'upper right',
with no legend for a single response. Use False to suppress legend.
marker_color : str, optional
Set the color of the markers used for poles and zeros.
marker_size : int, optional
Set the size of the markers used for poles and zeros.
marker_width : int, optional
Set the line width of the markers used for poles and zeros.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
scaling : str or list, optional
Set the type of axis scaling. Can be 'equal' (default), 'auto', or
a list of the form [xmin, xmax, ymin, ymax].
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
xlim : list, optional
Set the limits for the x axis.
ylim : list, optional
Set the limits for the y axis.
Notes
-----
By default, the pzmap function calls matplotlib.pyplot.axis('equal'),
which means that trying to reset the axis limits may not behave as
expected. To change the axis limits, use the `scaling` keyword of use
matplotlib.pyplot.gca().axis('auto') and then set the axis limits to
the desired values.
Pole/zero plots that use the continuous-time omega-damping grid do not
work with the `ax` keyword argument, due to the way that axes grids
are implemented. The `grid` argument must be set to False or
'empty' when using the `ax` keyword argument.
The limits of the pole/zero plot are set based on the location features
in the plot, including the location of poles, zeros, and local maxima
of root locus curves. The locations of local maxima are expanded by a
buffer factor set by `config.defaults['phaseplot.buffer_factor']` that is
applied to the locations of the local maxima. The final axis limits
are set to by the largest features in the plot multiplied by an
expansion factor set by `config.defaults['phaseplot.expansion_factor']`.
The default value for the buffer factor is 1.05 (5% buffer around local
maxima) and the default value for the expansion factor is 1.8 (80%
increase in limits around the most distant features).
control.rcParams
Python Library Documentation: dict object
class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
|
| Built-in subclasses:
| StgDict
|
| Methods defined here:
|
| __contains__(self, key, /)
| True if the dictionary has the specified key, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, key, /)
| Return self[key].
|
| __gt__(self, value, /)
| Return self>value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __ior__(self, value, /)
| Return self|=value.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __or__(self, value, /)
| Return self|value.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(self, /)
| Return a reverse iterator over the dict keys.
|
| __ror__(self, value, /)
| Return value|self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| D.__sizeof__() -> size of D in memory, in bytes
|
| clear(...)
| D.clear() -> None. Remove all items from D.
|
| copy(...)
| D.copy() -> a shallow copy of D
|
| get(self, key, default=None, /)
| Return the value for key if key is in the dictionary, else default.
|
| items(...)
| D.items() -> a set-like object providing a view on D's items
|
| keys(...)
| D.keys() -> a set-like object providing a view on D's keys
|
| pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
|
| If the key is not found, return the default if given; otherwise,
| raise a KeyError.
|
| popitem(self, /)
| Remove and return a (key, value) pair as a 2-tuple.
|
| Pairs are returned in LIFO (last-in, first-out) order.
| Raises KeyError if the dict is empty.
|
| setdefault(self, key, default=None, /)
| Insert key with a value of default if key is not in the dictionary.
|
| Return the value for key if key is in the dictionary, else default.
|
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Class methods defined here:
|
| __class_getitem__(...)
| See PEP 585
|
| fromkeys(iterable, value=None, /)
| Create a new dictionary with keys from iterable and values set to value.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs)
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
control.reachable_form
Python Library Documentation: function reachable_form in module control.canonical
reachable_form(xsys)
Convert a system into reachable canonical form.
Parameters
----------
xsys : `StateSpace` object
System to be transformed, with state `x`.
Returns
-------
zsys : `StateSpace` object
System in reachable canonical form, with state `z`.
T : (M, M) real ndarray
Coordinate transformation: z = T * x.
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gc, T = ct.reachable_form(Gs) # default reachable
>>> Gc.B
array([[1.],
[0.]])
control.relay_hysteresis_nonlinearity
Python Library Documentation: class relay_hysteresis_nonlinearity in module control.descfcn class relay_hysteresis_nonlinearity(DescribingFunctionNonlinearity) | relay_hysteresis_nonlinearity(b, c) | | Relay w/ hysteresis for describing function analysis. | | This class creates a nonlinear function representing a a relay with | symmetric upper and lower bounds of magnitude `b` and a hysteretic region | of width `c` (using the notation from [FBS2e](https://fbsbook.org), | Example 10.12, including the describing function for the nonlinearity. | The following call creates a nonlinear function suitable for describing | function analysis:: | | F = relay_hysteresis_nonlinearity(b, c) | | The output of this function is b if x > c and -b if x < -c. For -c <= | x <= c, the value depends on the branch of the hysteresis loop (as | illustrated in Figure 10.20 of FBS2e). | | Parameters | ---------- | b : float | Hysteresis bound. | c : float | Width of hysteresis region. | | Examples | -------- | >>> nl = ct.relay_hysteresis_nonlinearity(1, 2) | >>> nl(0) | -1 | >>> nl(1) # not enough for switching on | -1 | >>> nl(5) | 1 | >>> nl(-1) # not enough for switching off | 1 | >>> nl(-5) | -1 | | Method resolution order: | relay_hysteresis_nonlinearity | DescribingFunctionNonlinearity | builtins.object | | Methods defined here: | | __call__(self, x) | Evaluate the nonlinearity at a (scalar) input value. | | __init__(self, b, c) | Initialize a describing function nonlinearity (optional). | | describing_function(self, A) | Return the describing function for a hysteresis nonlinearity. | | Parameters | ---------- | A : float | Amplitude of the sinusoidal input to the nonlinearity. | | Returns | ------- | float | Value of the describing function at the given amplitude. | | ---------------------------------------------------------------------- | Data descriptors inherited from DescribingFunctionNonlinearity: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.reset_defaults
Python Library Documentation: function reset_defaults in module control.config
reset_defaults()
Reset configuration values to their default (initial) values.
Examples
--------
>>> ct.defaults['freqplot.number_of_samples']
1000
>>> ct.set_defaults('freqplot', number_of_samples=100)
>>> ct.defaults['freqplot.number_of_samples']
100
>>> # do some customized freqplotting
>>> ct.reset_defaults()
>>> ct.defaults['freqplot.number_of_samples']
1000
control.reset_rcParams
Python Library Documentation: function reset_rcParams in module control.ctrlplot
reset_rcParams()
Reset rcParams to default values for control plots.
control.rlocus
Python Library Documentation: function root_locus_plot in module control.rlocus
root_locus_plot(sysdata, gains=None, grid=None, plot=None, **kwargs)
Root locus plot.
Calculate the root locus by finding the roots of 1 + k * G(s) where G
is a linear system and k varies over a range of gains.
Parameters
----------
sysdata : PoleZeroMap or LTI object or list
Linear input/output systems (SISO only, for now).
gains : array_like, optional
Gains to use in computing plot of closed-loop poles. If not given,
gains are chosen to include the main features of the root locus map.
xlim : tuple or list, optional
Set limits of x axis (see `matplotlib.axes.Axes.set_xlim`).
ylim : tuple or list, optional
Set limits of y axis (see `matplotlib.axes.Axes.set_ylim`).
plot : bool, optional
(legacy) If given, `root_locus_plot` returns the legacy return values
of roots and gains. If False, just return the values with no plot.
grid : bool or str, optional
If True plot omega-damping grid, if False show imaginary axis
for continuous-time systems, unit circle for discrete-time systems.
If 'empty', do not draw any additional lines. Default value is set
by `config.defaults['rlocus.grid']`.
initial_gain : float, optional
Mark the point on the root locus diagram corresponding to the
given gain.
color : matplotlib color spec, optional
Specify the color of the markers and lines.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
The shape of the array is given by (nsys, 3) where nsys is the number
of systems or responses passed to the function. The second index
specifies the object type:
- lines[idx, 0]: poles
- lines[idx, 1]: zeros
- lines[idx, 2]: loci
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
roots, gains : ndarray
(legacy) If the `plot` keyword is given, returns the closed-loop
root locations, arranged such that each row corresponds to a gain,
and the array of gains (same as `gains` keyword argument if provided).
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The root_locus_plot function calls matplotlib.pyplot.axis('equal'), which
means that trying to reset the axis limits may not behave as expected.
To change the axis limits, use matplotlib.pyplot.gca().axis('auto') and
then set the axis limits to the desired values.
control.robust
Python Library Documentation: module control.robust in control
NAME
control.robust - Robust control synthesis algorithms.
FUNCTIONS
augw(g, w1=None, w2=None, w3=None)
Augment plant for mixed sensitivity problem.
If a weighting is None, no augmentation is done for it. At least
one weighting must not be None.
If a weighting w is scalar, it will be replaced by I*w, where I is
ny-by-ny for `w1` and `w3`, and nu-by-nu for `w2`.
Parameters
----------
g : LTI object, ny-by-nu
Plant.
w1 : None, scalar, or k1-by-ny LTI object
Weighting on S.
w2 : None, scalar, or k2-by-nu LTI object
Weighting on KS.
w3 : None, scalar, or k3-by-ny LTI object
Weighting on T.
Returns
-------
p : `StateSpace`
Plant augmented with weightings, suitable for submission to
`hinfsyn` or `h2syn`.
Raises
------
ValueError
If all weightings are None.
See Also
--------
h2syn, hinfsyn, mixsyn
h2syn(P, nmeas, ncon)
H2 control synthesis for plant P.
Parameters
----------
P : `StateSpace`
Partitioned LTI plant (state-space system).
nmeas : int
Number of measurements (input to controller).
ncon : int
Number of control inputs (output from controller).
Returns
-------
K : `StateSpace`
Controller to stabilize `P`.
Raises
------
ImportError
If slycot routine sb10hd is not loaded.
See Also
--------
StateSpace
Examples
--------
>>> # Unstable first order SISO system
>>> G = ct.tf([1], [1, -1], inputs=['u'], outputs=['y'])
>>> all(G.poles() < 0) # Is G stable?
False
>>> # Create partitioned system with trivial unity systems
>>> P11 = ct.tf([0], [1], inputs=['w'], outputs=['z'])
>>> P12 = ct.tf([1], [1], inputs=['u'], outputs=['z'])
>>> P21 = ct.tf([1], [1], inputs=['w'], outputs=['y'])
>>> P22 = G
>>> P = ct.interconnect([P11, P12, P21, P22],
... inplist=['w', 'u'], outlist=['z', 'y'])
>>> # Synthesize H2 optimal stabilizing controller
>>> K = ct.h2syn(P, nmeas=1, ncon=1)
>>> T = ct.feedback(G, K, sign=1)
>>> all(T.poles() < 0) # Is T stable?
True
hinfsyn(P, nmeas, ncon)
H-infinity control synthesis for plant P.
Parameters
----------
P : `StateSpace`
Partitioned LTI plant (state-space system).
nmeas : int
Number of measurements (input to controller).
ncon : int
Number of control inputs (output from controller).
Returns
-------
K : `StateSpace`
Controller to stabilize `P`.
CL : `StateSpace`
Closed loop system.
gam : float
Infinity norm of closed loop system.
rcond : list
4-vector, reciprocal condition estimates of:
1: control transformation matrix
2: measurement transformation matrix
3: X-Riccati equation
4: Y-Riccati equation
Raises
------
ImportError
If slycot routine sb10ad is not loaded.
See Also
--------
StateSpace
Examples
--------
>>> # Unstable first order SISO system
>>> G = ct.tf([1], [1,-1], inputs=['u'], outputs=['y'])
>>> all(G.poles() < 0)
False
>>> # Create partitioned system with trivial unity systems
>>> P11 = ct.tf([0], [1], inputs=['w'], outputs=['z'])
>>> P12 = ct.tf([1], [1], inputs=['u'], outputs=['z'])
>>> P21 = ct.tf([1], [1], inputs=['w'], outputs=['y'])
>>> P22 = G
>>> P = ct.interconnect([P11, P12, P21, P22], inplist=['w', 'u'], outlist=['z', 'y'])
>>> # Synthesize Hinf optimal stabilizing controller
>>> K, CL, gam, rcond = ct.hinfsyn(P, nmeas=1, ncon=1)
>>> T = ct.feedback(G, K, sign=1)
>>> all(T.poles() < 0)
True
mixsyn(g, w1=None, w2=None, w3=None)
Mixed-sensitivity H-infinity synthesis.
mixsyn(g,w1,w2,w3) -> k,cl,info
Parameters
----------
g : LTI
The plant for which controller must be synthesized.
w1 : None, or scalar or k1-by-ny LTI
Weighting on S = (1+G*K)**-1.
w2 : None, or scalar or k2-by-nu LTI
Weighting on K*S.
w3 : None, or scalar or k3-by-ny LTI
Weighting on T = G*K*(1+G*K)**-1.
Returns
-------
k : `StateSpace`
Synthesized controller.
cl : `StateSpace`
Closed system mapping evaluation inputs to evaluation outputs.
Let p be the augmented plant, with::
[z] = [p11 p12] [w]
[y] [p21 g] [u]
then cl is the system from w -> z with u = -k*y.
info : tuple
Two-tuple (`gamma`, `rcond`) containing additional information:
- `gamma` (scalar): H-infinity norm of cl.
- `rcond` (array): Estimates of reciprocal condition numbers
computed during synthesis. See hinfsyn for details.
See Also
--------
hinfsyn, augw
Notes
-----
If a weighting w is scalar, it will be replaced by I*w, where I is
ny-by-ny for `w1` and `w3`, and nu-by-nu for `w2`.
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\robust.py
control.root_locus
Python Library Documentation: function root_locus_plot in module control.rlocus
root_locus_plot(sysdata, gains=None, grid=None, plot=None, **kwargs)
Root locus plot.
Calculate the root locus by finding the roots of 1 + k * G(s) where G
is a linear system and k varies over a range of gains.
Parameters
----------
sysdata : PoleZeroMap or LTI object or list
Linear input/output systems (SISO only, for now).
gains : array_like, optional
Gains to use in computing plot of closed-loop poles. If not given,
gains are chosen to include the main features of the root locus map.
xlim : tuple or list, optional
Set limits of x axis (see `matplotlib.axes.Axes.set_xlim`).
ylim : tuple or list, optional
Set limits of y axis (see `matplotlib.axes.Axes.set_ylim`).
plot : bool, optional
(legacy) If given, `root_locus_plot` returns the legacy return values
of roots and gains. If False, just return the values with no plot.
grid : bool or str, optional
If True plot omega-damping grid, if False show imaginary axis
for continuous-time systems, unit circle for discrete-time systems.
If 'empty', do not draw any additional lines. Default value is set
by `config.defaults['rlocus.grid']`.
initial_gain : float, optional
Mark the point on the root locus diagram corresponding to the
given gain.
color : matplotlib color spec, optional
Specify the color of the markers and lines.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
The shape of the array is given by (nsys, 3) where nsys is the number
of systems or responses passed to the function. The second index
specifies the object type:
- lines[idx, 0]: poles
- lines[idx, 1]: zeros
- lines[idx, 2]: loci
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
roots, gains : ndarray
(legacy) If the `plot` keyword is given, returns the closed-loop
root locations, arranged such that each row corresponds to a gain,
and the array of gains (same as `gains` keyword argument if provided).
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The root_locus_plot function calls matplotlib.pyplot.axis('equal'), which
means that trying to reset the axis limits may not behave as expected.
To change the axis limits, use matplotlib.pyplot.gca().axis('auto') and
then set the axis limits to the desired values.
control.root_locus_map
Python Library Documentation: function root_locus_map in module control.rlocus
root_locus_map(sysdata, gains=None, xlim=None, ylim=None)
Compute the root locus map for an LTI system.
Calculate the root locus by finding the roots of 1 + k * G(s) where G
is a linear system and k varies over a range of gains.
Parameters
----------
sysdata : LTI system or list of LTI systems
Linear input/output systems (SISO only, for now).
gains : array_like, optional
Gains to use in computing plot of closed-loop poles. If not given,
gains are chosen to include the main features of the root locus map.
xlim : tuple or list, optional
Set limits of x axis (see `matplotlib.axes.Axes.set_xlim`).
ylim : tuple or list, optional
Set limits of y axis (see `matplotlib.axes.Axes.set_ylim`).
Returns
-------
rldata : `PoleZeroData` or list of `PoleZeroData`
Root locus data object(s). The loci of the root locus diagram are
available in the array `rldata.loci`, indexed by the gain index and
the locus index, and the gains are in the array `rldata.gains`.
Notes
-----
For backward compatibility, the `rldata` return object can be
assigned to the tuple ``(roots, gains)``.
control.root_locus_plot
Python Library Documentation: function root_locus_plot in module control.rlocus
root_locus_plot(sysdata, gains=None, grid=None, plot=None, **kwargs)
Root locus plot.
Calculate the root locus by finding the roots of 1 + k * G(s) where G
is a linear system and k varies over a range of gains.
Parameters
----------
sysdata : PoleZeroMap or LTI object or list
Linear input/output systems (SISO only, for now).
gains : array_like, optional
Gains to use in computing plot of closed-loop poles. If not given,
gains are chosen to include the main features of the root locus map.
xlim : tuple or list, optional
Set limits of x axis (see `matplotlib.axes.Axes.set_xlim`).
ylim : tuple or list, optional
Set limits of y axis (see `matplotlib.axes.Axes.set_ylim`).
plot : bool, optional
(legacy) If given, `root_locus_plot` returns the legacy return values
of roots and gains. If False, just return the values with no plot.
grid : bool or str, optional
If True plot omega-damping grid, if False show imaginary axis
for continuous-time systems, unit circle for discrete-time systems.
If 'empty', do not draw any additional lines. Default value is set
by `config.defaults['rlocus.grid']`.
initial_gain : float, optional
Mark the point on the root locus diagram corresponding to the
given gain.
color : matplotlib color spec, optional
Specify the color of the markers and lines.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of list of `matplotlib.lines.Line2D`
The shape of the array is given by (nsys, 3) where nsys is the number
of systems or responses passed to the function. The second index
specifies the object type:
- lines[idx, 0]: poles
- lines[idx, 1]: zeros
- lines[idx, 2]: loci
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
roots, gains : ndarray
(legacy) If the `plot` keyword is given, returns the closed-loop
root locations, arranged such that each row corresponds to a gain,
and the array of gains (same as `gains` keyword argument if provided).
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on the
plot or `legend_loc` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
Notes
-----
The root_locus_plot function calls matplotlib.pyplot.axis('equal'), which
means that trying to reset the axis limits may not behave as expected.
To change the axis limits, use matplotlib.pyplot.gca().axis('auto') and
then set the axis limits to the desired values.
control.rootlocus_pid_designer
Python Library Documentation: function rootlocus_pid_designer in module control.sisotool
rootlocus_pid_designer(plant, gain='P', sign=1, input_signal='r', Kp0=0, Ki0=0, Kd0=0, deltaK=0.001, tau=0.01, C_ff=0, derivative_in_feedback_path=False, plot=True)
Manual PID controller design based on root locus using Sisotool.
Uses `sisotool` to investigate the effect of adding or subtracting an
amount `deltaK` to the proportional, integral, or derivative (PID) gains
of a controller. One of the PID gains, `Kp`, `Ki`, or `Kd`, respectively,
can be modified at a time. `sisotool` plots the step response, frequency
response, and root locus of the closed-loop system controlling the
dynamical system specified by `plant`. Can be used with either non-
interactive plots (e.g. in a Jupyter Notebook), or interactive plots.
To use non-interactively, choose starting-point PID gains `Kp0`, `Ki0`,
and `Kd0` (you might want to start with all zeros to begin with),
select which gain you would like to vary (e.g. `gain` = 'P', 'I',
or 'D'), and choose a value of `deltaK` (default 0.001) to specify
by how much you would like to change that gain. Repeatedly run
`rootlocus_pid_designer` with different values of `deltaK` until you
are satisfied with the performance for that gain. Then, to tune a
different gain, e.g. 'I', make sure to add your chosen `deltaK` to
the previous gain you you were tuning.
Example: to examine the effect of varying `Kp` starting from an initial
value of 10, use the arguments ``gain='P', Kp0=10`` and try varying values
of `deltaK`. Suppose a `deltaK` of 5 gives satisfactory performance. Then,
to tune the derivative gain, add your selected `deltaK` to `Kp0` in the
next call using the arguments ``gain='D', Kp0=15``, to see how adding
different values of `deltaK` to your derivative gain affects performance.
To use with interactive plots, you will need to enable interactive mode
if you are in a Jupyter Notebook, e.g. using ``%matplotlib``. See
`Interactive Plots <https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.ion.html>`_
for more information. Click on a branch of the root locus plot to try
different values of `deltaK`. Each click updates plots and prints the
corresponding `deltaK`. It may be helpful to zoom in using the magnifying
glass on the plot to get more locations to click. Just make sure to
deactivate magnification mode when you are done by clicking the magnifying
glass. Otherwise you will not be able to be able to choose a gain on the
root locus plot. When you are done, ``%matplotlib inline`` returns to
inline, non-interactive plotting.
By default, all three PID terms are in the forward path C_f in the
diagram shown below, that is,
C_f = Kp + Ki/s + Kd*s/(tau*s + 1).
::
------> C_ff ------ d
| | |
r | e V V u y
------->O---> C_f --->O--->O---> plant --->
^- ^- |
| | |
| ----- C_b <-------|
---------------------------------
If `plant` is a discrete-time system, then the proportional, integral,
and derivative terms are given instead by Kp, Ki*dt/2*(z+1)/(z-1), and
Kd/dt*(z-1)/z, respectively.
It is also possible to move the derivative term into the feedback path
`C_b` using `derivative_in_feedback_path` = True. This may be desired to
avoid that the plant is subject to an impulse function when the reference
`r` is a step input. `C_b` is otherwise set to zero.
If `plant` is a 2-input system, the disturbance `d` is fed directly into
its second input rather than being added to `u`.
Parameters
----------
plant : `LTI` (`TransferFunction` or `StateSpace` system)
The dynamical system to be controlled.
gain : string, optional
Which gain to vary by `deltaK`. Must be one of 'P', 'I', or 'D'
(proportional, integral, or derivative).
sign : int, optional
The sign of deltaK gain perturbation.
input_signal : string, optional
The input used for the step response; must be 'r' (reference) or
'd' (disturbance) (see figure above).
Kp0, Ki0, Kd0 : float, optional
Initial values for proportional, integral, and derivative gains,
respectively.
deltaK : float, optional
Perturbation value for gain specified by the `gain` keyword.
tau : float, optional
The time constant associated with the pole in the continuous-time
derivative term. This is required to make the derivative transfer
function proper.
C_ff : float or `LTI` system, optional
Feedforward controller. If `LTI`, must have timebase that is
compatible with plant.
derivative_in_feedback_path : bool, optional
Whether to place the derivative term in feedback transfer function
`C_b` instead of the forward transfer function `C_f`.
plot : bool, optional
Whether to create Sisotool interactive plot.
Returns
-------
closedloop : `StateSpace` system
The closed-loop system using initial gains.
Notes
-----
When running using iPython or Jupyter, use ``%matplotlib`` to configure
the session for interactive support.
control.rss
Python Library Documentation: function rss in module control.statesp
rss(states=1, outputs=1, inputs=1, strictly_proper=False, **kwargs)
Create a stable random state space object.
Parameters
----------
states, outputs, inputs : int, list of str, or None
Description of the system states, outputs, and inputs. This can be
given as an integer count or as a list of strings that name the
individual signals. If an integer count is specified, the names of
the signal will be of the form 's[i]' (where 's' is one of 'x',
'y', or 'u').
strictly_proper : bool, optional
If set to True, returns a proper system (no direct term).
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Returns
-------
sys : `StateSpace`
The randomly created linear system.
Raises
------
ValueError
If any input is not a positive integer.
Notes
-----
If the number of states, inputs, or outputs is not specified, then the
missing numbers are assumed to be 1. If `dt` is not specified or is
given as 0 or None, the poles of the returned system will always have a
negative real part. If `dt` is True or a positive float, the poles of
the returned system will have magnitude less than 1.
control.sample_system
Python Library Documentation: function sample_system in module control.dtime
sample_system(sysc, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
Convert a continuous-time system to discrete time by sampling.
Parameters
----------
sysc : `StateSpace` or `TransferFunction`
Continuous time system to be converted.
Ts : float > 0
Sampling period.
method : string
Method to use for conversion, e.g. 'bilinear', 'zoh' (default).
alpha : float within [0, 1]
The generalized bilinear transformation weighting parameter, which
should only be specified with method="gbt", and is ignored
otherwise. See `scipy.signal.cont2discrete`.
prewarp_frequency : float within [0, infinity)
The frequency [rad/s] at which to match with the input continuous-
time system's magnitude and phase (only valid for method='bilinear',
'tustin', or 'gbt' with alpha=0.5).
Returns
-------
sysd : LTI of the same class (`StateSpace` or `TransferFunction`)
Discrete time system, with sampling rate `Ts`.
Other Parameters
----------------
inputs : int, list of str or None, optional
Description of the system inputs. If not specified, the original
system inputs are used. See `InputOutputSystem` for more
information.
outputs : int, list of str or None, optional
Description of the system outputs. Same format as `inputs`.
states : int, list of str, or None, optional
Description of the system states. Same format as `inputs`. Only
available if the system is `StateSpace`.
name : string, optional
Set the name of the sampled system. If not specified and
if `copy_names` is False, a generic name 'sys[id]' is generated
with a unique integer id. If `copy_names` is True, the new system
name is determined by adding the prefix and suffix strings in
`config.defaults['iosys.sampled_system_name_prefix']` and
`config.defaults['iosys.sampled_system_name_suffix']`, with the
default being to add the suffix '$sampled'.
copy_names : bool, optional
If True, copy the names of the input signals, output
signals, and states to the sampled system.
Notes
-----
See `StateSpace.sample` or `TransferFunction.sample` for further
details on implementation for state space and transfer function
systems, including available methods.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> Gc.isdtime()
False
>>> Gd = ct.sample_system(Gc, 1, method='bilinear')
>>> Gd.isdtime()
True
control.saturation_nonlinearity
Python Library Documentation: class saturation_nonlinearity in module control.descfcn class saturation_nonlinearity(DescribingFunctionNonlinearity) | saturation_nonlinearity(ub=1, lb=None) | | Saturation nonlinearity for describing function analysis. | | This class creates a nonlinear function representing a saturation with | given upper and lower bounds, including the describing function for the | nonlinearity. The following call creates a nonlinear function suitable | for describing function analysis: | | F = saturation_nonlinearity(ub[, lb]) | | By default, the lower bound is set to the negative of the upper bound. | Asymmetric saturation functions can be created, but note that these | functions will not have zero bias and hence care must be taken in using | the nonlinearity for analysis. | | Parameters | ---------- | lb, ub : float | Upper and lower saturation bounds. | | Examples | -------- | >>> nl = ct.saturation_nonlinearity(5) | >>> nl(1) | np.int64(1) | >>> nl(10) | np.int64(5) | >>> nl(-10) | np.int64(-5) | | Method resolution order: | saturation_nonlinearity | DescribingFunctionNonlinearity | builtins.object | | Methods defined here: | | __call__(self, x) | Evaluate the nonlinearity at a (scalar) input value. | | __init__(self, ub=1, lb=None) | Initialize a describing function nonlinearity (optional). | | describing_function(self, A) | Return the describing function for a saturation nonlinearity. | | Parameters | ---------- | A : float | Amplitude of the sinusoidal input to the nonlinearity. | | Returns | ------- | float | Value of the describing function at the given amplitude. | | ---------------------------------------------------------------------- | Data descriptors inherited from DescribingFunctionNonlinearity: | | __dict__ | dictionary for instance variables | | __weakref__ | list of weak references to the object
control.series
Python Library Documentation: function series in module control.bdalg
series(*sys, **kwargs)
series(sys1, sys2[, ..., sysn])
Series connection of I/O systems.
Generates a new system ``[sysn * ... *] sys2 * sys1``.
Parameters
----------
sys1, sys2, ..., sysn : scalar, array, or `InputOutputSystem`
I/O systems to combine.
Returns
-------
out : `InputOutputSystem`
Series interconnection of the systems.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals. If not given,
signal names will be of the form 's[i]' (where 's' is one of 'u,
or 'y'). See `InputOutputSystem` for more information.
states : str, or list of str, optional
List of names for system states. If not given, state names will be
of the form 'x[i]' for interconnections of linear systems or
'<subsys_name>.<state_name>' for interconnected nonlinear systems.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If `sys2.ninputs` does not equal `sys1.noutputs` or if `sys1.dt` is
not compatible with `sys2.dt`.
See Also
--------
append, feedback, interconnect, negate, parallel
Notes
-----
This function is a wrapper for the __mul__ function in the appropriate
`NonlinearIOSystem`, `StateSpace`, `TransferFunction`, or other I/O
system class. The output type is the type of `sys1` unless a more
general type is required based on type type of `sys2`.
If both systems have a defined timebase (`dt` = 0 for continuous time,
`dt` > 0 for discrete time), then the timebase for both systems must
match. If only one of the system has a timebase, the return
timebase will be set to match it.
Examples
--------
>>> G1 = ct.rss(3)
>>> G2 = ct.rss(4)
>>> G = ct.series(G1, G2) # Same as sys3 = sys2 * sys1
>>> G.ninputs, G.noutputs, G.nstates
(1, 1, 7)
>>> G1 = ct.rss(2, inputs=2, outputs=3)
>>> G2 = ct.rss(3, inputs=3, outputs=1)
>>> G = ct.series(G1, G2) # Same as sys3 = sys2 * sys1
>>> G.ninputs, G.noutputs, G.nstates
(2, 1, 5)
control.set_defaults
Python Library Documentation: function set_defaults in module control.config
set_defaults(module, **keywords)
Set default values of parameters for a module.
The set_defaults() function can be used to modify multiple parameter
values for a module at the same time, using keyword arguments.
Parameters
----------
module : str
Name of the module for which the defaults are being given.
**keywords : keyword arguments
Parameter value assignments.
Examples
--------
>>> ct.defaults['freqplot.number_of_samples']
1000
>>> ct.set_defaults('freqplot', number_of_samples=100)
>>> ct.defaults['freqplot.number_of_samples']
100
>>> # do some customized freqplotting
control.similarity_transform
Python Library Documentation: function similarity_transform in module control.canonical
similarity_transform(xsys, T, timescale=1, inverse=False)
Similarity transformation, with optional time rescaling.
Transform a linear state space system to a new state space representation
z = T x, or x = T z, where T is an invertible matrix.
Parameters
----------
xsys : `StateSpace` object
System to transform.
T : (M, M) array_like
The matrix `T` defines the new set of coordinates z = T x.
timescale : float, optional
If present, also rescale the time unit to tau = timescale * t.
inverse : bool, optional
If False (default), transform so z = T x. If True, transform
so x = T z.
Returns
-------
zsys : `StateSpace` object
System in transformed coordinates, with state 'z'.
See Also
--------
canonical_form
Examples
--------
>>> Gs = ct.tf2ss([1], [1, 3, 2])
>>> Gs.A
array([[-3., -2.],
[ 1., 0.]])
>>> T = np.array([[0, 1], [1, 0]])
>>> Gt = ct.similarity_transform(Gs, T)
>>> Gt.A
array([[ 0., 1.],
[-2., -3.]])
control.singular_values_plot
Python Library Documentation: function singular_values_plot in module control.freqplot
singular_values_plot(data, omega=None, *fmt, plot=None, omega_limits=None, omega_num=None, ax=None, label=None, title=None, **kwargs)
Plot the singular values for a system.
Plot the singular values as a function of frequency for a system or
list of systems. If multiple systems are plotted, each system in the
list is plotted in a different color.
Parameters
----------
data : list of `FrequencyResponseData`
List of `FrequencyResponseData` objects. For backward
compatibility, a list of LTI systems can also be given.
omega : array_like
List of frequencies in rad/sec over to plot over.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
The `omega` parameter must be present (use omega=None if needed).
dB : bool
If True, plot result in dB. Default is False.
Hz : bool
If True, plot frequency in Hz (omega must be provided in rad/sec).
Default value (False) set by `config.defaults['freqplot.Hz']`.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The size of
the array matches the number of systems and the value of the array
is a list of Line2D objects for that system.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
ax : `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified and
the current figure has a single axes, that axes is used.
Otherwise, a new figure is created.
color : matplotlib color spec
Color to use for singular values (or None for matplotlib default).
grid : bool
If True, plot grid lines on gain and phase plots. Default is
set by `config.defaults['freqplot.grid']`.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If sysdata is a list, strings should be specified for each
system.
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`. Ignored if data is
not a list of systems.
plot : bool, optional
(legacy) If given, `singular_values_plot` returns the legacy return
values of magnitude, phase, and frequency. If False, just return
the values with no plot.
rcParams : dict
Override the default parameters used for generating plots.
Default is set up `config.defaults['ctrlplot.rcParams']`.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
title_frame : str, optional
Set the frame of reference used to center the plot title. If set to
'axes' (default), the horizontal position of the title will
centered relative to the axes. If set to 'figure', it will be
centered with respect to the figure (faster execution).
See Also
--------
singular_values_response
Notes
-----
If `plot` = False, the following legacy values are returned:
* `mag` : ndarray (or list of ndarray if len(data) > 1))
Magnitude of the response (deprecated).
* `phase` : ndarray (or list of ndarray if len(data) > 1))
Phase in radians of the response (deprecated).
* `omega` : ndarray (or list of ndarray if len(data) > 1))
Frequency in rad/sec (deprecated).
control.singular_values_response
Python Library Documentation: function singular_values_response in module control.freqplot
singular_values_response(sysdata, omega=None, omega_limits=None, omega_num=None, Hz=False)
Singular value response for a system.
Computes the singular values for a system or list of systems over
a (optional) frequency range.
Parameters
----------
sysdata : LTI or list of LTI
List of linear input/output systems (single system is OK).
omega : array_like
List of frequencies in rad/sec to be used for frequency response.
Hz : bool, optional
If True, when computing frequency limits automatically set
limits to full decades in Hz instead of rad/s.
Returns
-------
response : `FrequencyResponseData`
Frequency response with the number of outputs equal to the
number of singular values in the response, and a single input.
Other Parameters
----------------
omega_limits : array_like of two values
Set limits for plotted frequency range. If Hz=True the limits are
in Hz otherwise in rad/s. Specifying `omega` as a list of two
elements is equivalent to providing `omega_limits`.
omega_num : int, optional
Number of samples to use for the frequency range. Defaults to
`config.defaults['freqplot.number_of_samples']`.
See Also
--------
singular_values_plot
Examples
--------
>>> omegas = np.logspace(-4, 1, 1000)
>>> den = [75, 1]
>>> G = ct.tf([[[87.8], [-86.4]], [[108.2], [-109.6]]],
... [[den, den], [den, den]])
>>> response = ct.singular_values_response(G, omega=omegas)
control.sisotool
Python Library Documentation: function sisotool in module control.sisotool
sisotool(sys, initial_gain=None, xlim_rlocus=None, ylim_rlocus=None, plotstr_rlocus='C0', rlocus_grid=False, omega=None, dB=None, Hz=None, deg=None, omega_limits=None, omega_num=None, margins_bode=True, tvect=None, kvect=None)
Collection of plots inspired by MATLAB's sisotool.
The left two plots contain the bode magnitude and phase diagrams.
The top right plot is a clickable root locus plot, clicking on the
root locus will change the gain of the system. The bottom left plot
shows a closed loop time response.
Parameters
----------
sys : LTI object
Linear input/output systems. If `sys` is SISO, use the same system
for the root locus and step response. If it is desired to see a
different step response than ``feedback(K*sys, 1)``, such as a
disturbance response, `sys` can be provided as a two-input,
two-output system. For two-input, two-output system, sisotool
inserts the negative of the selected gain `K` between the first
output and first input and uses the second input and output for
computing the step response. To see the disturbance response,
configure your plant to have as its second input the disturbance
input. To view the step response with a feedforward controller,
give your plant two identical inputs, and sum your feedback
controller and your feedforward controller and multiply them into
your plant's second input. It is also possible to accommodate a
system with a gain in the feedback.
initial_gain : float, optional
Initial gain to use for plotting root locus. Defaults to 1
(`config.defaults['sisotool.initial_gain']`).
xlim_rlocus : tuple or list, optional
Control of x-axis range (see `matplotlib.axes.Axes.set_xlim`).
ylim_rlocus : tuple or list, optional
Control of y-axis range (see `matplotlib.axes.Axes.set_ylim`).
plotstr_rlocus : `matplotlib.pyplot.plot` format string, optional
Plotting style for the root locus plot(color, linestyle, etc).
rlocus_grid : boolean (default = False)
If True, plot s- or z-plane grid.
omega : array_like
List of frequencies in rad/sec to be used for bode plot.
dB : boolean
If True, plot result in dB for the bode plot.
Hz : boolean
If True, plot frequency in Hz for the bode plot (omega must be
provided in rad/sec).
deg : boolean
If True, plot phase in degrees for the bode plot (else radians).
omega_limits : array_like of two values
Limits of the to generate frequency vector. If Hz=True the limits
are in Hz otherwise in rad/s. Ignored if omega is provided, and
auto-generated if omitted.
omega_num : int
Number of samples to plot. Defaults to
`config.defaults['freqplot.number_of_samples']`.
margins_bode : boolean
If True, plot gain and phase margin in the bode plot.
tvect : list or ndarray, optional
List of time steps to use for closed loop step response.
Examples
--------
>>> G = ct.tf([1000], [1, 25, 100, 0])
>>> ct.sisotool(G) # doctest: +SKIP
control.slycot_check
Python Library Documentation: function slycot_check in module control.exception
slycot_check()
Return True if Slycot is installed, otherwise False.
control.slycot_installed
Python Library Documentation: NoneType object class NoneType(object) | Methods defined here: | | __bool__(self, /) | True if self else False | | __eq__(self, value, /) | Return self==value. | | __ge__(self, value, /) | Return self>=value. | | __gt__(self, value, /) | Return self>value. | | __hash__(self, /) | Return hash(self). | | __le__(self, value, /) | Return self<=value. | | __lt__(self, value, /) | Return self<value. | | __ne__(self, value, /) | Return self!=value. | | __repr__(self, /) | Return repr(self). | | ---------------------------------------------------------------------- | Static methods defined here: | | __new__(*args, **kwargs) | Create and return a new object. See help(type) for accurate signature.
control.solve_passivity_LMI
Python Library Documentation: function solve_passivity_LMI in module control.passivity
solve_passivity_LMI(sys, rho=None, nu=None)
Compute passivity indices and/or solves feasibility via a LMI.
Constructs a linear matrix inequality (LMI) such that if a solution
exists and the last element of the solution is positive, the system
`sys` is passive. Inputs of None for `rho` or `nu` indicate that the
function should solve for that index (they are mutually exclusive, they
can't both be None, otherwise you're trying to solve a nonconvex
bilinear matrix inequality.) The last element of the output `solution`
is either the output or input passivity index, for `rho` = None and
`nu` = None, respectively.
Parameters
----------
sys : LTI
System to be checked.
rho : float or None
Output feedback passivity index.
nu : float or None
Input feedforward passivity index.
Returns
-------
solution : ndarray
The LMI solution.
References
----------
.. [1] McCourt, Michael J., and Panos J. Antsaklis, "Demonstrating
passivity and dissipativity using computational methods."
.. [2] Nicholas Kottenstette and Panos J. Antsaklis,
"Relationships Between Positive Real, Passive Dissipative, &
Positive Systems", equation 36.
control.split_tf
Python Library Documentation: function split_tf in module control.bdalg
split_tf(transfer_function)
Split MIMO transfer function into SISO transfer functions.
System and signal names for the array of SISO transfer functions are
copied from the MIMO system.
Parameters
----------
transfer_function : `TransferFunction`
MIMO transfer function to split.
Returns
-------
ndarray
NumPy array of SISO transfer functions.
Examples
--------
Split a MIMO transfer function:
>>> G = ct.tf(
... [ [[87.8], [-86.4]],
... [[108.2], [-109.6]] ],
... [ [[1, 1], [1, 1]],
... [[1, 1], [1, 1]], ],
... name='G'
... )
>>> ct.split_tf(G)
array([[TransferFunction(
array([87.8]),
array([1, 1]),
name='G', outputs=1, inputs=1), TransferFunction(
array([-86.4]),
array([1, 1]),
name='G', outputs=1, inputs=1)],
[TransferFunction(
array([108.2]),
array([1, 1]),
name='G', outputs=1, inputs=1), TransferFunction(
array([-109.6]),
array([1, 1]),
name='G', outputs=1, inputs=1)]],
dtype=object)
control.ss
Python Library Documentation: function ss in module control.statesp
ss(*args, **kwargs)
ss(A, B, C, D[, dt])
Create a state space system.
The function accepts either 1, 4 or 5 positional parameters:
``ss(sys)``
Convert a linear system into space system form. Always creates a
new system, even if `sys` is already a state space system.
``ss(A, B, C, D)``
Create a state space system from the matrices of its state and
output equations:
.. math::
dx/dt &= A x + B u \\
y &= C x + D u
``ss(A, B, C, D, dt)``
Create a discrete-time state space system from the matrices of
its state and output equations:
.. math::
x[k+1] &= A x[k] + B u[k] \\
y[k] &= C x[k] + D u[k]
The matrices can be given as 2D array_like data types. For SISO
systems, `B` and `C` can be given as 1D arrays and D can be given
as a scalar.
``ss(*args, inputs=['u1', ..., 'up'], outputs=['y1', ..., 'yq'], states=['x1', ..., 'xn'])``
Create a system with named input, output, and state signals.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
A, B, C, D : array_like or string
System, control, output, and feed forward matrices.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
remove_useless_states : bool, optional
If True, remove states that have no effect on the input/output
dynamics. If not specified, the value is read from
`config.defaults['statesp.remove_useless_states']` (default = False).
method : str, optional
Set the method used for converting a transfer function to a state
space system. Current methods are 'slycot' and 'scipy'. If set to
None (default), try 'slycot' first and then 'scipy' (SISO only).
Returns
-------
out : `StateSpace`
Linear input/output system.
Other Parameters
----------------
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals. If this parameter
is not given or given as None, the signal names will be of the
form 's[i]' (where 's' is one of 'u', 'y', or 'x'). See
`InputOutputSystem` for more information.
input_prefix, output_prefix, state_prefix : string, optional
Set the prefix for input, output, and state signals. Defaults =
'u', 'y', 'x'.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If matrix sizes are not self-consistent.
See Also
--------
StateSpace, nlsys, tf, ss2tf, tf2ss, zpk
Notes
-----
If a transfer function is passed as the sole positional argument, the
system will be converted to state space form in the same way as calling
`tf2ss`. The `method` keyword can be used to select the
method for conversion.
Examples
--------
Create a linear I/O system object from matrices:
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
Convert a transfer function to a state space system:
>>> sys_tf = ct.tf([2.], [1., 3])
>>> sys2 = ct.ss(sys_tf)
control.ss2io
Python Library Documentation: function ss2io in module control.statesp
ss2io(*args, **kwargs)
ss2io(sys[, ...])
Create an I/O system from a state space linear system.
.. deprecated:: 0.10.0
This function will be removed in a future version of python-control.
The `ss` function can be used directly to produce an I/O system.
Create an `StateSpace` system with the given signal
and system names. See `ss` for more details.
control.ss2tf
Python Library Documentation: function ss2tf in module control.xferfcn
ss2tf(*args, **kwargs)
ss2tf(sys)
Transform a state space system to a transfer function.
The function accepts either 1 or 4 parameters:
``ss2tf(sys)``
Convert a linear system from state space into transfer function
form. Always creates a new system.
``ss2tf(A, B, C, D)``
Create a transfer function system from the matrices of its state and
output equations.
For details see: `tf`.
Parameters
----------
sys : `StateSpace`
A linear system.
A : array_like or string
System matrix.
B : array_like or string
Control matrix.
C : array_like or string
Output matrix.
D : array_like or string
Feedthrough matrix.
**kwargs : keyword arguments
Additional arguments passed to `tf` (e.g., signal names).
Returns
-------
out : `TransferFunction`
New linear system in transfer function form.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If matrix sizes are not self-consistent, or if an invalid number of
arguments is passed in.
TypeError
If `sys` is not a `StateSpace` object.
See Also
--------
tf, ss, tf2ss
Examples
--------
>>> A = [[-1, -2], [3, -4]]
>>> B = [[5], [6]]
>>> C = [[7, 8]]
>>> D = [[9]]
>>> sys1 = ct.ss2tf(A, B, C, D)
>>> sys_ss = ct.ss(A, B, C, D)
>>> sys_tf = ct.ss2tf(sys_ss)
control.ssdata
Python Library Documentation: function ssdata in module control.statesp
ssdata(sys)
Return state space data objects for a system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
LTI system whose data will be returned.
Returns
-------
A, B, C, D : ndarray
State space data for the system.
control.stability_margins
Python Library Documentation: function stability_margins in module control.margins
stability_margins(sysdata, returnall=False, epsw=0.0, method='best')
Stability margins and associated crossover frequencies.
Parameters
----------
sysdata : LTI system or 3-tuple of array_like
Linear SISO system representing the loop transfer function.
Alternatively, a three tuple of the form (mag, phase, omega)
providing the frequency response can be passed.
returnall : bool, optional
If true, return all margins found. If False (default), return only the
minimum stability margins. For frequency data or FRD systems, only
margins in the given frequency region can be found and returned.
epsw : float, optional
Frequencies below this value (default 0.0) are considered static gain,
and not returned as margin.
method : string, optional
Method to use (default is 'best'):
* 'poly': use polynomial method if passed a `LTI` system.
* 'frd': calculate crossover frequencies using numerical
interpolation of a `FrequencyResponseData` representation
of the system if passed a `LTI` system.
* 'best': use the 'poly' method if possible, reverting to 'frd' if
it is detected that numerical inaccuracy is likely to arise in the
'poly' method for for discrete-time systems.
Returns
-------
gm : float or array_like
Gain margin.
pm : float or array_like
Phase margin.
sm : float or array_like
Stability margin, the minimum distance from the Nyquist plot to -1.
wpc : float or array_like
Phase crossover frequency (where phase crosses -180 degrees), which is
associated with the gain margin.
wgc : float or array_like
Gain crossover frequency (where gain crosses 1), which is associated
with the phase margin.
wms : float or array_like
Stability margin frequency (where Nyquist plot is closest to -1).
Notes
-----
The gain margin is determined by the gain of the loop transfer function
at the phase crossover frequency(s), the phase margin is determined by
the phase of the loop transfer function at the gain crossover
frequency(s), and the stability margin is determined by the frequency
of maximum sensitivity (given by the magnitude of 1/(1+L)).
control.statefbk
Python Library Documentation: module control.statefbk in control
NAME
control.statefbk - Routines for designing state space controllers.
FUNCTIONS
acker = place_acker(A, B, poles)
Pole placement using Ackermann method.
Call:
K = place_acker(A, B, poles)
Parameters
----------
A, B : 2D array_like
State and input matrix of the system.
poles : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gains such that A - B K has given eigenvalues.
See Also
--------
place, place_varga
create_statefbk_iosystem(sys, gain, feedfwd_gain=None, integral_action=None, estimator=None, controller_type=None, xd_labels=None, ud_labels=None, ref_labels=None, feedfwd_pattern='trajgen', gainsched_indices=None, gainsched_method='linear', control_indices=None, state_indices=None, name=None, inputs=None, outputs=None, states=None, params=None, **kwargs)
Create an I/O system using a (full) state feedback controller.
This function creates an input/output system that implements a
state feedback controller of the form
.. math:: u = u_d - K_p (x - x_d) - K_i \int(C x - C x_d)
by calling
ctrl, clsys = ct.create_statefbk_iosystem(sys, K)
where `sys` is the process dynamics and `K` is the state (+ integral)
feedback gain (e.g., from LQR). The function returns the controller
`ctrl` and the closed loop systems `clsys`, both as I/O systems.
A gain scheduled controller can also be created, by passing a list of
gains and a corresponding list of values of a set of scheduling
variables. In this case, the controller has the form
.. math:: u = u_d - K_p(\mu) (x - x_d) - K_i(\mu) \int(C x - C x_d)
where :math:`\mu` represents the scheduling variable.
Alternatively, a controller of the form
.. math:: u = k_f r - K_p x - K_i \int(C x - r)
can be created by calling
ctrl, clsys = ct.create_statefbk_iosystem(
sys, K, kf, feedfwd_pattern='refgain')
In either form, an estimator can also be used to compute the estimated
state from the input and output measurements.
Parameters
----------
sys : `NonlinearIOSystem`
The I/O system that represents the process dynamics. If no estimator
is given, the output of this system should represent the full state.
gain : ndarray, tuple, or I/O system
If an array is given, it represents the state feedback gain (`K`).
This matrix defines the gains to be applied to the system. If
`integral_action` is None, then the dimensions of this array
should be (sys.ninputs, sys.nstates). If `integral action` is
set to a matrix or a function, then additional columns
represent the gains of the integral states of the controller.
If a tuple is given, then it specifies a gain schedule. The tuple
should be of the form ``(gains, points)`` where gains is a list of
gains `K_j` and points is a list of values `mu_j` at which the
gains are computed. The `gainsched_indices` parameter should be
used to specify the scheduling variables.
If an I/O system is given, the error e = x - xd is passed to the
system and the output is used as the feedback compensation term.
feedfwd_gain : array_like, optional
Specify the feedforward gain, `k_f`. Used only for the reference
gain design pattern. If not given and if `sys` is a `StateSpace`
(linear) system, will be computed as -1/(C (A-BK)^{-1}) B.
feedfwd_pattern : str, optional
If set to 'refgain', the reference gain design pattern is used to
create the controller instead of the trajectory generation
('trajgen') pattern.
integral_action : ndarray, optional
If this keyword is specified, the controller can include integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current and desired state to generate the error
for the internal integrator states of the control law.
estimator : `NonlinearIOSystem`, optional
If an estimator is provided, use the states of the estimator as
the system inputs for the controller.
gainsched_indices : int, slice, or list of int or str, optional
If a gain scheduled controller is specified, specify the indices of
the controller input to use for scheduling the gain. The input to
the controller is the desired state `x_d`, the desired input `u_d`,
and the system state `x` (or state estimate `xhat`, if an
estimator is given). If value is an integer `q`, the first `q`
values of the ``[x_d, u_d, x]`` vector are used. Otherwise, the
value should be a slice or a list of indices. The list of indices
can be specified as either integer offsets or as signal names. The
default is to use the desired state `x_d`.
gainsched_method : str, optional
The method to use for gain scheduling. Possible values are 'linear'
(default), 'nearest', and 'cubic'. More information is available in
`scipy.interpolate.griddata`. For points outside of the convex
hull of the scheduling points, the gain at the nearest point is
used.
controller_type : 'linear' or 'nonlinear', optional
Set the type of controller to create. The default for a linear gain
is a linear controller implementing the LQR regulator. If the type
is 'nonlinear', a `NonlinearIOSystem` is created instead, with
the gain `K` as a parameter (allowing modifications of the gain at
runtime). If the gain parameter is a tuple, then a nonlinear,
gain-scheduled controller is created.
Returns
-------
ctrl : `NonlinearIOSystem`
Input/output system representing the controller. For the 'trajgen'
design pattern (default), this system takes as inputs the desired
state `x_d`, the desired input `u_d`, and either the system state
`x` or the estimated state `xhat`. It outputs the controller
action `u` according to the formula u = u_d - K(x - x_d). For
the 'refgain' design pattern, the system takes as inputs the
reference input `r` and the system or estimated state. If the
keyword `integral_action` is specified, then an additional set of
integrators is included in the control system (with the gain matrix
`K` having the integral gains appended after the state gains). If
a gain scheduled controller is specified, the gain (proportional
and integral) are evaluated using the scheduling variables
specified by `gainsched_indices`.
clsys : `NonlinearIOSystem`
Input/output system representing the closed loop system. This
system takes as inputs the desired trajectory (x_d, u_d) and
outputs the system state `x` and the applied input `u`
(vertically stacked).
Other Parameters
----------------
control_indices : int, slice, or list of int or str, optional
Specify the indices of the system inputs that should be determined
by the state feedback controller. If value is an integer `m`, the
first `m` system inputs are used. Otherwise, the value should be a
slice or a list of indices. The list of indices can be specified
as either integer offsets or as system input signal names. If not
specified, defaults to the system inputs.
state_indices : int, slice, or list of int or str, optional
Specify the indices of the system (or estimator) outputs that should
be used by the state feedback controller. If value is an integer
`n`, the first `n` system states are used. Otherwise, the value
should be a slice or a list of indices. The list of indices can be
specified as either integer offsets or as estimator/system output
signal names. If not specified, defaults to the system states.
xd_labels, ud_labels, ref_labels : str or list of str, optional
Set the name of the signals to use for the desired state and inputs
or the reference inputs (for the 'refgain' design pattern). If a
single string is specified, it should be a format string using the
variable `i` as an index. Otherwise, a list of strings matching
the size of x_d and u_d, respectively, should be used.
Default is "xd[{i}]" for xd_labels and "ud[{i}]" for ud_labels.
These settings can also be overridden using the `inputs` keyword.
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs, outputs, and states are the same
as the original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
params : dict, optional
System parameter values. By default, these will be copied from
`sys` and `ctrl`, but can be overridden with this keyword.
Examples
--------
>>> import control as ct
>>> import numpy as np
>>>
>>> A = [[0, 1], [-0.5, -0.1]]
>>> B = [[0], [1]]
>>> C = np.eye(2)
>>> D = np.zeros((2, 1))
>>> sys = ct.ss(A, B, C, D)
>>>
>>> Q = np.eye(2)
>>> R = np.eye(1)
>>>
>>> K, _, _ = ct.lqr(sys,Q,R)
>>> ctrl, clsys = ct.create_statefbk_iosystem(sys, K)
ctrb(A, B, t=None)
Controllability matrix.
Parameters
----------
A, B : array_like or string
Dynamics and input matrix of the system.
t : None or integer
Maximum time horizon of the controllability matrix, max = A.shape[0].
Returns
-------
C : 2D array
Controllability matrix.
Examples
--------
>>> G = ct.tf2ss([1], [1, 2, 3])
>>> C = ct.ctrb(G.A, G.B)
>>> np.linalg.matrix_rank(C)
np.int64(2)
dlqr(*args, **kwargs)
dlqr(A, B, Q, R[, N])
Discrete-time linear quadratic regulator design.
The dlqr() function computes the optimal state feedback controller
u[n] = - K x[n] that minimizes the quadratic cost
.. math:: J = \sum_0^\infty (x[n]' Q x[n] + u[n]' R u[n] + 2 x[n]' N u[n])
The function can be called with either 3, 4, or 5 arguments:
* ``dlqr(dsys, Q, R)``
* ``dlqr(dsys, Q, R, N)``
* ``dlqr(A, B, Q, R)``
* ``dlqr(A, B, Q, R, N)``
where `dsys` is a discrete-time `StateSpace` system, and `A`, `B`,
`Q`, `R`, and `N` are 2d arrays of appropriate dimension (`dsys.dt` must
not be 0.)
Parameters
----------
A, B : 2D array
Dynamics and input matrices.
dsys : LTI `StateSpace`
Discrete-time linear system.
Q, R : 2D array
State and input weight matrices.
N : 2D array, optional
Cross weight matrix.
integral_action : ndarray, optional
If this keyword is specified, the controller includes integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current state to generate the error for the
internal integrator states of the control law. The number of
outputs that are to be integrated must match the number of
additional rows and columns in the `Q` matrix.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
K : 2D array
State feedback gains.
S : 2D array
Solution to Riccati equation.
E : 1D array
Eigenvalues of the closed loop system.
See Also
--------
lqr, lqe, dlqe
Examples
--------
>>> K, S, E = dlqr(dsys, Q, R, [N]) # doctest: +SKIP
>>> K, S, E = dlqr(A, B, Q, R, [N]) # doctest: +SKIP
gram(sys, type)
Gramian (controllability or observability).
Parameters
----------
sys : `StateSpace`
System description.
type : String
Type of desired computation. `type` is either 'c' (controllability)
or 'o' (observability). To compute the Cholesky factors of Gramians
use 'cf' (controllability) or 'of' (observability).
Returns
-------
gram : 2D array
Gramian of system.
Raises
------
ValueError
* If system is not instance of `StateSpace` class, or
* if `type` is not 'c', 'o', 'cf' or 'of', or
* if system is unstable (sys.A has eigenvalues not in left half plane).
ControlSlycot
If slycot routine sb03md cannot be found or
if slycot routine sb03od cannot be found.
Examples
--------
>>> G = ct.rss(4)
>>> Wc = ct.gram(G, 'c')
>>> Wo = ct.gram(G, 'o')
>>> Rc = ct.gram(G, 'cf') # where Wc = Rc' * Rc
>>> Ro = ct.gram(G, 'of') # where Wo = Ro' * Ro
lqr(*args, **kwargs)
lqr(A, B, Q, R[, N])
Linear quadratic regulator design.
The lqr() function computes the optimal state feedback controller
u = -K x that minimizes the quadratic cost
.. math:: J = \int_0^\infty (x' Q x + u' R u + 2 x' N u) dt
The function can be called with either 3, 4, or 5 arguments:
* ``K, S, E = lqr(sys, Q, R)``
* ``K, S, E = lqr(sys, Q, R, N)``
* ``K, S, E = lqr(A, B, Q, R)``
* ``K, S, E = lqr(A, B, Q, R, N)``
where `sys` is an `LTI` object, and `A`, `B`, `Q`, `R`, and `N` are
2D arrays or matrices of appropriate dimension.
Parameters
----------
A, B : 2D array_like
Dynamics and input matrices.
sys : LTI `StateSpace` system
Linear system.
Q, R : 2D array
State and input weight matrices.
N : 2D array, optional
Cross weight matrix.
integral_action : ndarray, optional
If this keyword is specified, the controller includes integral
action in addition to state feedback. The value of the
`integral_action` keyword should be an ndarray that will be
multiplied by the current state to generate the error for the
internal integrator states of the control law. The number of
outputs that are to be integrated must match the number of
additional rows and columns in the `Q` matrix.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
K : 2D array
State feedback gains.
S : 2D array
Solution to Riccati equation.
E : 1D array
Eigenvalues of the closed loop system.
See Also
--------
lqe, dlqr, dlqe
Notes
-----
If the first argument is an LTI object, then this object will be used
to define the dynamics and input matrices. Furthermore, if the LTI
object corresponds to a discrete-time system, the `dlqr` function
will be called.
Examples
--------
>>> K, S, E = lqr(sys, Q, R, [N]) # doctest: +SKIP
>>> K, S, E = lqr(A, B, Q, R, [N]) # doctest: +SKIP
obsv(A, C, t=None)
Observability matrix.
Parameters
----------
A, C : array_like or string
Dynamics and output matrix of the system.
t : None or integer
Maximum time horizon of the controllability matrix, max = A.shape[0].
Returns
-------
O : 2D array
Observability matrix.
Examples
--------
>>> G = ct.tf2ss([1], [1, 2, 3])
>>> C = ct.obsv(G.A, G.C)
>>> np.linalg.matrix_rank(C)
np.int64(2)
place(A, B, p)
Place closed loop eigenvalues.
K = place(A, B, p)
Parameters
----------
A : 2D array_like
Dynamics matrix.
B : 2D array_like
Input matrix.
p : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gain such that A - B K has eigenvalues given in p.
Notes
-----
This is a wrapper function for `scipy.signal.place_poles`, which
implements the Tits and Yang algorithm [1]_. It will handle SISO, MISO,
and MIMO systems. If you want more control over the algorithm, use
`scipy.signal.place_poles` directly.
Limitations: The algorithm will not place poles at the same location
more than rank(B) times.
References
----------
.. [1] A.L. Tits and Y. Yang, "Globally convergent algorithms for robust
pole assignment by state feedback, IEEE Transactions on Automatic
Control, Vol. 41, pp. 1432-1452, 1996.
Examples
--------
>>> A = [[-1, -1], [0, 1]]
>>> B = [[0], [1]]
>>> K = ct.place(A, B, [-2, -5])
See Also
--------
place_acker, place_varga
place_acker(A, B, poles)
Pole placement using Ackermann method.
Call:
K = place_acker(A, B, poles)
Parameters
----------
A, B : 2D array_like
State and input matrix of the system.
poles : 1D array_like
Desired eigenvalue locations.
Returns
-------
K : 2D array
Gains such that A - B K has given eigenvalues.
See Also
--------
place, place_varga
place_varga(A, B, p, dtime=False, alpha=None)
Place closed loop eigenvalues using Varga method.
K = place_varga(A, B, p, dtime=False, alpha=None)
Parameters
----------
A : 2D array_like
Dynamics matrix.
B : 2D array_like
Input matrix.
p : 1D array_like
Desired eigenvalue locations.
dtime : bool, optional
False (default) for continuous-time pole placement or True
for discrete time.
alpha : float, optional
If `dtime` is false then place_varga will leave the eigenvalues with
real part less than alpha untouched. If `dtime` is true then
place_varga will leave eigenvalues with modulus less than alpha
untouched.
By default (alpha=None), place_varga computes alpha such that all
poles will be placed.
Returns
-------
K : 2D array
Gain such that A - B K has eigenvalues given in p.
See Also
--------
place, place_acker
Notes
-----
This function is a wrapper for the Slycot function sb01bd, which
implements the pole placement algorithm of Varga [1]_. In contrast
to the algorithm used by `place`, the Varga algorithm can place
multiple poles at the same location. The placement, however, may
not be as robust.
References
----------
.. [1] Varga A. "A Schur method for pole assignment." IEEE Trans.
Automatic Control, Vol. AC-26, pp. 517-519, 1981.
Examples
--------
>>> A = [[-1, -1], [0, 1]]
>>> B = [[0], [1]]
>>> K = ct.place_varga(A, B, [-2, -5])
DATA
__all__ = ['ctrb', 'obsv', 'gram', 'place', 'place_varga', 'lqr', 'dlq...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\statefbk.py
control.statesp
Python Library Documentation: module control.statesp in control
NAME
control.statesp - State space class and related functions.
DESCRIPTION
This module contains the `StateSpace class`, which is used to
represent linear systems in state space.
CLASSES
control.lti.LTI(control.iosys.InputOutputSystem)
StateSpace(control.nlsys.NonlinearIOSystem, control.lti.LTI)
LinearICSystem(control.nlsys.InterconnectedSystem, StateSpace)
control.nlsys.InterconnectedSystem(control.nlsys.NonlinearIOSystem)
LinearICSystem(control.nlsys.InterconnectedSystem, StateSpace)
control.nlsys.NonlinearIOSystem(control.iosys.InputOutputSystem)
StateSpace(control.nlsys.NonlinearIOSystem, control.lti.LTI)
LinearICSystem(control.nlsys.InterconnectedSystem, StateSpace)
class LinearICSystem(control.nlsys.InterconnectedSystem, StateSpace)
| LinearICSystem(io_sys, ss_sys=None, connection_type=None)
|
| Interconnection of a set of linear input/output systems.
|
| This class is used to implement a system that is an interconnection of
| linear input/output systems. It has all of the structure of an
| `InterconnectedSystem`, but also maintains the required
| elements of the `StateSpace` class structure, allowing it to be
| passed to functions that expect a `StateSpace` system.
|
| This class is generated using `interconnect` and
| not called directly.
|
| Method resolution order:
| LinearICSystem
| control.nlsys.InterconnectedSystem
| StateSpace
| control.nlsys.NonlinearIOSystem
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __call__(self, *args, **kwargs)
| Evaluate a (static) nonlinearity at a given input value.
|
| If a nonlinear I/O system has no internal state, then evaluating
| the system at an input `u` gives the output ``y = F(u)``,
| determined by the output function.
|
| Parameters
| ----------
| params : dict, optional
| Parameter values for the system. Passed to the evaluation function
| for the system as default values, overriding internal defaults.
| squeeze : bool, optional
| If True and if the system has a single output, return the
| system output as a 1D array rather than a 2D array. If
| False, return the system output as a 2D array even if the
| system is SISO. Default value set by
| `config.defaults['control.squeeze_time_response']`.
|
| __init__(self, io_sys, ss_sys=None, connection_type=None)
| Create an I/O system from a list of systems + connection info.
|
| __str__(self)
| Return string representation of the state space system.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| states
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.InterconnectedSystem:
|
| check_unused_signals(self, ignore_inputs=None, ignore_outputs=None, print_warning=True)
| Check for unused subsystem inputs and outputs.
|
| Check to see if there are any unused signals and return a list of
| unused input and output signal descriptions. If `warning` is
| True and any unused inputs or outputs are found, emit a warning.
|
| Parameters
| ----------
| ignore_inputs : list of input-spec
| Subsystem inputs known to be unused. input-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem inputs with that
| name are considered ignored.
|
| ignore_outputs : list of output-spec
| Subsystem outputs known to be unused. output-spec can be any of:
| 'sig', 'sys.sig', (isys, isig), ('sys', isig)
|
| If the 'sig' form is used, all subsystem outputs with that
| name are considered ignored.
|
| print_warning : bool, optional
| If True, print a warning listing any unused signals.
|
| Returns
| -------
| dropped_inputs : list of tuples
| A list of the dropped input signals, with each element of the
| list in the form of (isys, isig).
|
| dropped_outputs : list of tuples
| A list of the dropped output signals, with each element of the
| list in the form of (osys, osig).
|
| connection_table(self, show_names=False, column_width=32)
| Table of connections inside an interconnected system.
|
| Intended primarily for `InterconnectedSystem`'s that have been
| connected implicitly using signal names.
|
| Parameters
| ----------
| show_names : bool, optional
| Instead of printing out the system number, print out the name
| of each system. Default is False because system name is not
| usually specified when performing implicit interconnection
| using `interconnect`.
| column_width : int, optional
| Character width of printed columns.
|
| Examples
| --------
| >>> P = ct.ss(1,1,1,0, inputs='u', outputs='y', name='P')
| >>> C = ct.tf(10, [.1, 1], inputs='e', outputs='u', name='C')
| >>> L = ct.interconnect([C, P], inputs='e', outputs='y')
| >>> L.connection_table(show_names=True) # doctest: +SKIP
| signal | source | destination
| --------------------------------------------------------------------
| e | input | C
| u | C | P
| y | P | output
|
| set_connect_map(self, connect_map)
| Set the connection map for an interconnected I/O system.
|
| Parameters
| ----------
| connect_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs to obtain the vector of subsystem inputs.
|
| set_input_map(self, input_map)
| Set the input map for an interconnected I/O system.
|
| Parameters
| ----------
| input_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| system inputs to obtain the vector of subsystem inputs. These
| values are added to the inputs specified in the connection map.
|
| set_output_map(self, output_map)
| Set the output map for an interconnected I/O system.
|
| Parameters
| ----------
| output_map : 2D array
| Specify the matrix that will be used to multiply the vector of
| subsystem outputs concatenated with subsystem inputs to obtain
| the vector of system outputs.
|
| unused_signals(self)
| Find unused subsystem inputs and outputs.
|
| Returns
| -------
| unused_inputs : dict
| A mapping from tuple of indices (isys, isig) to string
| '{sys}.{sig}', for all unused subsystem inputs.
|
| unused_outputs : dict
| A mapping from tuple of indices (osys, osig) to string
| '{sys}.{sig}', for all unused subsystem outputs.
|
| ----------------------------------------------------------------------
| Methods inherited from StateSpace:
|
| __add__(self, other)
| Add two LTI systems (parallel connection).
|
| __getitem__(self, key)
| Array style access
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a state space system.
|
| __pow__(self, other)
| Power of a state space system
|
| __radd__(self, other)
| Right add two LTI systems (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI systems.
|
| __rtruediv__(self, other)
| Division by state space system
|
| __sub__(self, other)
| Subtract two LTI systems.
|
| __truediv__(self, other)
| Division of state space systems by TFs, FRDs, scalars, and arrays
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to state-space if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `StateSpace`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| The zero-frequency gain of a continuous-time state-space
| system is given by:
|
| .. math: G(0) = - C A^{-1} B + D
|
| and of a discrete-time state-space system by:
|
| .. math: G(1) = C (I - A)^{-1} B + D
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| dynamics(self, t, x, u=None, params=None)
| Compute the dynamics of the system.
|
| Given input `u` and state `x`, returns the dynamics of the state-space
| system. If the system is continuous, returns the time derivative dx/dt
|
| dx/dt = A x + B u
|
| where A and B are the state-space matrices of the system. If the
| system is discrete time, returns the next value of `x`:
|
| x[t+dt] = A x[t] + B u[t]
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to numerical integrators, such as `scipy.integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input, zero if omitted.
|
| Returns
| -------
| dx/dt or x[t+dt] : ndarray
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `StateSpace.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| Notes
| -----
| Attempts to use Laub's method from Slycot library, with a fall-back
| to Python code.
|
| initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs) from control.timeresp
| Compute the initial condition response for a linear system.
|
| If the system has multiple outputs (MIMO), optionally, one output
| may be selected. If no selection is made for the output, all
| outputs are given.
|
| For information on the **shape** of parameters `T`, `X0` and
| return values `T`, `yout`, see :ref:`time-series-convention`.
|
| Parameters
| ----------
| sysdata : I/O system or list of I/O systems
| I/O system(s) for which initial response is computed.
| timepts (or T) : array_like or float, optional
| Time vector, or simulation time duration if a number (time vector is
| auto-computed if not given; see `step_response` for more detail).
| initial_state (or X0) : array_like or float, optional
| Initial condition (default = 0). Numbers are converted to constant
| arrays with the correct shape.
| output_indices (or output) : int
| Index of the output that will be used in this simulation. Set
| to None to not trim outputs.
| timepts_num (or T_num) : int, optional
| Number of time steps to use in simulation if `timepts` is not
| provided as an array (auto-computed if not given); ignored if the
| system is discrete time.
| params : dict, optional
| If system is a nonlinear I/O system, set parameter values.
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`). Default
| value is False.
| return_states (or return_x) : bool, optional
| If True, return the state vector when assigning to a tuple
| (default = False). See `forced_response` for more details.
| squeeze : bool, optional
| By default, if a system is single-input, single-output (SISO) then
| the output response is returned as a 1D array (indexed by time).
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep the output as a 2D array (indexed by the
| output number and time) even if the system is SISO. The default
| value can be set using
| `config.defaults['control.squeeze_time_response']`.
|
| Returns
| -------
| results : `TimeResponseData` or `TimeResponseList`
| Time response represented as a `TimeResponseData` object or
| list of `TimeResponseData` objects. See
| `forced_response` for additional information.
|
| See Also
| --------
| forced_response, impulse_response, step_response
|
| Notes
| -----
| This function uses the `forced_response` function with the input set to
| zero.
|
| Examples
| --------
| >>> G = ct.rss(4)
| >>> T, yout = ct.initial_response(G)
|
| lft(self, other, nu=-1, ny=-1)
| Return the linear fractional transformation.
|
| A definition of the LFT operator can be found in Appendix A.7,
| page 512 in [1]_. An alternative definition can be found here:
| https://www.mathworks.com/help/control/ref/lft.html
|
| Parameters
| ----------
| other : `StateSpace`
| The lower LTI system.
| ny : int, optional
| Dimension of (plant) measurement output.
| nu : int, optional
| Dimension of (plant) control input.
|
| Returns
| -------
| `StateSpace`
|
| References
| ----------
| .. [1] S. Skogestad, Multivariable Feedback Control. Second
| edition, 2005.
|
| minreal(self, tol=0.0)
| Remove unobservable and uncontrollable states.
|
| Calculate a minimal realization for a state space system,
| removing all unobservable and/or uncontrollable states.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether states are unobservable
| or uncontrollable.
|
| output(self, t, x, u=None, params=None)
| Compute the output of the system.
|
| Given input `u` and state `x`, returns the output `y` of the
| state-space system:
|
| y = C x + D u
|
| where A and B are the state-space matrices of the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to most numerical integrators, such as SciPy's `integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input (zero if omitted).
|
| Returns
| -------
| y : ndarray
|
| poles(self)
| Compute the poles of a state space system.
|
| returnScipySignalLTI(self, strict=True)
| Return a list of a list of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = ssobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3][5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the transfer
| function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `ssobject.dt` cannot be None; it must
| be continuous (0) or discrete (True or > 0).
| False:
| If `ssobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned.
|
| Returns
| -------
| out : list of list of `scipy.signal.StateSpace`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with method='gbt', and is
| ignored otherwise.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous-time system's magnitude and phase (the gain = 1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is
| generated with a unique integer id. If `copy_names` is
| True, the new system name is determined by adding the
| prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with
| the default being to add the suffix '$sampled'.
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `StateSpace`
| Discrete-time system, with sampling rate `Ts`.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
| states : int, list of str, or None, optional
| Description of the system states. Same format as `inputs`.
|
| Notes
| -----
| Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> G = ct.ss(0, 1, 1, 0)
| >>> sysd = G.sample(0.5, method='bilinear')
|
| slycot_laub(self, x)
| Laub's method to evaluate response at complex frequency.
|
| Evaluate transfer function at complex frequency using Laub's
| method from Slycot. Expects inputs and outputs to be
| formatted correctly. Use ``sys(x)`` for a more user-friendly
| interface.
|
| Parameters
| ----------
| x : complex array_like or complex
| Complex frequency.
|
| Returns
| -------
| output : (number_outputs, number_inputs, len(x)) complex ndarray
| Frequency response.
|
| zeros(self)
| Compute the zeros of a state space system.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from StateSpace:
|
| A = []
|
| B = []
|
| C = []
|
| D = []
|
| ninputs = 0
|
| noutputs = 0
|
| nstates = 0
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.NonlinearIOSystem:
|
| linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs)
| Linearize an input/output system at a given state and input.
|
| Return the linearization of an input/output system at a given
| operating point (or state and input value) as a `StateSpace` system.
| See `linearize` for complete documentation.
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
class StateSpace(control.nlsys.NonlinearIOSystem, control.lti.LTI)
| StateSpace(*args, **kwargs)
|
| StateSpace(A, B, C, D[, dt])
|
| State space representation for LTI input/output systems.
|
| The StateSpace class is used to represent state-space realizations of
| linear time-invariant (LTI) systems:
|
| .. math::
|
| dx/dt &= A x + B u \\
| y &= C x + D u
|
| where :math:`u` is the input, :math:`y` is the output, and
| :math:`x` is the state. State space systems are usually created
| with the `ss` factory function.
|
| Parameters
| ----------
| A, B, C, D : array_like
| System matrices of the appropriate dimensions.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None
| indicates unspecified timebase (either continuous or discrete time).
|
| Attributes
| ----------
| ninputs, noutputs, nstates : int
| Number of input, output and state variables.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels, state_labels : list of str
| Names for the input, output, and state variables.
| name : string, optional
| System name.
|
| See Also
| --------
| ss, InputOutputSystem, NonlinearIOSystem
|
| Notes
| -----
| The main data members in the `StateSpace` class are the A, B, C, and D
| matrices. The class also keeps track of the number of states (i.e.,
| the size of A).
|
| A discrete-time system is created by specifying a nonzero 'timebase', dt
| when the system is constructed:
|
| * `dt` = 0: continuous-time system (default)
| * `dt` > 0: discrete-time system with sampling period `dt`
| * `dt` = True: discrete time with unspecified sampling period
| * `dt` = None: no timebase specified
|
| Systems must have compatible timebases in order to be combined. A
| discrete-time system with unspecified sampling time (`dt` = True) can
| be combined with a system having a specified sampling time; the result
| will be a discrete-time system with the sample time of the other
| system. Similarly, a system with timebase None can be combined with a
| system having any timebase; the result will have the timebase of the
| other system. The default value of dt can be changed by changing the
| value of `config.defaults['control.default_dt']`.
|
| A state space system is callable and returns the value of the transfer
| function evaluated at a point in the complex plane. See
| `StateSpace.__call__` for a more detailed description.
|
| Subsystems corresponding to selected input/output pairs can be
| created by indexing the state space system::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets. The subsystem is created by truncating the inputs and
| outputs, but leaving the full set of system states.
|
| StateSpace instances have support for IPython HTML/LaTeX output, intended
| for pretty-printing in Jupyter notebooks. The HTML/LaTeX output can be
| configured using `config.defaults['statesp.latex_num_format']`
| and `config.defaults['statesp.latex_repr_type']`. The
| HTML/LaTeX output is tailored for MathJax, as used in Jupyter, and
| may look odd when typeset by non-MathJax LaTeX systems.
|
| `config.defaults['statesp.latex_num_format']` is a format string
| fragment, specifically the part of the format string after '{:'
| used to convert floating-point numbers to strings. By default it
| is '.3g'.
|
| `config.defaults['statesp.latex_repr_type']` must either be
| 'partitioned' or 'separate'. If 'partitioned', the A, B, C, D
| matrices are shown as a single, partitioned matrix; if
| 'separate', the matrices are shown separately.
|
| Method resolution order:
| StateSpace
| control.nlsys.NonlinearIOSystem
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI systems (parallel connection).
|
| __call__(self, x, squeeze=None, warn_infinite=True)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems.
|
| See `LTI.__call__` for details.
|
| Examples
| --------
| >>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
| >>> fresp = G(1j) # evaluate at s = 1j
|
| __getitem__(self, key)
| Array style access
|
| __init__(self, *args, **kwargs)
| StateSpace(A, B, C, D[, dt])
|
| Construct a state space object.
|
| The default constructor is StateSpace(A, B, C, D), where A, B, C, D
| are matrices or equivalent objects. To create a discrete-time
| system, use StateSpace(A, B, C, D, dt) where `dt` is the sampling
| time (or True for unspecified sampling time). To call the copy
| constructor, call ``StateSpace(sys)``, where `sys` is a `StateSpace`
| object.
|
| See `StateSpace` and `ss` for more information.
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a state space system.
|
| __pow__(self, other)
| Power of a state space system
|
| __radd__(self, other)
| Right add two LTI systems (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI systems.
|
| __rtruediv__(self, other)
| Division by state space system
|
| __str__(self)
| Return string representation of the state space system.
|
| __sub__(self, other)
| Subtract two LTI systems.
|
| __truediv__(self, other)
| Division of state space systems by TFs, FRDs, scalars, and arrays
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to state-space if necessary, inputs and
| outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `StateSpace`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| The zero-frequency gain of a continuous-time state-space
| system is given by:
|
| .. math: G(0) = - C A^{-1} B + D
|
| and of a discrete-time state-space system by:
|
| .. math: G(1) = C (I - A)^{-1} B + D
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| dynamics(self, t, x, u=None, params=None)
| Compute the dynamics of the system.
|
| Given input `u` and state `x`, returns the dynamics of the state-space
| system. If the system is continuous, returns the time derivative dx/dt
|
| dx/dt = A x + B u
|
| where A and B are the state-space matrices of the system. If the
| system is discrete time, returns the next value of `x`:
|
| x[t+dt] = A x[t] + B u[t]
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to numerical integrators, such as `scipy.integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input, zero if omitted.
|
| Returns
| -------
| dx/dt or x[t+dt] : ndarray
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| (deprecated) Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `StateSpace.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| Notes
| -----
| Attempts to use Laub's method from Slycot library, with a fall-back
| to Python code.
|
| initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs) from control.timeresp
| Compute the initial condition response for a linear system.
|
| If the system has multiple outputs (MIMO), optionally, one output
| may be selected. If no selection is made for the output, all
| outputs are given.
|
| For information on the **shape** of parameters `T`, `X0` and
| return values `T`, `yout`, see :ref:`time-series-convention`.
|
| Parameters
| ----------
| sysdata : I/O system or list of I/O systems
| I/O system(s) for which initial response is computed.
| timepts (or T) : array_like or float, optional
| Time vector, or simulation time duration if a number (time vector is
| auto-computed if not given; see `step_response` for more detail).
| initial_state (or X0) : array_like or float, optional
| Initial condition (default = 0). Numbers are converted to constant
| arrays with the correct shape.
| output_indices (or output) : int
| Index of the output that will be used in this simulation. Set
| to None to not trim outputs.
| timepts_num (or T_num) : int, optional
| Number of time steps to use in simulation if `timepts` is not
| provided as an array (auto-computed if not given); ignored if the
| system is discrete time.
| params : dict, optional
| If system is a nonlinear I/O system, set parameter values.
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`). Default
| value is False.
| return_states (or return_x) : bool, optional
| If True, return the state vector when assigning to a tuple
| (default = False). See `forced_response` for more details.
| squeeze : bool, optional
| By default, if a system is single-input, single-output (SISO) then
| the output response is returned as a 1D array (indexed by time).
| If `squeeze` = True, remove single-dimensional entries from the
| shape of the output even if the system is not SISO. If
| `squeeze` = False, keep the output as a 2D array (indexed by the
| output number and time) even if the system is SISO. The default
| value can be set using
| `config.defaults['control.squeeze_time_response']`.
|
| Returns
| -------
| results : `TimeResponseData` or `TimeResponseList`
| Time response represented as a `TimeResponseData` object or
| list of `TimeResponseData` objects. See
| `forced_response` for additional information.
|
| See Also
| --------
| forced_response, impulse_response, step_response
|
| Notes
| -----
| This function uses the `forced_response` function with the input set to
| zero.
|
| Examples
| --------
| >>> G = ct.rss(4)
| >>> T, yout = ct.initial_response(G)
|
| lft(self, other, nu=-1, ny=-1)
| Return the linear fractional transformation.
|
| A definition of the LFT operator can be found in Appendix A.7,
| page 512 in [1]_. An alternative definition can be found here:
| https://www.mathworks.com/help/control/ref/lft.html
|
| Parameters
| ----------
| other : `StateSpace`
| The lower LTI system.
| ny : int, optional
| Dimension of (plant) measurement output.
| nu : int, optional
| Dimension of (plant) control input.
|
| Returns
| -------
| `StateSpace`
|
| References
| ----------
| .. [1] S. Skogestad, Multivariable Feedback Control. Second
| edition, 2005.
|
| minreal(self, tol=0.0)
| Remove unobservable and uncontrollable states.
|
| Calculate a minimal realization for a state space system,
| removing all unobservable and/or uncontrollable states.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether states are unobservable
| or uncontrollable.
|
| output(self, t, x, u=None, params=None)
| Compute the output of the system.
|
| Given input `u` and state `x`, returns the output `y` of the
| state-space system:
|
| y = C x + D u
|
| where A and B are the state-space matrices of the system.
|
| The first argument `t` is ignored because `StateSpace` systems
| are time-invariant. It is included so that the dynamics can be passed
| to most numerical integrators, such as SciPy's `integrate.solve_ivp`
| and for consistency with `InputOutputSystem` models.
|
| The inputs `x` and `u` must be of the correct length for the system.
|
| Parameters
| ----------
| t : float (ignored)
| Time.
| x : array_like
| Current state.
| u : array_like (optional)
| Input (zero if omitted).
|
| Returns
| -------
| y : ndarray
|
| poles(self)
| Compute the poles of a state space system.
|
| returnScipySignalLTI(self, strict=True)
| Return a list of a list of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = ssobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3][5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the transfer
| function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `ssobject.dt` cannot be None; it must
| be continuous (0) or discrete (True or > 0).
| False:
| If `ssobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned.
|
| Returns
| -------
| out : list of list of `scipy.signal.StateSpace`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with method='gbt', and is
| ignored otherwise.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous-time system's magnitude and phase (the gain = 1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is
| generated with a unique integer id. If `copy_names` is
| True, the new system name is determined by adding the
| prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with
| the default being to add the suffix '$sampled'.
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `StateSpace`
| Discrete-time system, with sampling rate `Ts`.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
| states : int, list of str, or None, optional
| Description of the system states. Same format as `inputs`.
|
| Notes
| -----
| Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> G = ct.ss(0, 1, 1, 0)
| >>> sysd = G.sample(0.5, method='bilinear')
|
| slycot_laub(self, x)
| Laub's method to evaluate response at complex frequency.
|
| Evaluate transfer function at complex frequency using Laub's
| method from Slycot. Expects inputs and outputs to be
| formatted correctly. Use ``sys(x)`` for a more user-friendly
| interface.
|
| Parameters
| ----------
| x : complex array_like or complex
| Complex frequency.
|
| Returns
| -------
| output : (number_outputs, number_inputs, len(x)) complex ndarray
| Frequency response.
|
| zeros(self)
| Compute the zeros of a state space system.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| states
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| A = []
|
| B = []
|
| C = []
|
| D = []
|
| ninputs = 0
|
| noutputs = 0
|
| nstates = 0
|
| ----------------------------------------------------------------------
| Methods inherited from control.nlsys.NonlinearIOSystem:
|
| linearize(self, x0, u0=None, t=0, params=None, eps=1e-06, copy_names=False, **kwargs)
| Linearize an input/output system at a given state and input.
|
| Return the linearization of an input/output system at a given
| operating point (or state and input value) as a `StateSpace` system.
| See `linearize` for complete documentation.
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
FUNCTIONS
drss(*args, **kwargs)
drss([states, outputs, inputs, strictly_proper])
Create a stable, discrete-time, random state space system.
Create a stable *discrete-time* random state space object. This
function calls `rss` using either the `dt` keyword provided by
the user or `dt` = True if not specified.
Examples
--------
>>> G = ct.drss(states=4, outputs=2, inputs=1)
>>> G.ninputs, G.noutputs, G.nstates
(1, 2, 4)
>>> G.isdtime()
True
linfnorm(sys, tol=1e-10)
L-infinity norm of a linear system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
System to evaluate L-infinity norm of.
tol : real scalar
Tolerance on norm estimate.
Returns
-------
gpeak : non-negative scalar
L-infinity norm.
fpeak : non-negative scalar
Frequency, in rad/s, at which gpeak occurs.
See Also
--------
slycot.ab13dd
Notes
-----
For stable systems, the L-infinity and H-infinity norms are equal;
for unstable systems, the H-infinity norm is infinite, while the
L-infinity norm is finite if the system has no poles on the
imaginary axis.
rss(states=1, outputs=1, inputs=1, strictly_proper=False, **kwargs)
Create a stable random state space object.
Parameters
----------
states, outputs, inputs : int, list of str, or None
Description of the system states, outputs, and inputs. This can be
given as an integer count or as a list of strings that name the
individual signals. If an integer count is specified, the names of
the signal will be of the form 's[i]' (where 's' is one of 'x',
'y', or 'u').
strictly_proper : bool, optional
If set to True, returns a proper system (no direct term).
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Returns
-------
sys : `StateSpace`
The randomly created linear system.
Raises
------
ValueError
If any input is not a positive integer.
Notes
-----
If the number of states, inputs, or outputs is not specified, then the
missing numbers are assumed to be 1. If `dt` is not specified or is
given as 0 or None, the poles of the returned system will always have a
negative real part. If `dt` is True or a positive float, the poles of
the returned system will have magnitude less than 1.
ss(*args, **kwargs)
ss(A, B, C, D[, dt])
Create a state space system.
The function accepts either 1, 4 or 5 positional parameters:
``ss(sys)``
Convert a linear system into space system form. Always creates a
new system, even if `sys` is already a state space system.
``ss(A, B, C, D)``
Create a state space system from the matrices of its state and
output equations:
.. math::
dx/dt &= A x + B u \\
y &= C x + D u
``ss(A, B, C, D, dt)``
Create a discrete-time state space system from the matrices of
its state and output equations:
.. math::
x[k+1] &= A x[k] + B u[k] \\
y[k] &= C x[k] + D u[k]
The matrices can be given as 2D array_like data types. For SISO
systems, `B` and `C` can be given as 1D arrays and D can be given
as a scalar.
``ss(*args, inputs=['u1', ..., 'up'], outputs=['y1', ..., 'yq'], states=['x1', ..., 'xn'])``
Create a system with named input, output, and state signals.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
A, B, C, D : array_like or string
System, control, output, and feed forward matrices.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
remove_useless_states : bool, optional
If True, remove states that have no effect on the input/output
dynamics. If not specified, the value is read from
`config.defaults['statesp.remove_useless_states']` (default = False).
method : str, optional
Set the method used for converting a transfer function to a state
space system. Current methods are 'slycot' and 'scipy'. If set to
None (default), try 'slycot' first and then 'scipy' (SISO only).
Returns
-------
out : `StateSpace`
Linear input/output system.
Other Parameters
----------------
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals. If this parameter
is not given or given as None, the signal names will be of the
form 's[i]' (where 's' is one of 'u', 'y', or 'x'). See
`InputOutputSystem` for more information.
input_prefix, output_prefix, state_prefix : string, optional
Set the prefix for input, output, and state signals. Defaults =
'u', 'y', 'x'.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Raises
------
ValueError
If matrix sizes are not self-consistent.
See Also
--------
StateSpace, nlsys, tf, ss2tf, tf2ss, zpk
Notes
-----
If a transfer function is passed as the sole positional argument, the
system will be converted to state space form in the same way as calling
`tf2ss`. The `method` keyword can be used to select the
method for conversion.
Examples
--------
Create a linear I/O system object from matrices:
>>> G = ct.ss([[-1, -2], [3, -4]], [[5], [7]], [[6, 8]], [[9]])
Convert a transfer function to a state space system:
>>> sys_tf = ct.tf([2.], [1., 3])
>>> sys2 = ct.ss(sys_tf)
ss2io(*args, **kwargs)
ss2io(sys[, ...])
Create an I/O system from a state space linear system.
.. deprecated:: 0.10.0
This function will be removed in a future version of python-control.
The `ss` function can be used directly to produce an I/O system.
Create an `StateSpace` system with the given signal
and system names. See `ss` for more details.
ssdata(sys)
Return state space data objects for a system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
LTI system whose data will be returned.
Returns
-------
A, B, C, D : ndarray
State space data for the system.
summing_junction(inputs=None, output=None, dimension=None, prefix='u', **kwargs)
Create a summing junction as an input/output system.
This function creates a static input/output system that outputs the sum
of the inputs, potentially with a change in sign for each individual
input. The input/output system that is created by this function can be
used as a component in the `interconnect` function.
Parameters
----------
inputs : int, string or list of strings
Description of the inputs to the summing junction. This can be
given as an integer count, a string, or a list of strings. If an
integer count is specified, the names of the input signals will be
of the form 'u[i]'.
output : string, optional
Name of the system output. If not specified, the output will be 'y'.
dimension : int, optional
The dimension of the summing junction. If the dimension is set to a
positive integer, a multi-input, multi-output summing junction will be
created. The input and output signal names will be of the form
'<signal>[i]' where 'signal' is the input/output signal name specified
by the `inputs` and `output` keywords. Default value is None.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
prefix : string, optional
If `inputs` is an integer, create the names of the states using the
given prefix (default = 'u'). The names of the input will be of the
form 'prefix[i]'.
Returns
-------
sys : `StateSpace`
Linear input/output system object with no states and only a direct
term that implements the summing junction.
Examples
--------
>>> P = ct.tf(1, [1, 0], inputs='u', outputs='y')
>>> C = ct.tf(10, [1, 1], inputs='e', outputs='u')
>>> sumblk = ct.summing_junction(inputs=['r', '-y'], output='e')
>>> T = ct.interconnect([P, C, sumblk], inputs='r', outputs='y')
>>> T.ninputs, T.noutputs, T.nstates
(1, 1, 2)
tf2io(*args, **kwargs)
tf2io(sys[, ...])
Convert a transfer function into an I/O system.
.. deprecated:: 0.10.0
This function will be removed in a future version of python-control.
The `tf2ss` function can be used to produce a state space I/O system.
The function accepts either 1 or 2 parameters:
``tf2io(sys)``
Convert a linear system into space space form. Always creates
a new system, even if `sys` is already a `StateSpace` object.
``tf2io(num, den)``
Create a linear I/O system from its numerator and denominator
polynomial coefficients.
For details see: `tf`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
Returns
-------
out : `StateSpace`
New I/O system (in state space form).
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions, or if an
invalid number of arguments is passed in.
TypeError
If `num` or `den` are of incorrect type, or if `sys` is not a
`TransferFunction` object.
See Also
--------
ss2io, tf2ss
Examples
--------
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf2ss(num, den)
>>> sys_tf = ct.tf(num, den)
>>> G = ct.tf2ss(sys_tf)
>>> G.ninputs, G.noutputs, G.nstates
(2, 2, 8)
tf2ss(*args, **kwargs)
tf2ss(sys)
Transform a transfer function to a state space system.
The function accepts either 1 or 2 parameters:
``tf2ss(sys)``
Convert a transfer function into space space form. Equivalent to
`ss(sys)`.
``tf2ss(num, den)``
Create a state space system from its numerator and denominator
polynomial coefficients.
For details see: `tf`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
Returns
-------
out : `StateSpace`
New linear system in state space form.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy' (SISO only).
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions, or if an
invalid number of arguments is passed in.
TypeError
If `num` or `den` are of incorrect type, or if `sys` is not a
`TransferFunction` object.
See Also
--------
ss, tf, ss2tf
Notes
-----
The `slycot` routine used to convert a transfer function into state space
form appears to have a bug and in some (rare) instances may not return
a system with the same poles as the input transfer function. For SISO
systems, setting `method` = 'scipy' can be used as an alternative.
Examples
--------
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf2ss(num, den)
>>> sys_tf = ct.tf(num, den)
>>> sys2 = ct.tf2ss(sys_tf)
DATA
__all__ = ['StateSpace', 'LinearICSystem', 'ss2io', 'tf2io', 'tf2ss', ...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\statesp.py
control.step_info
Python Library Documentation: function step_info in module control.timeresp
step_info(sysdata, timepts=None, timepts_num=None, final_output=None, params=None, SettlingTimeThreshold=0.02, RiseTimeLimits=(0.1, 0.9), **kwargs)
Step response characteristics (rise time, settling time, etc).
Parameters
----------
sysdata : `StateSpace` or `TransferFunction` or array_like
The system data. Either LTI system to simulate (`StateSpace`,
`TransferFunction`), or a time series of step response data.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number (time vector is
auto-computed if not given, see `step_response` for more detail).
Required, if sysdata is a time series of response data.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array; auto-computed if not given; ignored if sysdata is a
discrete-time system or a time series or response data.
final_output (or yfinal) : scalar or array_like, optional
Steady-state response. If not given, sysdata.dcgain() is used for
systems to simulate and the last value of the the response data is
used for a given time series of response data. Scalar for SISO,
(noutputs, ninputs) array_like for MIMO systems.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
SettlingTimeThreshold : float, optional
Defines the error to compute settling time (default = 0.02).
RiseTimeLimits : tuple (lower_threshold, upper_threshold)
Defines the lower and upper threshold for RiseTime computation.
Returns
-------
S : dict or list of list of dict
If `sysdata` corresponds to a SISO system, `S` is a dictionary
containing:
- 'RiseTime': Time from 10% to 90% of the steady-state value.
- 'SettlingTime': Time to enter inside a default error of 2%.
- 'SettlingMin': Minimum value after `RiseTime`.
- 'SettlingMax': Maximum value after `RiseTime`.
- 'Overshoot': Percentage of the peak relative to steady value.
- 'Undershoot': Percentage of undershoot.
- 'Peak': Absolute peak value.
- 'PeakTime': Time that the first peak value is obtained.
- 'SteadyStateValue': Steady-state value.
If `sysdata` corresponds to a MIMO system, `S` is a 2D list of dicts.
To get the step response characteristics from the jth input to the
ith output, access ``S[i][j]``.
See Also
--------
step_response, forced_response, initial_response, impulse_response
Examples
--------
>>> sys = ct.TransferFunction([-1, 1], [1, 1, 1])
>>> S = ct.step_info(sys)
>>> for k in S:
... print(f"{k}: {S[k]:3.4}")
...
RiseTime: 1.256
SettlingTime: 9.071
SettlingMin: 0.9011
SettlingMax: 1.208
Overshoot: 20.85
Undershoot: 27.88
Peak: 1.208
PeakTime: 4.187
SteadyStateValue: 1.0
MIMO System: Simulate until a final time of 10. Get the step response
characteristics for the second input and specify a 5% error until the
signal is considered settled.
>>> from math import sqrt
>>> sys = ct.StateSpace([[-1., -1.],
... [1., 0.]],
... [[-1./sqrt(2.), 1./sqrt(2.)],
... [0, 0]],
... [[sqrt(2.), -sqrt(2.)]],
... [[0, 0]])
>>> S = ct.step_info(sys, T=10., SettlingTimeThreshold=0.05)
>>> for k, v in S[0][1].items():
... print(f"{k}: {float(v):3.4}")
RiseTime: 1.212
SettlingTime: 6.061
SettlingMin: -1.209
SettlingMax: -0.9184
Overshoot: 20.87
Undershoot: 28.02
Peak: 1.209
PeakTime: 4.242
SteadyStateValue: -1.0
control.step_response
Python Library Documentation: function step_response in module control.timeresp
step_response(sysdata, timepts=None, initial_state=0.0, input_indices=None, output_indices=None, timepts_num=None, transpose=False, return_states=False, squeeze=None, params=None, **kwargs)
Compute the step response for a linear system.
If the system has multiple inputs and/or multiple outputs, the step
response is computed for each input/output pair, with all other inputs
set to zero. Optionally, a single input and/or single output can be
selected, in which case all other inputs are set to 0 and all other
outputs are ignored.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which step response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number. If `T` is not
provided, an attempt is made to create it automatically from the
dynamics of the system. If the system continuous time, the time
increment dt is chosen small enough to show the fastest mode, and
the simulation time period tfinal long enough to show the slowest
mode, excluding poles at the origin and pole-zero cancellations. If
this results in too many time steps (>5000), dt is reduced. If the
system is discrete time, only tfinal is computed, and final is
reduced if it requires too many simulation steps.
initial_state (or X0) : array_like or float, optional
Initial condition (default = 0). This can be used for a nonlinear
system where the origin is not an equilibrium point.
input_indices (or input) : int or list of int, optional
Only compute the step response for the listed input. If not
specified, the step responses for each independent input are
computed (as separate traces).
output_indices (or output) : int, optional
Only report the step response for the listed output. If not
specified, all outputs are reported.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array (auto-computed if not given); ignored if the system is
discrete time.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 3D array (indexed by the
output, input, and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, initial_response, impulse_response
Notes
-----
This function uses the `forced_response` function with the input set to a
unit step.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.step_response(G)
control.stochsys
Python Library Documentation: module control.stochsys in control
NAME
control.stochsys - Stochastic systems module.
DESCRIPTION
This module contains functions for analyzing and designing stochastic
(control) systems, including white noise processes and Kalman
filtering.
FUNCTIONS
correlation(T, X, Y=None, squeeze=True)
Compute the correlation of time signals.
For a time series X(t) (and optionally Y(t)), the correlation()
function computes the correlation matrix E(X'(t+tau) X(t)) or the
cross-correlation matrix E(X'(t+tau) Y(t)]:
tau, Rtau = correlation(T, X[, Y])
The signal X (and Y, if present) represent a continuous or
discrete-time signal sampled at times T. The return value provides the
correlation Rtau between X(t+tau) and X(t) at a set of time offsets
tau.
Parameters
----------
T : 1D array_like
Sample times for the signal(s).
X : 1D or 2D array_like
Values of the signal at each time in T. The signal can either be
scalar or vector values.
Y : 1D or 2D array_like, optional
If present, the signal with which to compute the correlation.
Defaults to X.
squeeze : bool, optional
If True, squeeze Rtau to remove extra dimensions (useful if the
signals are scalars).
Returns
-------
tau : array
Array of time offsets.
Rtau : array
Correlation for each offset tau.
create_estimator_iosystem(sys, QN, RN, P0=None, G=None, C=None, control_indices=None, disturbance_indices=None, estimate_labels='xhat[{i}]', covariance_labels='P[{i},{j}]', measurement_labels=None, control_labels=None, inputs=None, outputs=None, states=None, **kwargs)
Create an I/O system implementing a linear quadratic estimator.
This function creates an input/output system that implements a
continuous-time state estimator of the form
.. math::
d \hat{x}/dt &= A \hat{x} + B u - L (C \hat{x} - y) \\
dP/dt &= A P + P A^T + G Q_N G^T - P C^T R_N^{-1} C P \\
L &= P C^T R_N^{-1}
or a discrete-time state estimator of the form
.. math::
\hat{x}[k+1] &= A \hat{x}[k] + B u[k] - L (C \hat{x}[k] - y[k]) \\
P[k+1] &= A P A^T + G Q_N G^T - A P C^T R_e^{-1} C P A \\
L &= A P C^T R_e^{-1}
where :math:`R_e = R_N + C P C^T`. It can be called in the form::
estim = ct.create_estimator_iosystem(sys, QN, RN)
where `sys` is the process dynamics and `QN` and `RN` are the covariance
of the disturbance noise and measurement noise. The function returns
the estimator `estim` as I/O system with a parameter `correct` that can
be used to turn off the correction term in the estimation (for forward
predictions).
Parameters
----------
sys : `StateSpace`
The linear I/O system that represents the process dynamics.
QN, RN : ndarray
Disturbance and measurement noise covariance matrices.
P0 : ndarray, optional
Initial covariance matrix. If not specified, defaults to the steady
state covariance.
G : ndarray, optional
Disturbance matrix describing how the disturbances enters the
dynamics. Defaults to `sys.B`.
C : ndarray, optional
If the system has full state output, define the measured values to
be used by the estimator. Otherwise, use the system output as the
measured values.
Returns
-------
estim : `InputOutputSystem`
Input/output system representing the estimator. This system takes
the system output y and input u and generates the estimated state
xhat.
Other Parameters
----------------
control_indices : int, slice, or list of int or string, optional
Specify the indices in the system input vector that correspond to
the control inputs. These inputs will be used as known control
inputs for the estimator. If value is an integer `m`, the first `m`
system inputs are used. Otherwise, the value should be a slice or
a list of indices. The list of indices can be specified as either
integer offsets or as system input signal names. If not specified,
defaults to the system inputs.
disturbance_indices : int, list of int, or slice, optional
Specify the indices in the system input vector that correspond to
the unknown disturbances. These inputs are assumed to be white
noise with noise intensity QN. If value is an integer `m`, the
last `m` system inputs are used. Otherwise, the value should be a
slice or a list of indices. The list of indices can be specified
as either integer offsets or as system input signal names. If not
specified, the disturbances are assumed to be added to the system
inputs.
estimate_labels : str or list of str, optional
Set the names of the state estimate variables (estimator outputs).
If a single string is specified, it should be a format string using
the variable `i` as an index. Otherwise, a list of strings matching
the number of system states should be used. Default is "xhat[{i}]".
covariance_labels : str or list of str, optional
Set the name of the the covariance state variables. If a single
string is specified, it should be a format string using the
variables `i` and `j` as indices. Otherwise, a list of strings
matching the size of the covariance matrix should be used. Default
is "P[{i},{j}]".
measurement_labels, control_labels : str or list of str, optional
Set the name of the measurement and control signal names (estimator
inputs). If a single string is specified, it should be a format
string using the variable `i` as an index. Otherwise, a list of
strings matching the size of the system inputs and outputs should be
used. Default is the signal names for the system measurements and
known control inputs. These settings can also be overridden using the
`inputs` keyword.
inputs, outputs, states : int or list of str, optional
Set the names of the inputs, outputs, and states, as described in
`InputOutputSystem`. Overrides signal labels.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
Notes
-----
This function can be used with the `create_statefbk_iosystem` function
to create a closed loop, output-feedback, state space controller::
K, _, _ = ct.lqr(sys, Q, R)
est = ct.create_estimator_iosystem(sys, QN, RN, P0)
ctrl, clsys = ct.create_statefbk_iosystem(sys, K, estimator=est)
The estimator can also be run on its own to process a noisy signal::
resp = ct.input_output_response(est, T, [Y, U], [X0, P0])
If desired, the `correct` parameter can be set to False to allow
prediction with no additional measurement information::
resp = ct.input_output_response(
est, T, 0, [X0, P0], params={'correct': False)
References
----------
.. [1] R. M. Murray, `Optimization-Based Control
<https://fbswiki.org/OBC>`_, 2023.
dlqe(*args, **kwargs)
dlqe(A, G, C, QN, RN, [, N])
Discrete-time linear quadratic estimator (Kalman filter).
Given the system
.. math::
x[n+1] &= Ax[n] + Bu[n] + Gw[n] \\
y[n] &= Cx[n] + Du[n] + v[n]
with unbiased process noise w and measurement noise v with covariances
.. math:: E\{w w^T\} = QN, E\{v v^T\} = RN, E\{w v^T\} = NN
The dlqe() function computes the observer gain matrix L such that the
stationary (non-time-varying) Kalman filter
.. math:: x_e[n+1] = A x_e[n] + B u[n] + L(y[n] - C x_e[n] - D u[n])
produces a state estimate x_e[n] that minimizes the expected squared
error using the sensor measurements y. The noise cross-correlation `NN`
is set to zero when omitted.
Parameters
----------
A, G, C : 2D array_like
Dynamics, process noise (disturbance), and output matrices.
QN, RN : 2D array_like
Process and sensor noise covariance matrices.
NN : 2D array, optional
Cross covariance matrix (not yet supported).
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy'.
Returns
-------
L : 2D array
Kalman estimator gain.
P : 2D array
Solution to Riccati equation.
.. math::
A P + P A^T - (P C^T + G N) R^{-1} (C P + N^T G^T) + G Q G^T = 0
E : 1D array
Eigenvalues of estimator poles eig(A - L C).
Examples
--------
>>> L, P, E = dlqe(A, G, C, QN, RN) # doctest: +SKIP
>>> L, P, E = dlqe(A, G, C, QN, RN, NN) # doctest: +SKIP
See Also
--------
dlqr, lqe, lqr
lqe(*args, **kwargs)
lqe(A, G, C, QN, RN, [, NN])
Continuous-time linear quadratic estimator (Kalman filter).
Given the continuous-time system
.. math::
dx/dt &= Ax + Bu + Gw \\
y &= Cx + Du + v
with unbiased process noise w and measurement noise v with covariances
.. math:: E\{w w^T\} = QN, E\{v v^T\} = RN, E\{w v^T\} = NN
The lqe() function computes the observer gain matrix L such that the
stationary (non-time-varying) Kalman filter
.. math:: dx_e/dt = A x_e + B u + L(y - C x_e - D u)
produces a state estimate x_e that minimizes the expected squared error
using the sensor measurements y. The noise cross-correlation `NN` is
set to zero when omitted.
The function can be called with either 3, 4, 5, or 6 arguments:
* ``L, P, E = lqe(sys, QN, RN)``
* ``L, P, E = lqe(sys, QN, RN, NN)``
* ``L, P, E = lqe(A, G, C, QN, RN)``
* ``L, P, E = lqe(A, G, C, QN, RN, NN)``
where `sys` is an `LTI` object, and `A`, `G`, `C`, `QN`, `RN`, and `NN`
are 2D arrays or matrices of appropriate dimension.
Parameters
----------
A, G, C : 2D array_like
Dynamics, process noise (disturbance), and output matrices.
sys : `StateSpace` or `TransferFunction`
Linear I/O system, with the process noise input taken as the system
input.
QN, RN : 2D array_like
Process and sensor noise covariance matrices.
NN : 2D array, optional
Cross covariance matrix. Not currently implemented.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
L : 2D array
Kalman estimator gain.
P : 2D array
Solution to Riccati equation:
.. math::
A P + P A^T - (P C^T + G N) R^{-1} (C P + N^T G^T) + G Q G^T = 0
E : 1D array
Eigenvalues of estimator poles eig(A - L C).
Notes
-----
If the first argument is an LTI object, then this object will be used
to define the dynamics, noise and output matrices. Furthermore, if the
LTI object corresponds to a discrete-time system, the `dlqe`
function will be called.
Examples
--------
>>> L, P, E = lqe(A, G, C, QN, RN) # doctest: +SKIP
>>> L, P, E = lqe(A, G, C, Q, RN, NN) # doctest: +SKIP
See Also
--------
lqr, dlqe, dlqr
white_noise(T, Q, dt=0)
Generate a white noise signal with specified intensity.
This function generates a (multi-variable) white noise signal of
specified intensity as either a sampled continuous time signal or a
discrete-time signal. A white noise signal along a 1D array
of linearly spaced set of times T can be computing using
V = ct.white_noise(T, Q, dt)
where Q is a positive definite matrix providing the noise intensity.
In continuous time, the white noise signal is scaled such that the
integral of the covariance over a sample period is Q, thus approximating
a white noise signal. In discrete time, the white noise signal has
covariance Q at each point in time (without any scaling based on the
sample time).
Parameters
----------
T : 1D array_like
Array of linearly spaced times.
Q : 2D array_like
Noise intensity matrix of dimension nxn.
dt : float, optional
If 0, generate continuous-time noise signal, otherwise discrete time.
Returns
-------
V : array
Noise signal indexed as ``V[i, j]`` where `i` is the signal index and
`j` is the time index.
DATA
__all__ = ['lqe', 'dlqe', 'create_estimator_iosystem', 'white_noise', ...
__email__ = 'murray@cds.caltech.edu'
__license__ = 'BSD'
__maintainer__ = 'Richard Murray'
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\stochsys.py
control.summing_junction
Python Library Documentation: function summing_junction in module control.statesp
summing_junction(inputs=None, output=None, dimension=None, prefix='u', **kwargs)
Create a summing junction as an input/output system.
This function creates a static input/output system that outputs the sum
of the inputs, potentially with a change in sign for each individual
input. The input/output system that is created by this function can be
used as a component in the `interconnect` function.
Parameters
----------
inputs : int, string or list of strings
Description of the inputs to the summing junction. This can be
given as an integer count, a string, or a list of strings. If an
integer count is specified, the names of the input signals will be
of the form 'u[i]'.
output : string, optional
Name of the system output. If not specified, the output will be 'y'.
dimension : int, optional
The dimension of the summing junction. If the dimension is set to a
positive integer, a multi-input, multi-output summing junction will be
created. The input and output signal names will be of the form
'<signal>[i]' where 'signal' is the input/output signal name specified
by the `inputs` and `output` keywords. Default value is None.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
prefix : string, optional
If `inputs` is an integer, create the names of the states using the
given prefix (default = 'u'). The names of the input will be of the
form 'prefix[i]'.
Returns
-------
sys : `StateSpace`
Linear input/output system object with no states and only a direct
term that implements the summing junction.
Examples
--------
>>> P = ct.tf(1, [1, 0], inputs='u', outputs='y')
>>> C = ct.tf(10, [1, 1], inputs='e', outputs='u')
>>> sumblk = ct.summing_junction(inputs=['r', '-y'], output='e')
>>> T = ct.interconnect([P, C, sumblk], inputs='r', outputs='y')
>>> T.ninputs, T.noutputs, T.nstates
(1, 1, 2)
control.suptitle
Python Library Documentation: function suptitle in module control.ctrlplot
suptitle(title, fig=None, frame='axes', **kwargs)
Add a centered title to a figure.
.. deprecated:: 0.10.1
Use `ControlPlot.set_plot_title`.
control.sysnorm
Python Library Documentation: module control.sysnorm in control
NAME
control.sysnorm - Functions for computing system norms.
FUNCTIONS
norm = system_norm(system, p=2, tol=1e-06, print_warning=True, method=None)
Computes the input/output norm of system.
Parameters
----------
system : LTI (`StateSpace` or `TransferFunction`)
System in continuous or discrete time for which the norm should
be computed.
p : int or str
Type of norm to be computed. `p` = 2 gives the H2 norm, and
`p` = 'inf' gives the L-infinity norm.
tol : float
Relative tolerance for accuracy of L-infinity norm
computation. Ignored unless `p` = 'inf'.
print_warning : bool
Print warning message in case norm value may be uncertain.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
norm_value : float
Norm value of system.
Notes
-----
Does not yet compute the L-infinity norm for discrete-time systems
with pole(s) at the origin unless Slycot is used.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> round(ct.norm(Gc, 2), 3)
0.5
>>> round(ct.norm(Gc, 'inf', tol=1e-5, method='scipy'), 3)
np.float64(1.0)
system_norm(system, p=2, tol=1e-06, print_warning=True, method=None)
Computes the input/output norm of system.
Parameters
----------
system : LTI (`StateSpace` or `TransferFunction`)
System in continuous or discrete time for which the norm should
be computed.
p : int or str
Type of norm to be computed. `p` = 2 gives the H2 norm, and
`p` = 'inf' gives the L-infinity norm.
tol : float
Relative tolerance for accuracy of L-infinity norm
computation. Ignored unless `p` = 'inf'.
print_warning : bool
Print warning message in case norm value may be uncertain.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
norm_value : float
Norm value of system.
Notes
-----
Does not yet compute the L-infinity norm for discrete-time systems
with pole(s) at the origin unless Slycot is used.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> round(ct.norm(Gc, 2), 3)
0.5
>>> round(ct.norm(Gc, 'inf', tol=1e-5, method='scipy'), 3)
np.float64(1.0)
DATA
__all__ = ['system_norm', 'norm']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\sysnorm.py
control.system_norm
Python Library Documentation: function system_norm in module control.sysnorm
system_norm(system, p=2, tol=1e-06, print_warning=True, method=None)
Computes the input/output norm of system.
Parameters
----------
system : LTI (`StateSpace` or `TransferFunction`)
System in continuous or discrete time for which the norm should
be computed.
p : int or str
Type of norm to be computed. `p` = 2 gives the H2 norm, and
`p` = 'inf' gives the L-infinity norm.
tol : float
Relative tolerance for accuracy of L-infinity norm
computation. Ignored unless `p` = 'inf'.
print_warning : bool
Print warning message in case norm value may be uncertain.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot' first
and then 'scipy'.
Returns
-------
norm_value : float
Norm value of system.
Notes
-----
Does not yet compute the L-infinity norm for discrete-time systems
with pole(s) at the origin unless Slycot is used.
Examples
--------
>>> Gc = ct.tf([1], [1, 2, 1])
>>> round(ct.norm(Gc, 2), 3)
0.5
>>> round(ct.norm(Gc, 'inf', tol=1e-5, method='scipy'), 3)
np.float64(1.0)
control.tf
Python Library Documentation: function tf in module control.xferfcn
tf(*args, **kwargs)
tf(num, den[, dt])
Create a transfer function system. Can create MIMO systems.
The function accepts either 1, 2, or 3 parameters:
``tf(sys)``
Convert a linear system into transfer function form. Always creates
a new system, even if `sys` is already a `TransferFunction` object.
``tf(num, den)``
Create a transfer function system from its numerator and denominator
polynomial coefficients.
If `num` and `den` are 1D array_like objects, the function creates a
SISO system.
To create a MIMO system, `num` and `den` need to be 2D arrays of
of array_like objects (a 3 dimensional data structure in total;
for details see note below). If the denominator for all transfer
function is the same, `den` can be specified as a 1D array.
``tf(num, den, dt)``
Create a discrete-time transfer function system; dt can either be a
positive number indicating the sampling time or True if no
specific timebase is given.
``tf([[G11, ..., G1m], ..., [Gp1, ..., Gpm]][, dt])``
Create a p x m MIMO system from SISO transfer functions Gij. See
`combine_tf` for more details.
``tf('s')`` or ``tf('z')``
Create a transfer function representing the differential operator
('s') or delay operator ('z').
Parameters
----------
sys : `LTI` (`StateSpace` or `TransferFunction`)
A linear system that will be converted to a transfer function.
arr : 2D list of `TransferFunction`
2D list of SISO transfer functions to create MIMO transfer function.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None indicates
unspecified timebase (either continuous or discrete time).
display_format : None, 'poly' or 'zpk'
Set the display format used in printing the `TransferFunction` object.
Default behavior is polynomial display and can be changed by
changing `config.defaults['xferfcn.display_format']`.
Returns
-------
sys : `TransferFunction`
The new linear system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
input_prefix, output_prefix : string, optional
Set the prefix for input and output signals. Defaults = 'u', 'y'.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions.
TypeError
If `num` or `den` are of incorrect type.
See Also
--------
TransferFunction, ss, ss2tf, tf2ss
Notes
-----
MIMO transfer functions are created by passing a 2D array of coefficients:
``num[i][j]`` contains the polynomial coefficients of the numerator
for the transfer function from the (j+1)st input to the (i+1)st output,
and ``den[i][j]`` works the same way.
The list ``[2, 3, 4]`` denotes the polynomial :math:`2 s^2 + 3 s + 4`.
The special forms ``tf('s')`` and ``tf('z')`` can be used to create
transfer functions for differentiation and unit delays.
Examples
--------
>>> # Create a MIMO transfer function object
>>> # The transfer function from the 2nd input to the 1st output is
>>> # (3s + 4) / (6s^2 + 5s + 4).
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf(num, den)
>>> # Create a variable 's' to allow algebra operations for SISO systems
>>> s = ct.tf('s')
>>> G = (s + 1)/(s**2 + 2*s + 1)
>>> # Convert a state space system to a transfer function:
>>> sys_ss = ct.ss([[1, -2], [3, -4]], [[5], [7]], [[6, 8]], 9)
>>> sys_tf = ct.tf(sys_ss)
control.tf2io
Python Library Documentation: function tf2io in module control.statesp
tf2io(*args, **kwargs)
tf2io(sys[, ...])
Convert a transfer function into an I/O system.
.. deprecated:: 0.10.0
This function will be removed in a future version of python-control.
The `tf2ss` function can be used to produce a state space I/O system.
The function accepts either 1 or 2 parameters:
``tf2io(sys)``
Convert a linear system into space space form. Always creates
a new system, even if `sys` is already a `StateSpace` object.
``tf2io(num, den)``
Create a linear I/O system from its numerator and denominator
polynomial coefficients.
For details see: `tf`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
Returns
-------
out : `StateSpace`
New I/O system (in state space form).
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions, or if an
invalid number of arguments is passed in.
TypeError
If `num` or `den` are of incorrect type, or if `sys` is not a
`TransferFunction` object.
See Also
--------
ss2io, tf2ss
Examples
--------
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf2ss(num, den)
>>> sys_tf = ct.tf(num, den)
>>> G = ct.tf2ss(sys_tf)
>>> G.ninputs, G.noutputs, G.nstates
(2, 2, 8)
control.tf2ss
Python Library Documentation: function tf2ss in module control.statesp
tf2ss(*args, **kwargs)
tf2ss(sys)
Transform a transfer function to a state space system.
The function accepts either 1 or 2 parameters:
``tf2ss(sys)``
Convert a transfer function into space space form. Equivalent to
`ss(sys)`.
``tf2ss(num, den)``
Create a state space system from its numerator and denominator
polynomial coefficients.
For details see: `tf`.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
A linear system.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
Returns
-------
out : `StateSpace`
New linear system in state space form.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
method : str, optional
Set the method used for computing the result. Current methods are
'slycot' and 'scipy'. If set to None (default), try 'slycot'
first and then 'scipy' (SISO only).
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions, or if an
invalid number of arguments is passed in.
TypeError
If `num` or `den` are of incorrect type, or if `sys` is not a
`TransferFunction` object.
See Also
--------
ss, tf, ss2tf
Notes
-----
The `slycot` routine used to convert a transfer function into state space
form appears to have a bug and in some (rare) instances may not return
a system with the same poles as the input transfer function. For SISO
systems, setting `method` = 'scipy' can be used as an alternative.
Examples
--------
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf2ss(num, den)
>>> sys_tf = ct.tf(num, den)
>>> sys2 = ct.tf2ss(sys_tf)
control.tfdata
Python Library Documentation: function tfdata in module control.xferfcn
tfdata(sys)
Return transfer function data objects for a system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
LTI system whose data will be returned.
Returns
-------
num, den : numerator and denominator arrays
Transfer function coefficients (SISO only).
control.time_response_plot
Python Library Documentation: function time_response_plot in module control.timeplot
time_response_plot(data, *fmt, ax=None, plot_inputs=None, plot_outputs=True, transpose=False, overlay_traces=False, overlay_signals=False, add_initial_zero=True, label=None, trace_labels=None, title=None, relabel=True, **kwargs)
Plot the time response of an input/output system.
This function creates a standard set of plots for the input/output
response of a system, with the data provided via a `TimeResponseData`
object, which is the standard output for python-control simulation
functions.
Parameters
----------
data : `TimeResponseData`
Data to be plotted.
plot_inputs : bool or str, optional
Sets how and where to plot the inputs:
* False: don't plot the inputs
* None: use value from time response data (default)
* 'overlay': plot inputs overlaid with outputs
* True: plot the inputs on their own axes
plot_outputs : bool, optional
If False, suppress plotting of the outputs.
overlay_traces : bool, optional
If set to True, combine all traces onto a single row instead of
plotting a separate row for each trace.
overlay_signals : bool, optional
If set to True, combine all input and output signals onto a single
plot (for each).
sharex, sharey : str or bool, optional
Determine whether and how x- and y-axis limits are shared between
subplots. Can be set set to 'row' to share across all subplots in
a row, 'col' to set across all subplots in a column, 'all' to share
across all subplots, or False to allow independent limits.
Default values are False for `sharex' and 'col' for `sharey`, and
can be set using `config.defaults['timeplot.sharex']` and
`config.defaults['timeplot.sharey']`.
transpose : bool, optional
If transpose is False (default), signals are plotted from top to
bottom, starting with outputs (if plotted) and then inputs.
Multi-trace plots are stacked horizontally. If transpose is True,
signals are plotted from left to right, starting with the inputs
(if plotted) and then the outputs. Multi-trace responses are
stacked vertically.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
add_initial_zero : bool
Add an initial point of zero at the first time point for all
inputs with type 'step'. Default is True.
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
input_props : array of dict
List of line properties to use when plotting combined inputs. The
default values are set by `config.defaults['timeplot.input_props']`.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If more than one line is being generated, an array of
labels should be provided with label[trace, :, 0] representing the
output labels and label[trace, :, 1] representing the input labels.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
output_props : array of dict, optional
List of line properties to use when plotting combined outputs. The
default values are set by `config.defaults['timeplot.output_props']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
relabel : bool, optional
(deprecated) By default, existing figures and axes are relabeled
when new data are added. If set to False, just plot new data on
existing axes.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
time_label : str, optional
Label to use for the time axis.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
trace_labels : list of str, optional
Replace the default trace labels with the given labels.
trace_props : array of dict
List of line properties to use when plotting multiple traces. The
default values are set by `config.defaults['timeplot.trace_props']`.
Notes
-----
A new figure will be generated if there is no current figure or the
current figure has an incompatible number of axes. To force the
creation of a new figures, use `plt.figure`. To reuse a portion of an
existing figure, use the `ax` keyword.
The line properties (color, linestyle, etc) can be set for the entire
plot using the `fmt` and/or `kwargs` parameter, which are passed on to
`matplotlib`. When combining signals or traces, the `input_props`,
`output_props`, and `trace_props` parameters can be used to pass a list
of dictionaries containing the line properties to use. These
input/output properties are combined with the trace properties and
finally the kwarg properties to determine the final line properties.
The default plot properties, such as font sizes, can be set using
`config.defaults[''timeplot.rcParams']`.
control.timebase
Python Library Documentation: function timebase in module control.iosys
timebase(sys, strict=True)
Return the timebase for a system.
dt = timebase(sys)
returns the timebase for a system 'sys'. If the strict option is
set to True, `dt` = True will be returned as 1.
Parameters
----------
sys : `InputOutputSystem` or float
System whose timebase is to be determined.
strict : bool, optional
Whether to implement strict checking. If set to True (default),
a float will always be returned (`dt` = True will be returned as 1).
Returns
-------
dt : timebase
Timebase for the system (0 = continuous time, None = unspecified).
control.timeplot
Python Library Documentation: module control.timeplot in control
NAME
control.timeplot - Time plotting functions.
DESCRIPTION
This module contains routines for plotting out time responses. These
functions can be called either as standalone functions or access from
the TimeResponseData class.
FUNCTIONS
combine_time_responses(response_list, trace_labels=None, title=None)
Combine individual time responses into multi-trace response.
This function combines multiple instances of `TimeResponseData`
into a multi-trace `TimeResponseData` object.
Parameters
----------
response_list : list of `TimeResponseData` objects
Responses to be combined.
trace_labels : list of str, optional
List of labels for each trace. If not specified, trace names are
taken from the input data or set to None.
title : str, optional
Set the title to use when plotting. Defaults to plot type and
system name(s).
Returns
-------
data : `TimeResponseData`
Multi-trace input/output data.
time_response_plot(data, *fmt, ax=None, plot_inputs=None, plot_outputs=True, transpose=False, overlay_traces=False, overlay_signals=False, add_initial_zero=True, label=None, trace_labels=None, title=None, relabel=True, **kwargs)
Plot the time response of an input/output system.
This function creates a standard set of plots for the input/output
response of a system, with the data provided via a `TimeResponseData`
object, which is the standard output for python-control simulation
functions.
Parameters
----------
data : `TimeResponseData`
Data to be plotted.
plot_inputs : bool or str, optional
Sets how and where to plot the inputs:
* False: don't plot the inputs
* None: use value from time response data (default)
* 'overlay': plot inputs overlaid with outputs
* True: plot the inputs on their own axes
plot_outputs : bool, optional
If False, suppress plotting of the outputs.
overlay_traces : bool, optional
If set to True, combine all traces onto a single row instead of
plotting a separate row for each trace.
overlay_signals : bool, optional
If set to True, combine all input and output signals onto a single
plot (for each).
sharex, sharey : str or bool, optional
Determine whether and how x- and y-axis limits are shared between
subplots. Can be set set to 'row' to share across all subplots in
a row, 'col' to set across all subplots in a column, 'all' to share
across all subplots, or False to allow independent limits.
Default values are False for `sharex' and 'col' for `sharey`, and
can be set using `config.defaults['timeplot.sharex']` and
`config.defaults['timeplot.sharey']`.
transpose : bool, optional
If transpose is False (default), signals are plotted from top to
bottom, starting with outputs (if plotted) and then inputs.
Multi-trace plots are stacked horizontally. If transpose is True,
signals are plotted from left to right, starting with the inputs
(if plotted) and then the outputs. Multi-trace responses are
stacked vertically.
*fmt : `matplotlib.pyplot.plot` format string, optional
Passed to `matplotlib` as the format string for all lines in the plot.
**kwargs : `matplotlib.pyplot.plot` keyword properties, optional
Additional keywords passed to `matplotlib` to specify line properties.
Returns
-------
cplt : `ControlPlot` object
Object containing the data that were plotted. See `ControlPlot`
for more detailed information.
cplt.lines : 2D array of `matplotlib.lines.Line2D`
Array containing information on each line in the plot. The shape
of the array matches the subplots shape and the value of the array
is a list of Line2D objects in that subplot.
cplt.axes : 2D array of `matplotlib.axes.Axes`
Axes for each subplot.
cplt.figure : `matplotlib.figure.Figure`
Figure containing the plot.
cplt.legend : 2D array of `matplotlib.legend.Legend`
Legend object(s) contained in the plot.
Other Parameters
----------------
add_initial_zero : bool
Add an initial point of zero at the first time point for all
inputs with type 'step'. Default is True.
ax : array of `matplotlib.axes.Axes`, optional
The matplotlib axes to draw the figure on. If not specified, the
axes for the current figure are used or, if there is no current
figure with the correct number and shape of axes, a new figure is
created. The shape of the array must match the shape of the
plotted data.
input_props : array of dict
List of line properties to use when plotting combined inputs. The
default values are set by `config.defaults['timeplot.input_props']`.
label : str or array_like of str, optional
If present, replace automatically generated label(s) with the given
label(s). If more than one line is being generated, an array of
labels should be provided with label[trace, :, 0] representing the
output labels and label[trace, :, 1] representing the input labels.
legend_map : array of str, optional
Location of the legend for multi-axes plots. Specifies an array
of legend location strings matching the shape of the subplots, with
each entry being either None (for no legend) or a legend location
string (see `~matplotlib.pyplot.legend`).
legend_loc : int or str, optional
Include a legend in the given location. Default is 'center right',
with no legend for a single response. Use False to suppress legend.
output_props : array of dict, optional
List of line properties to use when plotting combined outputs. The
default values are set by `config.defaults['timeplot.output_props']`.
rcParams : dict
Override the default parameters used for generating plots.
Default is set by `config.defaults['ctrlplot.rcParams']`.
relabel : bool, optional
(deprecated) By default, existing figures and axes are relabeled
when new data are added. If set to False, just plot new data on
existing axes.
show_legend : bool, optional
Force legend to be shown if True or hidden if False. If
None, then show legend when there is more than one line on an
axis or `legend_loc` or `legend_map` has been specified.
time_label : str, optional
Label to use for the time axis.
title : str, optional
Set the title of the plot. Defaults to plot type and system name(s).
trace_labels : list of str, optional
Replace the default trace labels with the given labels.
trace_props : array of dict
List of line properties to use when plotting multiple traces. The
default values are set by `config.defaults['timeplot.trace_props']`.
Notes
-----
A new figure will be generated if there is no current figure or the
current figure has an incompatible number of axes. To force the
creation of a new figures, use `plt.figure`. To reuse a portion of an
existing figure, use the `ax` keyword.
The line properties (color, linestyle, etc) can be set for the entire
plot using the `fmt` and/or `kwargs` parameter, which are passed on to
`matplotlib`. When combining signals or traces, the `input_props`,
`output_props`, and `trace_props` parameters can be used to pass a list
of dictionaries containing the line properties to use. These
input/output properties are combined with the trace properties and
finally the kwarg properties to determine the final line properties.
The default plot properties, such as font sizes, can be set using
`config.defaults[''timeplot.rcParams']`.
DATA
__all__ = ['time_response_plot', 'combine_time_responses']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\timeplot.py
control.timeresp
Python Library Documentation: module control.timeresp in control
NAME
control.timeresp - Time domain simulation routines.
DESCRIPTION
This module contains a collection of functions that are used to
compute time-domain simulations of LTI systems.
Arguments to time-domain simulations include a time vector, an input
vector (when needed), and an initial condition vector. The most
general function for simulating LTI systems the
`forced_response` function, which has the form::
t, y = forced_response(sys, T, U, X0)
where `T` is a vector of times at which the response should be
evaluated, `U` is a vector of inputs (one for each time point) and
`X0` is the initial condition for the system.
See :ref:`time-series-convention` for more information on how time
series data are represented.
CLASSES
builtins.list(builtins.object)
TimeResponseList
builtins.object
TimeResponseData
class TimeResponseData(builtins.object)
| TimeResponseData(time, outputs, states=None, inputs=None, issiso=None, output_labels=None, state_labels=None, input_labels=None, title=None, transpose=False, return_x=False, squeeze=None, multi_trace=False, trace_labels=None, trace_types=None, plot_inputs=True, sysname=None, params=None, success=True, message=None)
|
| Input/output system time response data.
|
| This class maintains and manipulates the data corresponding to the
| temporal response of an input/output system. It is used as the return
| type for time domain simulations (`step_response`, `input_output_response`,
| etc).
|
| A time response consists of a time vector, an output vector, and
| optionally an input vector and/or state vector. Inputs and outputs can
| be 1D (scalar input/output) or 2D (vector input/output).
|
| A time response can be stored for multiple input signals (called traces),
| with the output and state indexed by the trace number. This allows for
| input/output response matrices, which is mainly useful for impulse and
| step responses for linear systems. For multi-trace responses, the same
| time vector must be used for all traces.
|
| Time responses are accessed through either the raw data, stored as `t`,
| `y`, `x`, `u`, or using a set of properties `time`, `outputs`,
| `states`, `inputs`. When accessing time responses via their
| properties, squeeze processing is applied so that (by default)
| single-input, single-output systems will have the output and input
| indices suppressed. This behavior is set using the `squeeze` parameter.
|
| Parameters
| ----------
| time : 1D array
| Time values of the output. Ignored if None.
| outputs : ndarray
| Output response of the system. This can either be a 1D array
| indexed by time (for SISO systems or MISO systems with a specified
| input), a 2D array indexed by output and time (for MIMO systems
| with no input indexing, such as initial_response or forced
| response) or trace and time (for SISO systems with multiple
| traces), or a 3D array indexed by output, trace, and time (for
| multi-trace input/output responses).
| states : array, optional
| Individual response of each state variable. This should be a 2D
| array indexed by the state index and time (for single trace
| systems) or a 3D array indexed by state, trace, and time.
| inputs : array, optional
| Inputs used to generate the output. This can either be a 1D array
| indexed by time (for SISO systems or MISO/MIMO systems with a
| specified input), a 2D array indexed either by input and time (for
| a multi-input system) or trace and time (for a single-input,
| multi-trace response), or a 3D array indexed by input, trace, and
| time.
| title : str, optional
| Title of the data set (used as figure title in plotting).
| squeeze : bool, optional
| By default, if a system is single-input, single-output (SISO) then
| the inputs and outputs are returned as a 1D array (indexed by time)
| and if a system is multi-input or multi-output, then the inputs are
| returned as a 2D array (indexed by input and time) and the outputs
| are returned as either a 2D array (indexed by output and time) or a
| 3D array (indexed by output, trace, and time). If `squeeze` = True,
| access to the output response will remove single-dimensional
| entries from the shape of the inputs and outputs even if the system
| is not SISO. If squeeze=False, keep the input as a 2D or 3D array
| (indexed by the input (if multi-input), trace (if single input) and
| time) and the output as a 3D array (indexed by the output, trace,
| and time) even if the system is SISO. The default value can be set
| using `config.defaults['control.squeeze_time_response']`.
|
| Attributes
| ----------
| t : 1D array
| Time values of the input/output response(s). This attribute is
| normally accessed via the `time` property.
| y : 2D or 3D array
| Output response data, indexed either by output index and time (for
| single trace responses) or output, trace, and time (for multi-trace
| responses). These data are normally accessed via the `outputs`
| property, which performs squeeze processing.
| x : 2D or 3D array, or None
| State space data, indexed either by output number and time (for
| single trace responses) or output, trace, and time (for multi-trace
| responses). If no state data are present, value is None. These
| data are normally accessed via the `states` property, which
| performs squeeze processing.
| u : 2D or 3D array, or None
| Input signal data, indexed either by input index and time (for single
| trace responses) or input, trace, and time (for multi-trace
| responses). If no input data are present, value is None. These
| data are normally accessed via the `inputs` property, which
| performs squeeze processing.
| issiso : bool, optional
| Set to True if the system generating the data is single-input,
| single-output. If passed as None (default), the input and output
| data will be used to set the value.
| ninputs, noutputs, nstates : int
| Number of inputs, outputs, and states of the underlying system.
| params : dict, optional
| If system is a nonlinear I/O system, set parameter values.
| ntraces : int, optional
| Number of independent traces represented in the input/output
| response. If `ntraces` is 0 (default) then the data represents a
| single trace with the trace index suppressed in the data.
| trace_labels : array of string, optional
| Labels to use for traces (set to sysname it `ntraces` is 0).
| trace_types : array of string, optional
| Type of trace. Currently only 'step' is supported, which controls
| the way in which the signal is plotted.
|
| Other Parameters
| ----------------
| input_labels, output_labels, state_labels : array of str, optional
| Optional labels for the inputs, outputs, and states, given as a
| list of strings matching the appropriate signal dimension.
| sysname : str, optional
| Name of the system that created the data.
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`). Default value
| is False.
| return_x : bool, optional
| If True, return the state vector when enumerating result by
| assigning to a tuple (default = False).
| plot_inputs : bool, optional
| Whether or not to plot the inputs by default (can be overridden
| in the `~TimeResponseData.plot` method).
| multi_trace : bool, optional
| If True, then 2D input array represents multiple traces. For
| a MIMO system, the `input` attribute should then be set to
| indicate which trace is being specified. Default is False.
| success : bool, optional
| If False, result may not be valid (see `input_output_response`).
| message : str, optional
| Informational message if `success` is False.
|
| See Also
| --------
| input_output_response, forced_response, impulse_response, initial_response, step_response, FrequencyResponseData
|
| Notes
| -----
| The responses for individual elements of the time response can be
| accessed using integers, slices, or lists of signal offsets or the
| names of the appropriate signals::
|
| sys = ct.rss(4, 2, 1)
| resp = ct.initial_response(sys, initial_state=[1, 1, 1, 1])
| plt.plot(resp.time, resp.outputs['y[0]'])
|
| In the case of multi-trace data, the responses should be indexed using
| the output signal name (or offset) and the input signal name (or
| offset)::
|
| sys = ct.rss(4, 2, 2, strictly_proper=True)
| resp = ct.step_response(sys)
| plt.plot(resp.time, resp.outputs[['y[0]', 'y[1]'], 'u[0]'].T)
|
| For backward compatibility with earlier versions of python-control,
| this class has an `__iter__` method that allows it to be assigned to
| a tuple with a variable number of elements. This allows the following
| patterns to work::
|
| t, y = step_response(sys)
| t, y, x = step_response(sys, return_x=True)
|
| Similarly, the class has `__getitem__` and `__len__` methods that
| allow the return value to be indexed:
|
| * response[0]: returns the time vector
| * response[1]: returns the output vector
| * response[2]: returns the state vector
|
| When using this (legacy) interface, the state vector is not affected
| by the `squeeze` parameter.
|
| The default settings for `return_x`, `squeeze` and `transpose`
| can be changed by calling the class instance and passing new values::
|
| response(transpose=True).input
|
| See `TimeResponseData.__call__` for more information.
|
| Methods defined here:
|
| __call__(self, **kwargs)
| Change value of processing keywords.
|
| Calling the time response object will create a copy of the object and
| change the values of the keywords used to control the `outputs`,
| `states`, and `inputs` properties.
|
| Parameters
| ----------
| squeeze : bool, optional
| If `squeeze` = True, access to the output response will remove
| single-dimensional entries from the shape of the inputs,
| outputs, and states even if the system is not SISO. If
| `squeeze` = False, keep the input as a 2D or 3D array (indexed
| by the input (if multi-input), trace (if single input) and
| time) and the output and states as a 3D array (indexed by the
| output/state, trace, and time) even if the system is SISO.
|
| transpose : bool, optional
| If True, transpose all input and output arrays (for backward
| compatibility with MATLAB and `scipy.signal.lsim`).
| Default value is False.
|
| return_x : bool, optional
| If True, return the state vector when enumerating result by
| assigning to a tuple (default = False).
|
| input_labels, output_labels, state_labels: array of str
| Labels for the inputs, outputs, and states, given as a
| list of strings matching the appropriate signal dimension.
|
| __getitem__(self, index)
| # Implement (thin) getitem to allow access via legacy indexing
|
| __init__(self, time, outputs, states=None, inputs=None, issiso=None, output_labels=None, state_labels=None, input_labels=None, title=None, transpose=False, return_x=False, squeeze=None, multi_trace=False, trace_labels=None, trace_types=None, plot_inputs=True, sysname=None, params=None, success=True, message=None)
| Create an input/output time response object.
|
| This function is used by the various time response functions, such
| as `input_output_response` and `step_response` to store the
| response of a simulation. It can be passed to `plot_time_response`
| to plot the data, or the `~TimeResponseData.plot` method can be used.
|
| See `TimeResponseData` for more information on parameters.
|
| __iter__(self)
| # Implement iter to allow assigning to a tuple
|
| __len__(self)
| # Implement (thin) len to emulate legacy testing interface
|
| plot(self, *args, **kwargs)
| Plot the time response data objects.
|
| This method calls `time_response_plot`, passing all arguments
| and keywords. See `time_response_plot` for details.
|
| to_pandas(self)
| Convert response data to pandas data frame.
|
| Creates a pandas data frame using the input, output, and state labels
| for the time response. The column labels are given by the input and
| output (and state, when present) labels, with time labeled by 'time'
| and traces (for multi-trace responses) labeled by 'trace'.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| inputs
| Time response input vector.
|
| Input(s) to the system, indexed by input (optional), trace (optional),
| and time. If a 1D vector is passed, the input corresponds to a
| scalar-valued input. If a 2D vector is passed, then it can either
| represent multiple single-input traces or a single multi-input trace.
| The optional `multi_trace` keyword should be used to disambiguate
| the two. If a 3D vector is passed, then it represents a multi-trace,
| multi-input signal, indexed by input, trace, and time.
|
| Input and output signal names can be used to index the data in
| place of integer offsets, with the input signal names being used to
| access multi-input data.
|
| See `TimeResponseData.squeeze` for a description of how the
| dimensions of the input vector can be modified using the `squeeze`
| keyword.
|
| :type: 1D or 2D array
|
| outputs
| Time response output vector.
|
| Output response of the system, indexed by either the output and time
| (if only a single input is given) or the output, trace, and time
| (for multiple traces). See `TimeResponseData.squeeze` for a
| description of how this can be modified using the `squeeze` keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets, with the input signal names being used to
| access multi-input data.
|
| :type: 1D, 2D, or 3D array
|
| states
| Time response state vector.
|
| Time evolution of the state vector, indexed by either the state and
| time (if only a single trace is given) or the state, trace, and
| time (for multiple traces). See `TimeResponseData.squeeze` for a
| description of how this can be modified using the `squeeze`
| keyword.
|
| Input and output signal names can be used to index the data in
| place of integer offsets, with the input signal names being used to
| access multi-input data.
|
| :type: 2D or 3D array
|
| time
| Time vector.
|
| Time values of the input/output response(s).
|
| :type: 1D array
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| squeeze = None
class TimeResponseList(builtins.list)
| TimeResponseList(iterable=(), /)
|
| List of TimeResponseData objects with plotting capability.
|
| This class consists of a list of `TimeResponseData` objects.
| It is a subclass of the Python `list` class, with a `plot` method that
| plots the individual `TimeResponseData` objects.
|
| Method resolution order:
| TimeResponseList
| builtins.list
| builtins.object
|
| Methods defined here:
|
| plot(self, *args, **kwargs)
| Plot a list of time responses.
|
| See `time_response_plot` for details.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| ----------------------------------------------------------------------
| Methods inherited from builtins.list:
|
| __add__(self, value, /)
| Return self+value.
|
| __contains__(self, key, /)
| Return bool(key in self).
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(self, index, /)
| Return self[index].
|
| __gt__(self, value, /)
| Return self>value.
|
| __iadd__(self, value, /)
| Implement self+=value.
|
| __imul__(self, value, /)
| Implement self*=value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __repr__(self, /)
| Return repr(self).
|
| __reversed__(self, /)
| Return a reverse iterator over the list.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(self, /)
| Return the size of the list in memory, in bytes.
|
| append(self, object, /)
| Append object to the end of the list.
|
| clear(self, /)
| Remove all items from list.
|
| copy(self, /)
| Return a shallow copy of the list.
|
| count(self, value, /)
| Return number of occurrences of value.
|
| extend(self, iterable, /)
| Extend list by appending elements from the iterable.
|
| index(self, value, start=0, stop=9223372036854775807, /)
| Return first index of value.
|
| Raises ValueError if the value is not present.
|
| insert(self, index, object, /)
| Insert object before index.
|
| pop(self, index=-1, /)
| Remove and return item at index (default last).
|
| Raises IndexError if list is empty or index is out of range.
|
| remove(self, value, /)
| Remove first occurrence of value.
|
| Raises ValueError if the value is not present.
|
| reverse(self, /)
| Reverse *IN PLACE*.
|
| sort(self, /, *, key=None, reverse=False)
| Sort the list in ascending order and return None.
|
| The sort is in-place (i.e. the list itself is modified) and stable (i.e. the
| order of two equal elements is maintained).
|
| If a key function is given, apply it once to each list item and sort them,
| ascending or descending, according to their function values.
|
| The reverse flag can be set to sort in descending order.
|
| ----------------------------------------------------------------------
| Class methods inherited from builtins.list:
|
| __class_getitem__(...)
| See PEP 585
|
| ----------------------------------------------------------------------
| Static methods inherited from builtins.list:
|
| __new__(*args, **kwargs) class method of builtins.list
| Create and return a new object. See help(type) for accurate signature.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from builtins.list:
|
| __hash__ = None
FUNCTIONS
forced_response(sysdata, timepts=None, inputs=0.0, initial_state=0.0, transpose=False, params=None, interpolate=False, return_states=None, squeeze=None, **kwargs)
Compute the output of a linear system given the input.
As a convenience for parameters `U`, `X0`: Numbers (scalars) are
converted to constant arrays with the correct shape. The correct shape
is inferred from arguments `sys` and `T`.
For information on the **shape** of parameters `U`, `T`, `X0` and
return values `T`, `yout`, `xout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which forced response is computed.
timepts (or T) : array_like, optional for discrete LTI `sys`
Time steps at which the input is defined; values must be evenly
spaced. If None, `inputs` must be given and ``len(inputs)`` time
steps of `sys.dt` are simulated. If `sys.dt` is None or True
(undetermined time step), a time step of 1.0 is assumed.
inputs (or U) : array_like or float, optional
Input array giving input at each time in `timepts`. If `inputs` is
None or 0, `timepts` must be given, even for discrete-time
systems. In this case, for continuous-time systems, a direct
calculation of the matrix exponential is used, which is faster than
the general interpolating algorithm used otherwise.
initial_state (or X0) : array_like or float, default=0.
Initial condition.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
transpose : bool, default=False
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`).
interpolate : bool, default=False
If True and system is a discrete-time system, the input will
be interpolated between the given time steps and the output
will be given at system sampling rate. Otherwise, only return
the output at the times given in `T`. No effect on continuous
time simulations.
return_states (or return_x) : bool, default=None
Used if the time response data is assigned to a tuple. If False,
return only the time and output vectors. If True, also return the
the state vector. If None, determine the returned variables by
`config.defaults['forced_response.return_x']`, which was True
before version 0.9 and is False since then.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` is True, remove single-dimensional entries from
the shape of the output even if the system is not SISO. If
`squeeze` is False, keep the output as a 2D array (indexed by
the output number and time) even if the system is SISO. The default
behavior can be overridden by
`config.defaults['control.squeeze_time_response']`.
Returns
-------
resp : `TimeResponseData` or `TimeResponseList`
Input/output response data object. When accessed as a tuple,
returns ``(time, outputs)`` (default) or ``(time, outputs, states)``
if `return_x` is True. The `~TimeResponseData.plot` method can
be used to create a plot of the time response(s) (see
`time_response_plot` for more information). If `sysdata` is a list
of systems, a `TimeResponseList` object is returned, which acts as
a list of `TimeResponseData` objects with a `~TimeResponseList.plot`
method that will plot responses as multiple traces. See
`time_response_plot` for additional information.
resp.time : array
Time values of the output.
resp.outputs : array
Response of the system. If the system is SISO and `squeeze` is not
True, the array is 1D (indexed by time). If the system is not SISO or
`squeeze` is False, the array is 2D (indexed by output and time).
resp.states : array
Time evolution of the state vector, represented as a 2D array
indexed by state and time.
resp.inputs : array
Input(s) to the system, indexed by input and time.
See Also
--------
impulse_response, initial_response, input_output_response, step_response, time_response_plot
Notes
-----
For discrete-time systems, the input/output response is computed
using the `scipy.signal.dlsim` function.
For continuous-time systems, the output is computed using the
matrix exponential exp(A t) and assuming linear interpolation
of the inputs between time points.
If a nonlinear I/O system is passed to `forced_response`, the
`input_output_response` function is called instead. The main
difference between `input_output_response` and `forced_response`
is that `forced_response` is specialized (and optimized) for
linear systems.
(legacy) The return value of the system can also be accessed by
assigning the function to a tuple of length 2 (time, output) or of
length 3 (time, output, state) if `return_x` is True.
Examples
--------
>>> G = ct.rss(4)
>>> timepts = np.linspace(0, 10)
>>> inputs = np.sin(timepts)
>>> tout, yout = ct.forced_response(G, timepts, inputs)
See :ref:`time-series-convention` and
:ref:`package-configuration-parameters`.
impulse_response(sysdata, timepts=None, input_indices=None, output_indices=None, timepts_num=None, transpose=False, return_states=False, squeeze=None, **kwargs)
Compute the impulse response for a linear system.
If the system has multiple inputs and/or multiple outputs, the impulse
response is computed for each input/output pair, with all other inputs
set to zero. Optionally, a single input and/or single output can be
selected, in which case all other inputs are set to 0 and all other
outputs are ignored.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which impulse response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a scalar (time vector is
auto-computed if not given; see `step_response` for more detail).
input_indices (or input) : int, optional
Only compute the impulse response for the listed input. If not
specified, the impulse responses for each independent input are
computed.
output_indices (or output) : int, optional
Only report the step response for the listed output. If not
specified, all outputs are reported.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array (auto-computed if not given); ignored if the system is
discrete time.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 2D array (indexed by the
output number and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, initial_response, step_response
Notes
-----
This function uses the `forced_response` function to compute the time
response. For continuous-time systems, the initial condition is altered
to account for the initial impulse. For discrete-time systems, the
impulse is sized so that it has unit area. The impulse response for
nonlinear systems is not implemented.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.impulse_response(G)
initial_response(sysdata, timepts=None, initial_state=0, output_indices=None, timepts_num=None, params=None, transpose=False, return_states=False, squeeze=None, **kwargs)
Compute the initial condition response for a linear system.
If the system has multiple outputs (MIMO), optionally, one output
may be selected. If no selection is made for the output, all
outputs are given.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which initial response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number (time vector is
auto-computed if not given; see `step_response` for more detail).
initial_state (or X0) : array_like or float, optional
Initial condition (default = 0). Numbers are converted to constant
arrays with the correct shape.
output_indices (or output) : int
Index of the output that will be used in this simulation. Set
to None to not trim outputs.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `timepts` is not
provided as an array (auto-computed if not given); ignored if the
system is discrete time.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 2D array (indexed by the
output number and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, impulse_response, step_response
Notes
-----
This function uses the `forced_response` function with the input set to
zero.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.initial_response(G)
step_info(sysdata, timepts=None, timepts_num=None, final_output=None, params=None, SettlingTimeThreshold=0.02, RiseTimeLimits=(0.1, 0.9), **kwargs)
Step response characteristics (rise time, settling time, etc).
Parameters
----------
sysdata : `StateSpace` or `TransferFunction` or array_like
The system data. Either LTI system to simulate (`StateSpace`,
`TransferFunction`), or a time series of step response data.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number (time vector is
auto-computed if not given, see `step_response` for more detail).
Required, if sysdata is a time series of response data.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array; auto-computed if not given; ignored if sysdata is a
discrete-time system or a time series or response data.
final_output (or yfinal) : scalar or array_like, optional
Steady-state response. If not given, sysdata.dcgain() is used for
systems to simulate and the last value of the the response data is
used for a given time series of response data. Scalar for SISO,
(noutputs, ninputs) array_like for MIMO systems.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
SettlingTimeThreshold : float, optional
Defines the error to compute settling time (default = 0.02).
RiseTimeLimits : tuple (lower_threshold, upper_threshold)
Defines the lower and upper threshold for RiseTime computation.
Returns
-------
S : dict or list of list of dict
If `sysdata` corresponds to a SISO system, `S` is a dictionary
containing:
- 'RiseTime': Time from 10% to 90% of the steady-state value.
- 'SettlingTime': Time to enter inside a default error of 2%.
- 'SettlingMin': Minimum value after `RiseTime`.
- 'SettlingMax': Maximum value after `RiseTime`.
- 'Overshoot': Percentage of the peak relative to steady value.
- 'Undershoot': Percentage of undershoot.
- 'Peak': Absolute peak value.
- 'PeakTime': Time that the first peak value is obtained.
- 'SteadyStateValue': Steady-state value.
If `sysdata` corresponds to a MIMO system, `S` is a 2D list of dicts.
To get the step response characteristics from the jth input to the
ith output, access ``S[i][j]``.
See Also
--------
step_response, forced_response, initial_response, impulse_response
Examples
--------
>>> sys = ct.TransferFunction([-1, 1], [1, 1, 1])
>>> S = ct.step_info(sys)
>>> for k in S:
... print(f"{k}: {S[k]:3.4}")
...
RiseTime: 1.256
SettlingTime: 9.071
SettlingMin: 0.9011
SettlingMax: 1.208
Overshoot: 20.85
Undershoot: 27.88
Peak: 1.208
PeakTime: 4.187
SteadyStateValue: 1.0
MIMO System: Simulate until a final time of 10. Get the step response
characteristics for the second input and specify a 5% error until the
signal is considered settled.
>>> from math import sqrt
>>> sys = ct.StateSpace([[-1., -1.],
... [1., 0.]],
... [[-1./sqrt(2.), 1./sqrt(2.)],
... [0, 0]],
... [[sqrt(2.), -sqrt(2.)]],
... [[0, 0]])
>>> S = ct.step_info(sys, T=10., SettlingTimeThreshold=0.05)
>>> for k, v in S[0][1].items():
... print(f"{k}: {float(v):3.4}")
RiseTime: 1.212
SettlingTime: 6.061
SettlingMin: -1.209
SettlingMax: -0.9184
Overshoot: 20.87
Undershoot: 28.02
Peak: 1.209
PeakTime: 4.242
SteadyStateValue: -1.0
step_response(sysdata, timepts=None, initial_state=0.0, input_indices=None, output_indices=None, timepts_num=None, transpose=False, return_states=False, squeeze=None, params=None, **kwargs)
Compute the step response for a linear system.
If the system has multiple inputs and/or multiple outputs, the step
response is computed for each input/output pair, with all other inputs
set to zero. Optionally, a single input and/or single output can be
selected, in which case all other inputs are set to 0 and all other
outputs are ignored.
For information on the **shape** of parameters `T`, `X0` and
return values `T`, `yout`, see :ref:`time-series-convention`.
Parameters
----------
sysdata : I/O system or list of I/O systems
I/O system(s) for which step response is computed.
timepts (or T) : array_like or float, optional
Time vector, or simulation time duration if a number. If `T` is not
provided, an attempt is made to create it automatically from the
dynamics of the system. If the system continuous time, the time
increment dt is chosen small enough to show the fastest mode, and
the simulation time period tfinal long enough to show the slowest
mode, excluding poles at the origin and pole-zero cancellations. If
this results in too many time steps (>5000), dt is reduced. If the
system is discrete time, only tfinal is computed, and final is
reduced if it requires too many simulation steps.
initial_state (or X0) : array_like or float, optional
Initial condition (default = 0). This can be used for a nonlinear
system where the origin is not an equilibrium point.
input_indices (or input) : int or list of int, optional
Only compute the step response for the listed input. If not
specified, the step responses for each independent input are
computed (as separate traces).
output_indices (or output) : int, optional
Only report the step response for the listed output. If not
specified, all outputs are reported.
params : dict, optional
If system is a nonlinear I/O system, set parameter values.
timepts_num (or T_num) : int, optional
Number of time steps to use in simulation if `T` is not provided as
an array (auto-computed if not given); ignored if the system is
discrete time.
transpose : bool, optional
If True, transpose all input and output arrays (for backward
compatibility with MATLAB and `scipy.signal.lsim`). Default
value is False.
return_states (or return_x) : bool, optional
If True, return the state vector when assigning to a tuple
(default = False). See `forced_response` for more details.
squeeze : bool, optional
By default, if a system is single-input, single-output (SISO) then
the output response is returned as a 1D array (indexed by time).
If `squeeze` = True, remove single-dimensional entries from the
shape of the output even if the system is not SISO. If
`squeeze` = False, keep the output as a 3D array (indexed by the
output, input, and time) even if the system is SISO. The default
value can be set using
`config.defaults['control.squeeze_time_response']`.
Returns
-------
results : `TimeResponseData` or `TimeResponseList`
Time response represented as a `TimeResponseData` object or
list of `TimeResponseData` objects. See
`forced_response` for additional information.
See Also
--------
forced_response, initial_response, impulse_response
Notes
-----
This function uses the `forced_response` function with the input set to a
unit step.
Examples
--------
>>> G = ct.rss(4)
>>> T, yout = ct.step_response(G)
DATA
__all__ = ['forced_response', 'step_response', 'step_info', 'initial_r...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\timeresp.py
control.unwrap
Python Library Documentation: function unwrap in module control.ctrlutil
unwrap(angle, period=6.283185307179586)
Unwrap a phase angle to give a continuous curve.
Parameters
----------
angle : array_like
Array of angles to be unwrapped.
period : float, optional
Period (defaults to 2 pi).
Returns
-------
angle_out : ndarray
Output array, with jumps of period/2 eliminated.
Examples
--------
>>> # Already continuous
>>> theta1 = np.array([1.0, 1.5, 2.0, 2.5, 3.0]) * np.pi
>>> theta2 = ct.unwrap(theta1)
>>> theta2/np.pi # doctest: +SKIP
array([1. , 1.5, 2. , 2.5, 3. ])
>>> # Wrapped, discontinuous
>>> theta1 = np.array([1.0, 1.5, 0.0, 0.5, 1.0]) * np.pi
>>> theta2 = ct.unwrap(theta1)
>>> theta2/np.pi # doctest: +SKIP
array([1. , 1.5, 2. , 2.5, 3. ])
control.use_fbs_defaults
Python Library Documentation: function use_fbs_defaults in module control.config
use_fbs_defaults()
Use Feedback Systems (FBS) compatible settings.
The following conventions from `Feedback Systems <https://fbsbook.org>`_
are used:
* Bode plots plot gain in powers of ten, phase in degrees,
frequency in rad/sec, no grid
* Frequency plots use the label "Gain" for the system gain.
* Nyquist plots use dashed lines for mirror image of Nyquist curve
Examples
--------
>>> ct.use_fbs_defaults()
>>> # do some FBS style plotting
control.use_legacy_defaults
Python Library Documentation: function use_legacy_defaults in module control.config
use_legacy_defaults(version)
Sets the defaults to whatever they were in a given release.
Parameters
----------
version : string
Version number of `python-control` to use for setting defaults.
Examples
--------
>>> ct.use_legacy_defaults("0.9.0")
(0, 9, 0)
>>> # do some legacy style plotting
control.use_matlab_defaults
Python Library Documentation: function use_matlab_defaults in module control.config
use_matlab_defaults()
Use MATLAB compatible configuration settings.
The following conventions are used:
* Bode plots plot gain in dB, phase in degrees, frequency in
rad/sec, with grids
* Frequency plots use the label "Magnitude" for the system gain.
Examples
--------
>>> ct.use_matlab_defaults()
>>> # do some matlab style plotting
control.warnings
Python Library Documentation: module warnings
NAME
warnings - Python part of the warnings subsystem.
MODULE REFERENCE
https://docs.python.org/3.12/library/warnings.html
The following documentation is automatically generated from the Python
source files. It may be incomplete, incorrect or include features that
are considered implementation detail and may vary between Python
implementations. When in doubt, consult the module reference at the
location listed above.
CLASSES
builtins.object
catch_warnings
class catch_warnings(builtins.object)
| catch_warnings(*, record=False, module=None, action=None, category=<class 'Warning'>, lineno=0, append=False)
|
| A context manager that copies and restores the warnings filter upon
| exiting the context.
|
| The 'record' argument specifies whether warnings should be captured by a
| custom implementation of warnings.showwarning() and be appended to a list
| returned by the context manager. Otherwise None is returned by the context
| manager. The objects appended to the list are arguments whose attributes
| mirror the arguments to showwarning().
|
| The 'module' argument is to specify an alternative module to the module
| named 'warnings' and imported under that name. This argument is only useful
| when testing the warnings module itself.
|
| If the 'action' argument is not None, the remaining arguments are passed
| to warnings.simplefilter() as if it were called immediately on entering the
| context.
|
| Methods defined here:
|
| __enter__(self)
|
| __exit__(self, *exc_info)
|
| __init__(self, *, record=False, module=None, action=None, category=<class 'Warning'>, lineno=0, append=False)
| Specify whether to record warnings and if an alternative module
| should be used other than sys.modules['warnings'].
|
| For compatibility with Python 3.0, please consider all arguments to be
| keyword-only.
|
| __repr__(self)
| Return repr(self).
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
FUNCTIONS
filterwarnings(action, message='', category=<class 'Warning'>, module='', lineno=0, append=False)
Insert an entry into the list of warnings filters (at the front).
'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'message' -- a regex that the warning message must match
'category' -- a class that the warning must be a subclass of
'module' -- a regex that the module name must match
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
formatwarning(message, category, filename, lineno, line=None)
Function to format a warning the standard way.
resetwarnings()
Clear the list of warning filters, so that no filters are active.
showwarning(message, category, filename, lineno, file=None, line=None)
Hook to write a warning to a file; replace if you like.
simplefilter(action, category=<class 'Warning'>, lineno=0, append=False)
Insert a simple entry into the list of warnings filters (at the front).
A simple filter matches all modules and messages.
'action' -- one of "error", "ignore", "always", "default", "module",
or "once"
'category' -- a class that the warning must be a subclass of
'lineno' -- an integer line number, 0 matches all warnings
'append' -- if true, append to the list of filters
warn(...)
Issue a warning, or maybe ignore it or raise an exception.
message
Text of the warning message.
category
The Warning category subclass. Defaults to UserWarning.
stacklevel
How far up the call stack to make this warning appear. A value of 2 for
example attributes the warning to the caller of the code calling warn().
source
If supplied, the destroyed object which emitted a ResourceWarning
skip_file_prefixes
An optional tuple of module filename prefixes indicating frames to skip
during stacklevel computations for stack frame attribution.
warn_explicit(...)
Issue a warning, or maybe ignore it or raise an exception.
DATA
__all__ = ['warn', 'warn_explicit', 'showwarning', 'formatwarning', 'f...
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\warnings.py
control.white_noise
Python Library Documentation: function white_noise in module control.stochsys
white_noise(T, Q, dt=0)
Generate a white noise signal with specified intensity.
This function generates a (multi-variable) white noise signal of
specified intensity as either a sampled continuous time signal or a
discrete-time signal. A white noise signal along a 1D array
of linearly spaced set of times T can be computing using
V = ct.white_noise(T, Q, dt)
where Q is a positive definite matrix providing the noise intensity.
In continuous time, the white noise signal is scaled such that the
integral of the covariance over a sample period is Q, thus approximating
a white noise signal. In discrete time, the white noise signal has
covariance Q at each point in time (without any scaling based on the
sample time).
Parameters
----------
T : 1D array_like
Array of linearly spaced times.
Q : 2D array_like
Noise intensity matrix of dimension nxn.
dt : float, optional
If 0, generate continuous-time noise signal, otherwise discrete time.
Returns
-------
V : array
Noise signal indexed as ``V[i, j]`` where `i` is the signal index and
`j` is the time index.
control.xferfcn
Python Library Documentation: module control.xferfcn in control
NAME
control.xferfcn - Transfer function class and related functions.
DESCRIPTION
This module contains the `TransferFunction` class and also functions
that operate on transfer functions.
CLASSES
control.lti.LTI(control.iosys.InputOutputSystem)
TransferFunction
class TransferFunction(control.lti.LTI)
| TransferFunction(*args, **kwargs)
|
| TransferFunction(num, den[, dt])
|
| Transfer function representation for LTI input/output systems.
|
| The TransferFunction class is used to represent systems in transfer
| function form. Transfer functions are usually created with the
| `tf` factory function.
|
| Parameters
| ----------
| num : 2D list of coefficient arrays
| Polynomial coefficients of the numerator.
| den : 2D list of coefficient arrays
| Polynomial coefficients of the denominator.
| dt : None, True or float, optional
| System timebase. 0 (default) indicates continuous time, True
| indicates discrete time with unspecified sampling time, positive
| number is discrete time with specified sampling time, None indicates
| unspecified timebase (either continuous or discrete time).
|
| Attributes
| ----------
| ninputs, noutputs : int
| Number of input and output signals.
| shape : tuple
| 2-tuple of I/O system dimension, (noutputs, ninputs).
| input_labels, output_labels : list of str
| Names for the input and output signals.
| name : string, optional
| System name.
| num_array, den_array : 2D array of lists of float
| Numerator and denominator polynomial coefficients as 2D array
| of 1D array objects (of varying length).
| num_list, den_list : 2D list of 1D array
| Numerator and denominator polynomial coefficients as 2D lists
| of 1D array objects (of varying length).
| display_format : None, 'poly' or 'zpk'
| Display format used in printing the TransferFunction object.
| Default behavior is polynomial display and can be changed by
| changing `config.defaults['xferfcn.display_format']`.
| s : `TransferFunction`
| Represents the continuous-time differential operator.
| z : `TransferFunction`
| Represents the discrete-time delay operator.
|
| See Also
| --------
| tf, InputOutputSystem, FrequencyResponseData
|
| Notes
| -----
| The numerator and denominator polynomials are stored as 2D arrays
| with each element containing a 1D array of coefficients. These data
| structures can be retrieved using `num_array` and `den_array`. For
| example,
|
| >>> sys.num_array[2, 5] # doctest: +SKIP
|
| gives the numerator of the transfer function from the 6th input to the
| 3rd output. (Note: a single 3D array structure cannot be used because
| the numerators and denominators can have different numbers of
| coefficients in each entry.)
|
| The attributes `num_list` and `den_list` are properties that return
| 2D nested lists containing MIMO numerator and denominator coefficients.
| For example,
|
| >>> sys.num_list[2][5] # doctest: +SKIP
|
| For legacy purposes, this list-based representation can also be
| obtained using `num` and `den`.
|
| A discrete-time transfer function is created by specifying a nonzero
| 'timebase' dt when the system is constructed:
|
| * `dt` = 0: continuous-time system (default)
| * `dt` > 0: discrete-time system with sampling period `dt`
| * `dt` = True: discrete time with unspecified sampling period
| * `dt` = None: no timebase specified
|
| Systems must have compatible timebases in order to be combined. A
| discrete-time system with unspecified sampling time (`dt` = True) can
| be combined with a system having a specified sampling time; the result
| will be a discrete-time system with the sample time of the other
| system. Similarly, a system with timebase None can be combined with a
| system having any timebase; the result will have the timebase of the
| other system. The default value of dt can be changed by changing the
| value of `config.defaults['control.default_dt']`.
|
| A transfer function is callable and returns the value of the transfer
| function evaluated at a point in the complex plane. See
| `TransferFunction.__call__` for a more detailed description.
|
| Subsystems corresponding to selected input/output pairs can be
| created by indexing the transfer function::
|
| subsys = sys[output_spec, input_spec]
|
| The input and output specifications can be single integers, lists of
| integers, or slices. In addition, the strings representing the names
| of the signals can be used and will be replaced with the equivalent
| signal offsets.
|
| The TransferFunction class defines two constants `s` and `z` that
| represent the differentiation and delay operators in continuous and
| discrete time. These can be used to create variables that allow
| algebraic creation of transfer functions. For example,
|
| >>> s = ct.TransferFunction.s # or ct.tf('s')
| >>> G = (s + 1)/(s**2 + 2*s + 1)
|
| Method resolution order:
| TransferFunction
| control.lti.LTI
| control.iosys.InputOutputSystem
| builtins.object
|
| Methods defined here:
|
| __add__(self, other)
| Add two LTI objects (parallel connection).
|
| __call__(self, x, squeeze=None, warn_infinite=True)
| Evaluate system transfer function at point in complex plane.
|
| Returns the value of the system's transfer function at a point `x`
| in the complex plane, where `x` is `s` for continuous-time systems
| and `z` for discrete-time systems.
|
| See `LTI.__call__` for details.
|
| __getitem__(self, key)
|
| __init__(self, *args, **kwargs)
| TransferFunction(num, den[, dt])
|
| Construct a transfer function.
|
| The default constructor is TransferFunction(num, den), where num
| and den are 2D arrays of arrays containing polynomial coefficients.
| To create a discrete-time transfer function, use
| ``TransferFunction(num, den, dt)`` where `dt` is the sampling time
| (or True for unspecified sampling time). To call the copy
| constructor, call ``TransferFunction(sys)``, where `sys` is a
| TransferFunction object (continuous or discrete).
|
| See `TransferFunction` and `tf` for more information.
|
| __mul__(self, other)
| Multiply two LTI objects (serial connection).
|
| __neg__(self)
| Negate a transfer function.
|
| __pow__(self, other)
|
| __radd__(self, other)
| Right add two LTI objects (parallel connection).
|
| __rmul__(self, other)
| Right multiply two LTI objects (serial connection).
|
| __rsub__(self, other)
| Right subtract two LTI objects.
|
| __rtruediv__(self, other)
| Right divide two LTI objects.
|
| __str__(self, var=None)
| String representation of the transfer function.
|
| Based on the display_format property, the output will be formatted as
| either polynomials or in zpk form.
|
| __sub__(self, other)
| Subtract two LTI objects.
|
| __truediv__(self, other)
| Divide two LTI objects.
|
| append(self, other)
| Append a second model to the present model.
|
| The second model is converted to a transfer function if necessary,
| inputs and outputs are appended and their order is preserved.
|
| Parameters
| ----------
| other : `StateSpace` or `TransferFunction`
| System to be appended.
|
| Returns
| -------
| sys : `TransferFunction`
| System model with `other` appended to `self`.
|
| dcgain(self, warn_infinite=False)
| Return the zero-frequency ("DC") gain.
|
| For a continuous-time transfer function G(s), the DC gain is G(0)
| For a discrete-time transfer function G(z), the DC gain is G(1)
|
| Parameters
| ----------
| warn_infinite : bool, optional
| By default, don't issue a warning message if the zero-frequency
| gain is infinite. Setting `warn_infinite` to generate the
| warning message.
|
| Returns
| -------
| gain : (noutputs, ninputs) ndarray or scalar
| Array or scalar value for SISO systems, depending on
| `config.defaults['control.squeeze_frequency_response']`. The
| value of the array elements or the scalar is either the
| zero-frequency (or DC) gain, or `inf`, if the frequency
| response is singular.
|
| For real valued systems, the empty imaginary part of the
| complex zero-frequency response is discarded and a real array or
| scalar is returned.
|
| Examples
| --------
| >>> G = ct.tf([1], [1, 4])
| >>> G.dcgain()
| np.float64(0.25)
|
| feedback(self, other=1, sign=-1)
| Feedback interconnection between two LTI objects.
|
| Parameters
| ----------
| other : `InputOutputSystem`
| System in the feedback path.
|
| sign : float, optional
| Gain to use in feedback path. Defaults to -1.
|
| freqresp(self, omega)
| Evaluate transfer function at complex frequencies.
|
| .. deprecated::0.9.0
| Method has been given the more Pythonic name
| `TransferFunction.frequency_response`. Or use
| `freqresp` in the MATLAB compatibility module.
|
| horner(self, x, warn_infinite=True)
| Evaluate value of transfer function using Horner's method.
|
| Evaluates ``sys(x)`` where `x` is a complex number `s` for
| continuous-time systems and `z` for discrete-time systems. Expects
| inputs and outputs to be formatted correctly. Use ``sys(x)`` for a
| more user-friendly interface.
|
| Parameters
| ----------
| x : complex
| Complex frequency at which the transfer function is evaluated.
|
| warn_infinite : bool, optional
| If True (default), generate a warning if `x` is a pole.
|
| Returns
| -------
| complex
|
| minreal(self, tol=None)
| Remove canceling pole/zero pairs from a transfer function.
|
| Parameters
| ----------
| tol : float
| Tolerance for determining whether poles and zeros overlap.
|
| poles(self)
| Compute the poles of a transfer function.
|
| returnScipySignalLTI(self, strict=True)
| Return a 2D array of `scipy.signal.lti` objects.
|
| For instance,
|
| >>> out = tfobject.returnScipySignalLTI() # doctest: +SKIP
| >>> out[3, 5] # doctest: +SKIP
|
| is a `scipy.signal.lti` object corresponding to the
| transfer function from the 6th input to the 4th output.
|
| Parameters
| ----------
| strict : bool, optional
| True (default):
| The timebase `tfobject.dt` cannot be None; it must be
| continuous (0) or discrete (True or > 0).
| False:
| if `tfobject.dt` is None, continuous-time
| `scipy.signal.lti` objects are returned
|
| Returns
| -------
| out : list of list of `scipy.signal.TransferFunction`
| Continuous time (inheriting from `scipy.signal.lti`)
| or discrete time (inheriting from `scipy.signal.dlti`)
| SISO objects.
|
| sample(self, Ts, method='zoh', alpha=None, prewarp_frequency=None, name=None, copy_names=True, **kwargs)
| Convert a continuous-time system to discrete time.
|
| Creates a discrete-time system from a continuous-time system by
| sampling. Multiple methods of conversion are supported.
|
| Parameters
| ----------
| Ts : float
| Sampling period.
| method : {'gbt', 'bilinear', 'euler', 'backward_diff', 'zoh', 'matched'}
| Method to use for sampling:
|
| * 'gbt': generalized bilinear transformation
| * 'backward_diff': Backwards difference ('gbt' with alpha=1.0)
| * 'bilinear' (or 'tustin'): Tustin's approximation ('gbt' with
| alpha=0.5)
| * 'euler': Euler (or forward difference) method ('gbt' with
| alpha=0)
| * 'matched': pole-zero match method
| * 'zoh': zero-order hold (default)
| alpha : float within [0, 1]
| The generalized bilinear transformation weighting parameter,
| which should only be specified with `method` = 'gbt', and is
| ignored otherwise. See `scipy.signal.cont2discrete`.
| prewarp_frequency : float within [0, infinity)
| The frequency [rad/s] at which to match with the input
| continuous- time system's magnitude and phase (the gain=1
| crossover frequency, for example). Should only be specified
| with `method` = 'bilinear' or 'gbt' with `alpha` = 0.5 and
| ignored otherwise.
| name : string, optional
| Set the name of the sampled system. If not specified and if
| `copy_names` is False, a generic name 'sys[id]' is generated with
| a unique integer id. If `copy_names` is True, the new system
| name is determined by adding the prefix and suffix strings in
| `config.defaults['iosys.sampled_system_name_prefix']` and
| `config.defaults['iosys.sampled_system_name_suffix']`, with the
| default being to add the suffix '$sampled'.
|
| copy_names : bool, Optional
| If True, copy the names of the input signals, output
| signals, and states to the sampled system.
|
| Returns
| -------
| sysd : `TransferFunction` system
| Discrete-time system, with sample period Ts.
|
| Other Parameters
| ----------------
| inputs : int, list of str or None, optional
| Description of the system inputs. If not specified, the
| original system inputs are used. See `InputOutputSystem` for
| more information.
| outputs : int, list of str or None, optional
| Description of the system outputs. Same format as `inputs`.
|
| Notes
| -----
| Available only for SISO systems. Uses `scipy.signal.cont2discrete`.
|
| Examples
| --------
| >>> sys = ct.tf(1, [1, 1])
| >>> sysd = sys.sample(0.5, method='bilinear')
|
| zeros(self)
| Compute the zeros of a transfer function.
|
| ----------------------------------------------------------------------
| Readonly properties defined here:
|
| den
| Denominator polynomial (as 2D nested lists of 1D arrays).
|
| den_list
| Denominator polynomial (as 2D nested lists of 1D arrays).
|
| num
| Numerator polynomial (as 2D nested list of 1D arrays).
|
| num_list
| Numerator polynomial (as 2D nested list of 1D arrays).
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| den_array = None
|
| ninputs = 1
|
| noutputs = 1
|
| num_array = None
|
| s = TransferFunction(
| array([1, 0]),
| array([1]),
| name='s', outputs=1, ...
| Differentiation operator (continuous time).
|
|
| z = TransferFunction(
| array([1, 0]),
| array([1]),
| dt=True,
| name='z', ou...
| Delay operator (discrete time).
|
|
| ----------------------------------------------------------------------
| Methods inherited from control.lti.LTI:
|
| bandwidth(self, dbdrop=-3)
| Evaluate bandwidth of an LTI system for a given dB drop.
|
| Evaluate the first frequency that the response magnitude is lower than
| DC gain by `dbdrop` dB.
|
| Parameters
| ----------
| dbdrop : float, optional
| A strictly negative scalar in dB (default = -3) defines the
| amount of gain drop for deciding bandwidth.
|
| Returns
| -------
| bandwidth : ndarray
| The first frequency (rad/time-unit) where the gain drops below
| `dbdrop` of the dc gain of the system, or nan if the system has
| infinite dc gain, inf if the gain does not drop for all frequency.
|
| Raises
| ------
| TypeError
| If `sys` is not an SISO LTI instance.
| ValueError
| If `dbdrop` is not a negative scalar.
|
| bode_plot(self, *args, **kwargs)
| Generate a Bode plot for the system.
|
| See `bode_plot` for more information.
|
| damp(self)
| Natural frequency, damping ratio of system poles.
|
| Returns
| -------
| wn : array
| Natural frequency for each system pole.
| zeta : array
| Damping ratio for each system pole.
| poles : array
| System pole locations.
|
| forced_response(self, *args, **kwargs)
| Generate the forced response for the system.
|
| See `forced_response` for more information.
|
| frequency_response(self, omega=None, squeeze=None)
| Evaluate LTI system response at an array of frequencies.
|
| See `frequency_response` for more detailed information.
|
| impulse_response(self, *args, **kwargs)
| Generate the impulse response for the system.
|
| See `impulse_response` for more information.
|
| initial_response(self, *args, **kwargs)
| Generate the initial response for the system.
|
| See `initial_response` for more information.
|
| ispassive(self)
| Indicate if a linear time invariant (LTI) system is passive.
|
| See `ispassive` for details.
|
| nichols_plot(self, *args, **kwargs)
| Generate a Nichols plot for the system.
|
| See `nichols_plot` for more information.
|
| nyquist_plot(self, *args, **kwargs)
| Generate a Nyquist plot for the system.
|
| See `nyquist_plot` for more information.
|
| step_response(self, *args, **kwargs)
| Generate the step response for the system.
|
| See `step_response` for more information.
|
| to_ss(self, *args, **kwargs)
| Convert to state space representation.
|
| See `ss` for details.
|
| to_tf(self, *args, **kwargs)
| Convert to transfer function representation.
|
| See `tf` for details.
|
| ----------------------------------------------------------------------
| Methods inherited from control.iosys.InputOutputSystem:
|
| __repr__(self)
| Return repr(self).
|
| copy(self, name=None, use_prefix_suffix=True)
| Make a copy of an input/output system.
|
| A copy of the system is made, with a new name. The `name` keyword
| can be used to specify a specific name for the system. If no name
| is given and `use_prefix_suffix` is True, the name is constructed
| by prepending `config.defaults['iosys.duplicate_system_name_prefix']`
| and appending `config.defaults['iosys.duplicate_system_name_suffix']`.
| Otherwise, a generic system name of the form 'sys[<id>]' is used,
| where '<id>' is based on an internal counter.
|
| Parameters
| ----------
| name : str, optional
| Name of the newly created system.
|
| use_prefix_suffix : bool, optional
| If True and `name` is None, set the name of the new system
| to the name of the original system with prefix
| `config.defaults['duplicate_system_name_prefix']` and
| suffix `config.defaults['duplicate_system_name_suffix']`.
|
| Returns
| -------
| `InputOutputSystem`
|
| find_input(self, name)
| Find the index for an input given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired input.
|
| Returns
| -------
| int
| Index of the named input.
|
| find_inputs(self, name_list)
| Return list of indices matching input spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired inputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified inputs.
|
| find_output(self, name)
| Find the index for a output given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired output.
|
| Returns
| -------
| int
| Index of the named output.
|
| find_outputs(self, name_list)
| Return list of indices matching output spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired outputs. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified outputs.
|
| find_state(self, name)
| Find the index for a state given its name (None if not found).
|
| Parameters
| ----------
| name : str
| Signal name for the desired state.
|
| Returns
| -------
| int
| Index of the named state.
|
| find_states(self, name_list)
| Return list of indices matching state spec (None if not found).
|
| Parameters
| ----------
| name_list : str or list of str
| List of signal specifications for the desired states. A
| signal can be described by its name or by a slice-like
| description of the form 'start:end` where 'start' and
| 'end' are signal names. If either is omitted, it is taken
| as the first or last signal, respectively.
|
| Returns
| -------
| list of int
| List of indices for the specified states..
|
| isctime(self, strict=False)
| Check to see if a system is a continuous-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| isdtime(self, strict=False)
| Check to see if a system is a discrete-time system.
|
| Parameters
| ----------
| strict : bool, optional
| If strict is True, make sure that timebase is not None. Default
| is False.
|
| issiso(self)
| Check to see if a system is single input, single output.
|
| set_inputs(self, inputs, prefix='u')
| Set the number/names of the system inputs.
|
| Parameters
| ----------
| inputs : int, list of str, or None
| Description of the system inputs. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'u[i]' (where the prefix 'u' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `inputs` is an integer, create the names of the states using
| the given prefix (default = 'u'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_outputs(self, outputs, prefix='y')
| Set the number/names of the system outputs.
|
| Parameters
| ----------
| outputs : int, list of str, or None
| Description of the system outputs. This can be given as an
| integer count or as a list of strings that name the individual
| signals. If an integer count is specified, the names of the
| signal will be of the form 'y[i]' (where the prefix 'y' can be
| changed using the optional prefix parameter).
| prefix : string, optional
| If `outputs` is an integer, create the names of the states using
| the given prefix (default = 'y'). The names of the input will be
| of the form 'prefix[i]'.
|
| set_states(self, states, prefix='x')
| Set the number/names of the system states.
|
| Parameters
| ----------
| states : int, list of str, or None
| Description of the system states. This can be given as an integer
| count or as a list of strings that name the individual signals.
| If an integer count is specified, the names of the signal will be
| of the form 'x[i]' (where the prefix 'x' can be changed using the
| optional prefix parameter).
| prefix : string, optional
| If `states` is an integer, create the names of the states using
| the given prefix (default = 'x'). The names of the input will be
| of the form 'prefix[i]'.
|
| update_names(self, **kwargs)
| update_names([name, inputs, outputs, states])
|
| Update signal and system names for an I/O system.
|
| Parameters
| ----------
| name : str, optional
| New system name.
| inputs : list of str, int, or None, optional
| List of strings that name the individual input signals. If
| given as an integer or None, signal names default to the form
| 'u[i]'. See `InputOutputSystem` for more information.
| outputs : list of str, int, or None, optional
| Description of output signals; defaults to 'y[i]'.
| states : int, list of str, int, or None, optional
| Description of system states; defaults to 'x[i]'.
| input_prefix : string, optional
| Set the prefix for input signals. Default = 'u'.
| output_prefix : string, optional
| Set the prefix for output signals. Default = 'y'.
| state_prefix : string, optional
| Set the prefix for state signals. Default = 'x'.
|
| ----------------------------------------------------------------------
| Readonly properties inherited from control.iosys.InputOutputSystem:
|
| shape
| 2-tuple of I/O system dimension, (noutputs, ninputs).
|
| ----------------------------------------------------------------------
| Data descriptors inherited from control.iosys.InputOutputSystem:
|
| __dict__
| dictionary for instance variables
|
| __weakref__
| list of weak references to the object
|
| input_labels
| List of labels for the input signals.
|
| output_labels
| List of labels for the output signals.
|
| repr_format
| String representation format.
|
| Format used in creating the representation for the system:
|
| * 'info' : <IOSystemType sysname: [inputs] -> [outputs]>
| * 'eval' : system specific, loadable representation
| * 'latex' : HTML/LaTeX representation of the object
|
| The default representation for an input/output is set to 'eval'.
| This value can be changed for an individual system by setting the
| `repr_format` parameter when the system is created or by setting
| the `repr_format` property after system creation. Set
| `config.defaults['iosys.repr_format']` to change for all I/O systems
| or use the `repr_format` parameter/attribute for a single system.
|
| state_labels
| List of labels for the state signals.
|
| ----------------------------------------------------------------------
| Data and other attributes inherited from control.iosys.InputOutputSystem:
|
| __array_priority__ = 20
|
| dt = None
|
| nstates = None
FUNCTIONS
ss2tf(*args, **kwargs)
ss2tf(sys)
Transform a state space system to a transfer function.
The function accepts either 1 or 4 parameters:
``ss2tf(sys)``
Convert a linear system from state space into transfer function
form. Always creates a new system.
``ss2tf(A, B, C, D)``
Create a transfer function system from the matrices of its state and
output equations.
For details see: `tf`.
Parameters
----------
sys : `StateSpace`
A linear system.
A : array_like or string
System matrix.
B : array_like or string
Control matrix.
C : array_like or string
Output matrix.
D : array_like or string
Feedthrough matrix.
**kwargs : keyword arguments
Additional arguments passed to `tf` (e.g., signal names).
Returns
-------
out : `TransferFunction`
New linear system in transfer function form.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If matrix sizes are not self-consistent, or if an invalid number of
arguments is passed in.
TypeError
If `sys` is not a `StateSpace` object.
See Also
--------
tf, ss, tf2ss
Examples
--------
>>> A = [[-1, -2], [3, -4]]
>>> B = [[5], [6]]
>>> C = [[7, 8]]
>>> D = [[9]]
>>> sys1 = ct.ss2tf(A, B, C, D)
>>> sys_ss = ct.ss(A, B, C, D)
>>> sys_tf = ct.ss2tf(sys_ss)
tf(*args, **kwargs)
tf(num, den[, dt])
Create a transfer function system. Can create MIMO systems.
The function accepts either 1, 2, or 3 parameters:
``tf(sys)``
Convert a linear system into transfer function form. Always creates
a new system, even if `sys` is already a `TransferFunction` object.
``tf(num, den)``
Create a transfer function system from its numerator and denominator
polynomial coefficients.
If `num` and `den` are 1D array_like objects, the function creates a
SISO system.
To create a MIMO system, `num` and `den` need to be 2D arrays of
of array_like objects (a 3 dimensional data structure in total;
for details see note below). If the denominator for all transfer
function is the same, `den` can be specified as a 1D array.
``tf(num, den, dt)``
Create a discrete-time transfer function system; dt can either be a
positive number indicating the sampling time or True if no
specific timebase is given.
``tf([[G11, ..., G1m], ..., [Gp1, ..., Gpm]][, dt])``
Create a p x m MIMO system from SISO transfer functions Gij. See
`combine_tf` for more details.
``tf('s')`` or ``tf('z')``
Create a transfer function representing the differential operator
('s') or delay operator ('z').
Parameters
----------
sys : `LTI` (`StateSpace` or `TransferFunction`)
A linear system that will be converted to a transfer function.
arr : 2D list of `TransferFunction`
2D list of SISO transfer functions to create MIMO transfer function.
num : array_like, or list of list of array_like
Polynomial coefficients of the numerator.
den : array_like, or list of list of array_like
Polynomial coefficients of the denominator.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None indicates
unspecified timebase (either continuous or discrete time).
display_format : None, 'poly' or 'zpk'
Set the display format used in printing the `TransferFunction` object.
Default behavior is polynomial display and can be changed by
changing `config.defaults['xferfcn.display_format']`.
Returns
-------
sys : `TransferFunction`
The new linear system.
Other Parameters
----------------
inputs, outputs : str, or list of str, optional
List of strings that name the individual signals of the transformed
system. If not given, the inputs and outputs are the same as the
original system.
input_prefix, output_prefix : string, optional
Set the prefix for input and output signals. Defaults = 'u', 'y'.
name : string, optional
System name. If unspecified, a generic name 'sys[id]' is generated
with a unique integer id.
Raises
------
ValueError
If `num` and `den` have invalid or unequal dimensions.
TypeError
If `num` or `den` are of incorrect type.
See Also
--------
TransferFunction, ss, ss2tf, tf2ss
Notes
-----
MIMO transfer functions are created by passing a 2D array of coefficients:
``num[i][j]`` contains the polynomial coefficients of the numerator
for the transfer function from the (j+1)st input to the (i+1)st output,
and ``den[i][j]`` works the same way.
The list ``[2, 3, 4]`` denotes the polynomial :math:`2 s^2 + 3 s + 4`.
The special forms ``tf('s')`` and ``tf('z')`` can be used to create
transfer functions for differentiation and unit delays.
Examples
--------
>>> # Create a MIMO transfer function object
>>> # The transfer function from the 2nd input to the 1st output is
>>> # (3s + 4) / (6s^2 + 5s + 4).
>>> num = [[[1., 2.], [3., 4.]], [[5., 6.], [7., 8.]]]
>>> den = [[[9., 8., 7.], [6., 5., 4.]], [[3., 2., 1.], [-1., -2., -3.]]]
>>> sys1 = ct.tf(num, den)
>>> # Create a variable 's' to allow algebra operations for SISO systems
>>> s = ct.tf('s')
>>> G = (s + 1)/(s**2 + 2*s + 1)
>>> # Convert a state space system to a transfer function:
>>> sys_ss = ct.ss([[1, -2], [3, -4]], [[5], [7]], [[6, 8]], 9)
>>> sys_tf = ct.tf(sys_ss)
tfdata(sys)
Return transfer function data objects for a system.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
LTI system whose data will be returned.
Returns
-------
num, den : numerator and denominator arrays
Transfer function coefficients (SISO only).
zpk(zeros, poles, gain, *args, **kwargs)
zpk(zeros, poles, gain[, dt])
Create a transfer function from zeros, poles, gain.
Given a list of zeros z_i, poles p_j, and gain k, return the transfer
function:
.. math::
H(s) = k \frac{(s - z_1) (s - z_2) \cdots (s - z_m)}
{(s - p_1) (s - p_2) \cdots (s - p_n)}
Parameters
----------
zeros : array_like
Array containing the location of zeros.
poles : array_like
Array containing the location of poles.
gain : float
System gain.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals. If this parameter
is not given or given as None, the signal names will be of the
form 's[i]' (where 's' is one of 'u', 'y', or 'x'). See
`InputOutputSystem` for more information.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
display_format : None, 'poly' or 'zpk', optional
Set the display format used in printing the `TransferFunction` object.
Default behavior is polynomial display and can be changed by
changing `config.defaults['xferfcn.display_format']`.
Returns
-------
out : `TransferFunction`
Transfer function with given zeros, poles, and gain.
Examples
--------
>>> G = ct.zpk([1], [2, 3], gain=1, display_format='zpk')
>>> print(G) # doctest: +SKIP
s - 1
---------------
(s - 2) (s - 3)
DATA
__all__ = ['TransferFunction', 'tf', 'zpk', 'ss2tf', 'tfdata']
FILE
c:\users\youse\appdata\local\programs\python\python312\lib\site-packages\control\xferfcn.py
control.zeros
Python Library Documentation: function zeros in module control.lti
zeros(sys)
Compute system zeros.
Parameters
----------
sys : `StateSpace` or `TransferFunction`
Linear system.
Returns
-------
zeros : ndarray
Array that contains the system's zeros.
See Also
--------
poles, StateSpace.zeros, TransferFunction.zeros
control.zpk
Python Library Documentation: function zpk in module control.xferfcn
zpk(zeros, poles, gain, *args, **kwargs)
zpk(zeros, poles, gain[, dt])
Create a transfer function from zeros, poles, gain.
Given a list of zeros z_i, poles p_j, and gain k, return the transfer
function:
.. math::
H(s) = k \frac{(s - z_1) (s - z_2) \cdots (s - z_m)}
{(s - p_1) (s - p_2) \cdots (s - p_n)}
Parameters
----------
zeros : array_like
Array containing the location of zeros.
poles : array_like
Array containing the location of poles.
gain : float
System gain.
dt : None, True or float, optional
System timebase. 0 (default) indicates continuous time, True
indicates discrete time with unspecified sampling time, positive
number is discrete time with specified sampling time, None
indicates unspecified timebase (either continuous or discrete time).
inputs, outputs, states : str, or list of str, optional
List of strings that name the individual signals. If this parameter
is not given or given as None, the signal names will be of the
form 's[i]' (where 's' is one of 'u', 'y', or 'x'). See
`InputOutputSystem` for more information.
name : string, optional
System name (used for specifying signals). If unspecified, a generic
name 'sys[id]' is generated with a unique integer id.
display_format : None, 'poly' or 'zpk', optional
Set the display format used in printing the `TransferFunction` object.
Default behavior is polynomial display and can be changed by
changing `config.defaults['xferfcn.display_format']`.
Returns
-------
out : `TransferFunction`
Transfer function with given zeros, poles, and gain.
Examples
--------
>>> G = ct.zpk([1], [2, 3], gain=1, display_format='zpk')
>>> print(G) # doctest: +SKIP
s - 1
---------------
(s - 2) (s - 3)