colour.continuous.MultiSignals¶
-
class
colour.continuous.
MultiSignals
(data=None, domain=None, labels=None, **kwargs)[source]¶ Defines the base class for multi-continuous signals, a container for multiple
colour.continuous.Signal
sub-class instances.- Parameters
data (Series or Dataframe or Signal or MultiSignals or array_like or dict_like, optional) – Data to be stored in the multi-continuous signals.
domain (array_like, optional) – Values to initialise the multiple
colour.continuous.Signal
sub-class instancescolour.continuous.Signal.domain
attribute with. If bothdata
anddomain
arguments are defined, the latter will be used to initialise thecolour.continuous.Signal.domain
attribute.labels (array_like, optional) – Names to use for the
colour.continuous.Signal
sub-class instances.
- Other Parameters
name (unicode, optional) – multi-continuous signals name.
dtype (type, optional) – {np.float16, np.float32, np.float64, np.float128}, Floating point data type.
interpolator (object, optional) – Interpolator class type to use as interpolating function for the
colour.continuous.Signal
sub-class instances.interpolator_args (dict_like, optional) – Arguments to use when instantiating the interpolating function of the
colour.continuous.Signal
sub-class instances.extrapolator (object, optional) – Extrapolator class type to use as extrapolating function for the
colour.continuous.Signal
sub-class instances.extrapolator_args (dict_like, optional) – Arguments to use when instantiating the extrapolating function of the
colour.continuous.Signal
sub-class instances.signal_type (type, optional) – The
colour.continuous.Signal
sub-class type used for instances.
-
dtype
¶
-
domain
¶
-
range
¶
-
interpolator
¶
-
interpolator_args
¶
-
extrapolator
¶
-
extrapolator_args
¶
-
function
¶
-
signals
¶
-
labels
¶
-
signal_type
¶
Examples
Instantiation with implicit domain and a single signal:
>>> range_ = np.linspace(10, 100, 10) >>> print(MultiSignals(range_)) [[ 0. 10.] [ 1. 20.] [ 2. 30.] [ 3. 40.] [ 4. 50.] [ 5. 60.] [ 6. 70.] [ 7. 80.] [ 8. 90.] [ 9. 100.]]
Instantiation with explicit domain and a single signal:
>>> domain = np.arange(100, 1100, 100) >>> print(MultiSignals(range_, domain)) [[ 100. 10.] [ 200. 20.] [ 300. 30.] [ 400. 40.] [ 500. 50.] [ 600. 60.] [ 700. 70.] [ 800. 80.] [ 900. 90.] [ 1000. 100.]]
Instantiation with multiple signals:
>>> range_ = tstack([np.linspace(10, 100, 10)] * 3) >>> range_ += np.array([0, 10, 20]) >>> print(MultiSignals(range_, domain)) [[ 100. 10. 20. 30.] [ 200. 20. 30. 40.] [ 300. 30. 40. 50.] [ 400. 40. 50. 60.] [ 500. 50. 60. 70.] [ 600. 60. 70. 80.] [ 700. 70. 80. 90.] [ 800. 80. 90. 100.] [ 900. 90. 100. 110.] [ 1000. 100. 110. 120.]]
Instantiation with a dict:
>>> print(MultiSignals(dict(zip(domain, range_)))) [[ 100. 10. 20. 30.] [ 200. 20. 30. 40.] [ 300. 30. 40. 50.] [ 400. 40. 50. 60.] [ 500. 50. 60. 70.] [ 600. 60. 70. 80.] [ 700. 70. 80. 90.] [ 800. 80. 90. 100.] [ 900. 90. 100. 110.] [ 1000. 100. 110. 120.]]
Instantiation using a Signal sub-class:
>>> class NotSignal(Signal): ... pass
>>> multi_signals = MultiSignals(range_, domain, signal_type=NotSignal) >>> print(multi_signals) [[ 100. 10. 20. 30.] [ 200. 20. 30. 40.] [ 300. 30. 40. 50.] [ 400. 40. 50. 60.] [ 500. 50. 60. 70.] [ 600. 60. 70. 80.] [ 700. 70. 80. 90.] [ 800. 80. 90. 100.] [ 900. 90. 100. 110.] [ 1000. 100. 110. 120.]] >>> type(multi_signals.signals[0]) <class 'multi_signals.NotSignal'>
Instantiation with a Pandas Series:
>>> if is_pandas_installed(): ... from pandas import Series ... print(MultiSignals( ... Series(dict(zip(domain, np.linspace(10, 100, 10)))))) [[ 100. 10.] [ 200. 20.] [ 300. 30.] [ 400. 40.] [ 500. 50.] [ 600. 60.] [ 700. 70.] [ 800. 80.] [ 900. 90.] [ 1000. 100.]]
Instantiation with a Pandas Dataframe:
>>> if is_pandas_installed(): ... from pandas import DataFrame ... data = dict(zip(['a', 'b', 'c'], tsplit(range_))) ... print(MultiSignals( ... DataFrame(data, domain))) [[ 100. 10. 20. 30.] [ 200. 20. 30. 40.] [ 300. 30. 40. 50.] [ 400. 40. 50. 60.] [ 500. 50. 60. 70.] [ 600. 60. 70. 80.] [ 700. 70. 80. 90.] [ 800. 80. 90. 100.] [ 900. 90. 100. 110.] [ 1000. 100. 110. 120.]]
Retrieving domain y variable for arbitrary range x variable:
>>> x = 150 >>> range_ = tstack([np.sin(np.linspace(0, 1, 10))] * 3) >>> range_ += np.array([0.0, 0.25, 0.5]) >>> MultiSignals(range_, domain)[x] array([ 0.0359701..., 0.2845447..., 0.5331193...]) >>> x = np.linspace(100, 1000, 3) >>> MultiSignals(range_, domain)[x] array([[ 4.4085384...e-20, 2.5000000...e-01, 5.0000000...e-01], [ 4.7669395...e-01, 7.2526859...e-01, 9.7384323...e-01], [ 8.4147098...e-01, 1.0914709...e+00, 1.3414709...e+00]])
Using an alternative interpolating function:
>>> x = 150 >>> from colour.algebra import CubicSplineInterpolator >>> MultiSignals( ... range_, ... domain, ... interpolator=CubicSplineInterpolator)[x] array([ 0.0555274..., 0.3055274..., 0.5555274...]) >>> x = np.linspace(100, 1000, 3) >>> MultiSignals( ... range_, ... domain, ... interpolator=CubicSplineInterpolator)[x] array([[ 0. ..., 0.25 ..., 0.5 ...], [ 0.4794253..., 0.7294253..., 0.9794253...], [ 0.8414709..., 1.0914709..., 1.3414709...]])
-
__init__
(data=None, domain=None, labels=None, **kwargs)[source]¶ Initialize self. See help(type(self)) for accurate signature.
Methods
__init__
([data, domain, labels])Initialize self.
arithmetical_operation
(a, operation[, in_place])Performs given arithmetical operation with \(a\) operand, the operation can be either performed on a copy or in-place.
copy
()Returns a copy of the sub-class instance.
domain_distance
(a)Returns the euclidean distance between given array and independent domain \(x\) closest element.
fill_nan
([method, default])Fill NaNs in independent domain \(x\) variable and corresponding range \(y\) variable using given method.
is_uniform
()Returns if independent domain \(x\) variable is uniform.
multi_signals_unpack_data
([data, domain, …])Unpack given data for multi-continuous signals instantiation.
Converts the continuous signal to a Pandas
DataFrame
class instance.Attributes
Getter and setter property for the
colour.continuous.Signal
sub-class instances independent domain \(x\) variable.Getter and setter property for the continuous signal dtype.
Getter and setter property for the
colour.continuous.Signal
sub-class instances extrapolator type.Getter and setter property for the
colour.continuous.Signal
sub-class instances extrapolator instantiation time arguments.Getter and setter property for the
colour.continuous.Signal
sub-class instances callable.Getter and setter property for the
colour.continuous.Signal
sub-class instances interpolator type.Getter and setter property for the
colour.continuous.Signal
sub-class instances interpolator instantiation time arguments.Getter and setter property for the
colour.continuous.Signal
sub-class instances name.name
Getter and setter property for the abstract continuous function name.
Getter and setter property for the
colour.continuous.Signal
sub-class instances corresponding range \(y\) variable.Getter and setter property for the
colour.continuous.Signal
sub-class instances type.Getter and setter property for the
colour.continuous.Signal
sub-class instances.