Container#
- class ivy.data_classes.container.container.Container(dict_in=None, queues=None, queue_load_sizes=None, container_combine_method='list_join', queue_timeout=None, print_limit=10, key_length_limit=None, print_indent=4, print_line_spacing=0, ivyh=None, default_key_color='green', keyword_color_dict=None, rebuild_child_containers=False, types_to_iteratively_nest=None, alphabetical_keys=True, dynamic_backend=None, **kwargs)[source]#
Bases:
_ContainerWithActivations
,_ContainerWithConversions
,_ContainerWithCreation
,_ContainerWithDataTypes
,_ContainerWithDevice
,_ContainerWithElementwise
,_ContainerWithGeneral
,_ContainerWithGradients
,_ContainerWithImage
,_ContainerWithLayers
,_ContainerWithLinearAlgebra
,_ContainerWithLosses
,_ContainerWithManipulation
,_ContainerWithNorms
,_ContainerWithRandom
,_ContainerWithSearching
,_ContainerWithSet
,_ContainerWithSorting
,_ContainerWithStatistical
,_ContainerWithUtility
,_ContainerWithActivationExperimental
,_ContainerWithConversionExperimental
,_ContainerWithCreationExperimental
,_ContainerWithData_typeExperimental
,_ContainerWithDeviceExperimental
,_ContainerWithElementWiseExperimental
,_ContainerWithGeneralExperimental
,_ContainerWithGradientsExperimental
,_ContainerWithImageExperimental
,_ContainerWithLayersExperimental
,_ContainerWithLinearAlgebraExperimental
,_ContainerWithManipulationExperimental
,_ContainerWithNormsExperimental
,_ContainerWithRandomExperimental
,_ContainerWithSearchingExperimental
,_ContainerWithSetExperimental
,_ContainerWithSortingExperimental
,_ContainerWithStatisticalExperimental
,_ContainerWithUtilityExperimental
,_ContainerWithLossesExperimental
- __abs__()[source]#
ivy.Container special method for the abs operator, calling
operator.abs
for each of the corresponding leaves of the two containers.- Parameters:
self – input Container. Should have leaves with numeric data type.
- Returns:
ret – A container containing the element-wise results.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([1, -2, 3]), ... b=ivy.array([-1, 0, 5])) >>> y = abs(x) >>> print(y) { a: ivy.array([1, 2, 3]), b: ivy.array([1, 0, 5]) }
- __add__(other)[source]#
ivy.Container special method for the add operator, calling
operator.add
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have a numeric data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise sums. The returned array must have a data type determined by type-promotion.
Examples
With
Number
instances at the leaves:>>> x = ivy.Container(a=1, b=2) >>> y = ivy.Container(a=3, b=4) >>> z = x + y >>> print(z) { a: 4, b: 6 }
With
ivy.Array
instances at the leaves:>>> x = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([2, 3, 4])) >>> y = ivy.Container(a=ivy.array([4, 5, 6]), ... b=ivy.array([5, 6, 7])) >>> z = x + y >>> print(z) { a: ivy.array([5, 7, 9]), b: ivy.array([7, 9, 11]) }
With a mix of
ivy.Container
andivy.Array
instances:>>> x = ivy.Container(a=ivy.array([[4.], [5.], [6.]]), ... b=ivy.array([[5.], [6.], [7.]])) >>> y = ivy.array([[1.1, 2.3, -3.6]]) >>> z = x + y >>> print(z) { a: ivy.array([[5.1, 6.3, 0.4], [6.1, 7.3, 1.4], [7.1, 8.3, 2.4]]), b: ivy.array([[6.1, 7.3, 1.4], [7.1, 8.3, 2.4], [8.1, 9.3, 3.4]]) }
- __eq__(other)[source]#
ivy.Container special method for the equal operator, calling
operator.eq
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x1 = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([1, 3, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([1, 4, 5])) >>> y = x1 == x2 >>> print(y) { a: ivy.array([True, True, True]), b: ivy.array([True, False, True]) }
>>> x1 = ivy.Container(a=ivy.array([1.0, 2.0, 3.0]), ... b=ivy.array([1, 4, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 3, 3.0]), ... b=ivy.array([1.0, 4.0, 5.0])) >>> y = x1 == x2 >>> print(y) { a: ivy.array([True, False, True]), b: ivy.array([True, True, True]) }
>>> x1 = ivy.Container(a=ivy.array([1.0, 2.0, 3.0]), ... b=ivy.array([1, 4, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 2, 3.0]), ... b=ivy.array([1.0, 4.0, 5.0])) >>> y = x1 == x2 >>> print(y) { a: ivy.array([True, True, True]), b: ivy.array([True, True, True]) }
- __ge__(other)[source]#
ivy.Container special method for the greater_equal operator, calling
operator.ge
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([4, 5, 6]),b=ivy.array([2, 3, 4])) >>> y = ivy.Container(a=ivy.array([1, 5, 3]),b=ivy.array([5, 3, 7])) >>> z = x >= y >>> print(z) { a:ivy.array([True,True,True]), b:ivy.array([False,True,False]) }
- __gt__(other)[source]#
ivy.Container special method for the greater operator, calling
operator.gt
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([4, 5, 6]),b=ivy.array([2, 3, 4])) >>> y = ivy.Container(a=ivy.array([1, 5, 3]),b=ivy.array([5, 3, 7])) >>> z = x > y >>> print(z) { a:ivy.array([True,False,True]), b:ivy.array([False,False,False]) }
- __init__(dict_in=None, queues=None, queue_load_sizes=None, container_combine_method='list_join', queue_timeout=None, print_limit=10, key_length_limit=None, print_indent=4, print_line_spacing=0, ivyh=None, default_key_color='green', keyword_color_dict=None, rebuild_child_containers=False, types_to_iteratively_nest=None, alphabetical_keys=True, dynamic_backend=None, **kwargs)[source]#
Initialize container object from input dict representation.
- Parameters:
dict_in (default:
None
) – the dictionary the container should wrap around. Default isNone
.queues (default:
None
) – Sequence of multiprocessing queues, each of which returns containers. This enables the current container to be passed around asynchronously while waiting for data. Default isNone
.queue_load_sizes (default:
None
) – Size of leading dimension of the containers returned by each queue. Default isNone
.container_combine_method (default:
'list_join'
) – The method to use for combining containers arriving from different queues. Default is ivy.Container.cont_list_joinqueue_timeout (default:
None
) – The timeout when waiting for containers to arrive from the queues. Default is global.print_limit (default:
10
) – The total array size limit when printing the container. Default is 10.key_length_limit (default:
None
) – The maximum key length when printing the container. Default isNone
.print_indent (default:
4
) – The number of whitespaces to use for indenting when printing the container. Default is 4.print_line_spacing (default:
0
) – The number of extra newlines to use between keys when printing the container. Default is0
.ivyh (default:
None
) – Handle to ivy module to use for the calculations. Default isNone
, which results in the global ivy.default_key_color (default:
'green'
) – The default key color for printing the container to the terminal. Default is ‘green’.rebuild_child_containers (default:
False
) – Whether to rebuild container found in dict_in with these constructor params. Default isFalse
, in which case the original container are kept as are.build_callable – Whether to treat functions encountered at leaf nodes as further instructions to build the container
types_to_iteratively_nest (default:
None
) – The data types to nest iteratively in the dict structure, each type must be iterable. Default isNone
.alphabetical_keys (default:
True
) – Whether to sort the container keys alphabetically, or preserve the dict order. Default isTrue
.kwargs – keyword arguments for dict creation. Default is
None
.
- __le__(other)[source]#
ivy.Container special method for the less_equal operator, calling
operator.le
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([4, 5, 6]),b=ivy.array([2, 3, 4])) >>> y = ivy.Container(a=ivy.array([1, 5, 3]),b=ivy.array([5, 3, 7])) >>> z = x <= y >>> print(z) { a: ivy.array([False, True, False]), b: ivy.array([True, True, True]) }
- __lt__(other)[source]#
ivy.Container special method for the less operator, calling
operator.lt
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([4, 5, 6]),b=ivy.array([2, 3, 4])) >>> y = ivy.Container(a=ivy.array([1, 5, 3]),b=ivy.array([5, 3, 7])) >>> z = x < y >>> print(z) { a: ivy.array([False, False, False]), b: ivy.array([True, False, True]) }
- __ne__(other)[source]#
ivy.Container special method for the not_equal operator, calling
operator.ne
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container. May have any data type.
other – second input Container. Must be compatible with x1 (with Broadcasting). May have any data type.
- Returns:
ret – A container containing the element-wise results. Any returned array inside must have a data type of bool.
Examples
With
ivy.Container
instances:>>> x1 = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([1, 3, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([1, 4, 5])) >>> y = x1 != x2 >>> print(y) { a: ivy.array([False, False, False]), b: ivy.array([False, True, False]) }
>>> x1 = ivy.Container(a=ivy.array([1.0, 2.0, 3.0]), ... b=ivy.array([1, 4, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 3, 3.0]), ... b=ivy.array([1.0, 4.0, 5.0])) >>> y = x1 != x2 >>> print(y) { a: ivy.array([False, True, False]), b: ivy.array([False, False, False]) }
>>> x1 = ivy.Container(a=ivy.array([1.0, 2.0, 3.0]), ... b=ivy.array([1, 4, 5])) >>> x2 = ivy.Container(a=ivy.array([1, 2, 3.0]), ... b=ivy.array([1.0, 4.0, 5.0])) >>> y = x1 != x2 >>> print(y) { a: ivy.array([False, False, False]), b: ivy.array([False, False, False]) }
- __pow__(power)[source]#
ivy.Container special method for the power operator, calling
operator.pow
for each of the corresponding leaves of the two containers.- Parameters:
self – input container. Should have a numeric data type.
power – input array or container of powers. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise sums. The returned array must have a data type determined by type-promotion.
Examples
With
ivy.Container
input:>>> x = ivy.Container(a=ivy.array([0, 1]), b=ivy.array([2, 3])) >>> y = x ** 2 >>> print(y) { a: ivy.array([0, 1]), b: ivy.array([4, 9]) } >>> x = ivy.Container(a=ivy.array([0, 1.2]), b=ivy.array([2.2, 3.])) >>> y = x ** 3.1 >>> print(y) { a: ivy.array([0., 1.75979435]), b: ivy.array([11.52153397, 30.13532257]) }
- __radd__(other)[source]#
ivy.Container reverse special method for the add operator, calling
operator.add
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have a numeric data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise sums. The returned array must have a data type determined by type-promotion.
Examples
>>> x = 1 >>> y = ivy.Container(a=3, b=4) >>> z = x + y >>> print(z) { a: 4, b: 5 }
- __rrshift__(other)[source]#
ivy.Container reverse special method for the right shift operator, calling
operator.rshift
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have an integer data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have an integer data type. Each element must be greater than or equal to0
.
- Returns:
ret – a container containing the element-wise results. The returned array must have a data type determined by type-promotion.
Examples
>>> a = 64 >>> b = ivy.Container(a = ivy.array([0, 1, 2]), ... b = ivy.array([3, 4, 5])) >>> y = a >> b >>> print(y) { a: ivy.array([64, 32, 16]), b: ivy.array([8, 4, 2]) }
- __rshift__(other)[source]#
ivy.Container special method for the right shift operator, calling
operator.rshift
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have an integer data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have an integer data type. Each element must be greater than or equal to0
.
- Returns:
ret – a container containing the element-wise results. The returned array must have a data type determined by type-promotion.
Examples
With
Number
instances at the leaves:>>> x = ivy.Container(a=128, b=43) >>> y = ivy.Container(a=5, b=3) >>> z = x >> y >>> print(z) { a: 4, b: 5 }
With
ivy.Array
instances at the leaves:>>> x = ivy.Container(a=ivy.array([16, 40, 120]), ... b=ivy.array([15, 45, 143])) >>> y = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([0, 3, 4])) >>> z = x >> y >>> print(z) { a: ivy.array([8, 10, 15]), b: ivy.array([15, 5, 8]) }
With a mix of
ivy.Container
andivy.Array
instances:>>> x = ivy.Container(a=ivy.array([16, 40, 120]), ... b=ivy.array([15, 45, 143])) >>> y = ivy.array([1, 2, 3]) >>> z = x >> y >>> print(z) { a: ivy.array([8, 10, 15]), b: ivy.array([7, 11, 17]) }
- __rsub__(other)[source]#
ivy.Container reverse special method for the subtract operator, calling
operator.sub
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have a numeric data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise differences. The returned array must have a data type determined by type-promotion.
Examples
>>> x = 1 >>> y = ivy.Container(a=3, b=4) >>> z = x - y >>> print(z) { a: -2, b: -3 }
- __sub__(other)[source]#
ivy.Container special method for the subtract operator, calling
operator.sub
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have a numeric data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise differences. The returned array must have a data type determined by type-promotion.
Examples
With
Number
instances at the leaves:>>> x = ivy.Container(a=1, b=2) >>> y = ivy.Container(a=3, b=4) >>> z = x - y >>> print(z) { a: -2, b: -2 }
With
ivy.Array
instances at the leaves:>>> x = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([4, 3, 2])) >>> y = ivy.Container(a=ivy.array([4, 5, 6]), ... b=ivy.array([6, 5, 4])) >>> z = x - y >>> print(z) { a: ivy.array([-3, -3, -3]), b: ivy.array([-2, -2, -2]) }
With a mix of
ivy.Container
andivy.Array
instances:>>> x = ivy.Container(a=ivy.array([[4.], [5.], [6.]]), ... b=ivy.array([[5.], [6.], [7.]])) >>> y = ivy.array([[1.1, 2.3, -3.6]]) >>> z = x - y >>> print(z) { a: ivy.array([[2.9, 1.7, 7.6], [3.9, 2.7, 8.6], [4.9, 3.7, 9.6]]), b: ivy.array([[3.9, 2.7, 8.6], [4.9, 3.7, 9.6], [5.9, 4.7, 10.6]]) }
- __truediv__(other)[source]#
ivy.Container special method for the divide operator, calling
operator.truediv
for each of the corresponding leaves of the two containers.- Parameters:
self – first input container. Should have a numeric data type.
other – second input array or container. Must be compatible with
self
(see broadcasting). Should have a numeric data type.
- Returns:
ret – a container containing the element-wise differences. The returned array must have a data type determined by type-promotion.
Examples
With
Number
instances at the leaves:>>> x = ivy.Container(a=1, b=2) >>> y = ivy.Container(a=5, b=4) >>> z = x / y >>> print(z) { a: 0.2, b: 0.5 }
With
ivy.Array
instances at the leaves:>>> x = ivy.Container(a=ivy.array([1, 2, 3]), ... b=ivy.array([4, 3, 2])) >>> y = ivy.Container(a=ivy.array([4, 5, 6]), ... b=ivy.array([6, 5, 4])) >>> z = x / y >>> print(z) { a: ivy.array([0.25, 0.40000001, 0.5]), b: ivy.array([0.66666669, 0.60000002, 0.5]) }
- __xor__(other)[source]#
ivy.Container special method for the ge operator, calling
operator.ge
for each of the corresponding leaves of the two containers.- Parameters:
self – first input Container.
other – second input Container. Arrays inside must be compatible with
x1
(see broadcasting). Should have an integer or boolean data type.
- Returns:
ret – a container containing the element-wise results. Any returned arrays inside must have a data type determined by type-promotion.
Examples
With
ivy.Container
instances:>>> x = ivy.Container(a=ivy.array([89]), b=ivy.array([2])) >>> y = ivy.Container(a=ivy.array([12]), b=ivy.array([3])) >>> z = x ^ y >>> print(z) { a: ivy.array([85]), b: ivy.array([1]) }
This should have hopefully given you an overview of the container submodule, if you have any questions, please feel free to reach out on our discord!