Searching#

class ivy.data_classes.container.searching._ContainerWithSearching(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, build_callable=False, **kwargs)[source]#

Bases: ContainerBase

_abc_impl = <_abc._abc_data object>#
static _static_argmax(x, /, *, axis=None, keepdims=False, dtype=None, select_last_index=False, out=None)[source]#

ivy.Container static method variant of ivy.argmax. This method simply wraps the function, and so the docstring for ivy.argmax also applies to this method with minimal changes.

Parameters:
  • x (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • axis (Optional[Union[int, Container]], default: None) – axis along which to search. If None, the function must return the index of the maximum value of the flattened array. Default: None.

  • keepdims (Union[bool, Container], default: False) – 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.

  • dtype (Optional[Union[Dtype, NativeDtype, Container]], default: None) – Optional data type of the output array.

  • out (Optional[Container], default: None) – If provided, the result will be inserted into this array. It should be of the appropriate shape and dtype.

Return type:

Container

Returns:

ret – a container containing the indices of the maximum values across the specified axis.

Examples

>>> x = ivy.Container(a=ivy.array([[4., 0., -1.], [2., -3., 6]]),        ...                   b=ivy.array([[1., 2., 3.], [1., 1., 1.]])
>>> y = ivy.Container.static_argmax(x, axis=1, keepdims=True)
>>> print(y)
{
    a: ivy.array([[0],
                  [2]]),
    b: ivy.array([[2],
                  [0]])
}
static _static_argmin(x, /, *, axis=None, keepdims=False, dtype=None, select_last_index=False, out=None)[source]#

ivy.Container static method variant of ivy.argmin. This method simply wraps the function, and so the docstring for ivy.argmin also applies to this method with minimal changes.

Parameters:
  • x (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • axis (Optional[Union[int, Container]], default: None) – axis along which to search. If None, the function must return the index of the minimum value of the flattened array. Default = None.

  • keepdims (Union[bool, Container], default: False) – if True, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see Broadcasting). Otherwise, if False, the reduced axes (dimensions) must not be included in the result. Default = False.

  • dtype (Optional[Union[int32, int64, Container]], default: None) – An optional output_dtype from: int32, int64. Defaults to int64.

  • out (Optional[Container], default: None) – optional output container, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Container

Returns:

ret – a container containing the indices of the minimum values across the specified axis.

Examples

>>> x = ivy.Container(a=ivy.array([[4., 0., -1.], [2., -3., 6]]),        ...                   b=ivy.array([[1., 2., 3.], [1., 1., 1.]])
>>> y = ivy.Container.static_argmin(axis=1, keepdims=True)
>>> print(y)
{
    a: ivy.array([[2],
                  [1]]),
    b: ivy.array([[0],
                  [0]])
}
static _static_argwhere(x, /, *, key_chains=None, to_apply=True, prune_unapplied=False, map_sequences=False, out=None)[source]#

ivy.Container static method variant of ivy.argwhere. This method simply wraps the function, and so the docstring for ivy.argwhere also applies to this method with minimal changes.

Parameters:
  • x (Container) – Boolean array, for which indices are desired.

  • key_chains (Optional[Union[List[str], Dict[str, str], Container]], default: None) – The key-chains to apply or not apply the method to. Default is None.

  • to_apply (Union[bool, Container], default: True) – If True, the method will be applied to key_chains, otherwise key_chains will be skipped. Default is True.

  • prune_unapplied (Union[bool, Container], default: False) – Whether to prune key_chains for which the function was not applied. Default is False.

  • map_sequences (Union[bool, Container], default: False) – Whether to also map method to sequences (lists, tuples). Default is False.

Return type:

Container

Returns:

ret – Indices for where the boolean array is True.

Examples

Using ivy.Container instance method

>>> x = ivy.Container(a=ivy.array([1, 2]), b=ivy.array([3, 4]))
>>> res = ivy.Container.static_argwhere(x)
>>> print(res)
{
    a: ivy.array([[0], [1]]),
    b: ivy.array([[0], [1]])
}
>>> x = ivy.Container(a=ivy.array([1, 0]), b=ivy.array([3, 4]))
>>> res = ivy.Container.static_argwhere(x)
>>> print(res)
{
    a: ivy.array([[0]]),
    b: ivy.array([[0], [1]])
}
static _static_nonzero(x, /, *, as_tuple=True, size=None, fill_value=0)[source]#

ivy.Container static method variant of ivy.nonzero. This method simply wraps the function, and so the docstring for ivy.nonzero also applies to this method with minimal changes.

Parameters:
  • x (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • as_tuple (Union[bool, Container], default: True) – if True, the output is returned as a tuple of indices, one for each dimension of the input, containing the indices of the true elements in that dimension. If False, the coordinates are returned in a (N, ndim) array, where N is the number of true elements. Default = True.

  • size (Optional[Union[int, Container]], default: None) – if specified, the function will return an array of shape (size, ndim). If the number of non-zero elements is fewer than size, the remaining elements will be filled with fill_value. Default = None.

  • fill_value (Union[Number, Container], default: 0) – when size is specified and there are fewer than size number of elements, the remaining elements in the output array will be filled with fill_value. Default = 0.

Return type:

Container

Returns:

ret – a container containing the indices of the nonzero values.

static _static_where(condition, x1, x2, /, *, out=None)[source]#

ivy.Container static method variant of ivy.where. This method simply wraps the function, and so the docstring for ivy.where also applies to this method with minimal changes.

Parameters:
  • condition (Union[Container, Array, NativeArray]) – input array or container. Should have a boolean data type.

  • x1 (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • x2 (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • out (Optional[Container], default: None) – optional output container, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Container

Returns:

ret – a container containing the values of x1 where condition is True, and x2 where condition is False.

Examples

>>> x1 = ivy.Container(a=ivy.array([3, 1, 5]), b=ivy.array([2, 4, 6]))
>>> x2 = ivy.Container(a=ivy.array([0, 7, 2]), b=ivy.array([3, 8, 5]))
>>> res = ivy.Container.static_where((x1.a > x2.a), x1, x2)
>>> print(res)
{
    a: ivy.array([3, 7, 5]),
    b: ivy.array([2, 8, 6])
}
argmax(*, axis=None, keepdims=False, dtype=None, select_last_index=False, out=None)[source]#

ivy.Container instance method variant of ivy.argmax. This method simply wraps the function, and so the docstring for ivy.argmax also applies to this method with minimal changes.

Parameters:
  • self (Container) – input array or container. Should have a numeric data type.

  • axis (Optional[Union[int, Container]], default: None) – axis along which to search. If None, the function must return the index of the maximum value of the flattened array. Default: None.

  • keepdims (Union[bool, Container], default: False) – 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.

  • dtype (Optional[Union[Dtype, NativeDtype, Container]], default: None) – Optional output dtype of the container.

  • out (Optional[Container], default: None) – If provided, the result will be inserted into this array. It should be of the appropriate shape and dtype.

Return type:

Container

Returns:

ret – a container containing the indices of the maximum values across the specified axis.

Examples

>>> a = ivy.array([[4., 0., -1.], [2., -3., 6]])
>>> b = ivy.array([[1., 2., 3.], [1., 1., 1.]])
>>> x = ivy.Container(a=a, b=b)
>>> y = x.argmax(axis=1, keepdims=True)
>>> print(y)
{
    a: ivy.array([[0],
                  [2]]),
    b: ivy.array([[2],
                  [0]])
}
argmin(*, axis=None, keepdims=False, dtype=None, select_last_index=False, out=None)[source]#

ivy.Container instance method variant of ivy.argmin. This method simply wraps the function, and so the docstring for ivy.argmin also applies to this method with minimal changes.

Parameters:
  • self (Container) – input array or container. Should have a numeric data type.

  • axis (Optional[Union[int, Container]], default: None) – axis along which to search. If None, the function must return the index of the minimum value of the flattened array. Default = None.

  • keepdims (Union[bool, Container], default: False) – if True, the reduced axes (dimensions) must be included in the result as singleton dimensions, and, accordingly, the result must be compatible with the input array (see Broadcasting). Otherwise, if False, the reduced axes (dimensions) must not be included in the result. Default = False.

  • dtype (Optional[Union[Dtype, NativeDtype, Container]], default: None) – An optional output_dtype from: int32, int64. Defaults to int64.

  • out (Optional[Container], default: None) – optional output container, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Container

Returns:

ret – a container containing the indices of the minimum values across the specified axis.

Examples

Using ivy.Container instance method:

>>> x = ivy.Container(a=ivy.array([0., -1., 2.]), b=ivy.array([3., 4., 5.]))
>>> y = x.argmin()
>>> print(y)
{
    a: ivy.array(1),
    b: ivy.array(0)
}
>>> x = ivy.Container(a=ivy.array([[4., 0., -1.], [2., -3., 6]]),
...                   b=ivy.array([[1., 2., 3.], [1., 1., 1.]]))
>>> y = x.argmin(axis=1, keepdims=True)
>>> print(y)
{
    a: ivy.array([[2],
                  [1]]),
    b: ivy.array([[0],
                  [0]])
}
argwhere(*, key_chains=None, to_apply=True, prune_unapplied=False, map_sequences=False, out=None)[source]#

ivy.Container instance method variant of ivy.argwhere. This method simply wraps the function, and so the docstring for ivy.argwhere also applies to this method with minimal changes.

Parameters:
  • self (Container) – Boolean array, for which indices are desired.

  • key_chains (Optional[Union[List[str], Dict[str, str], Container]], default: None) – The key-chains to apply or not apply the method to. Default is None.

  • to_apply (Union[bool, Container], default: True) – If True, the method will be applied to key_chains, otherwise key_chains will be skipped. Default is True.

  • prune_unapplied (Union[bool, Container], default: False) – Whether to prune key_chains for which the function was not applied. Default is False.

  • map_sequences (Union[bool, Container], default: False) – Whether to also map method to sequences (lists, tuples). Default is False.

Returns:

ret – Indices for where the boolean array is True.

Examples

Using ivy.Container instance method

>>> x = ivy.Container(a=ivy.array([1, 2]), b=ivy.array([3, 4]))
>>> res = x.argwhere()
>>> print(res)
{
    a: ivy.array([[0], [1]]),
    b: ivy.array([[0], [1]])
}
>>> x = ivy.Container(a=ivy.array([1, 0]), b=ivy.array([3, 4]))
>>> res = x.argwhere()
>>> print(res)
{
    a: ivy.array([[0]]),
    b: ivy.array([[0], [1]])
}
nonzero(*, as_tuple=True, size=None, fill_value=0)[source]#

ivy.Container instance method variant of ivy.nonzero. This method simply wraps the function, and so the docstring for ivy.nonzero also applies to this method with minimal changes.

Parameters:
  • self (Container) – input array or container. Should have a numeric data type.

  • as_tuple (Union[bool, Container], default: True) – if True, the output is returned as a tuple of indices, one for each dimension of the input, containing the indices of the true elements in that dimension. If False, the coordinates are returned in a (N, ndim) array, where N is the number of true elements. Default = True.

  • size (Optional[Union[int, Container]], default: None) – if specified, the function will return an array of shape (size, ndim). If the number of non-zero elements is fewer than size, the remaining elements will be filled with fill_value. Default = None.

  • fill_value (Union[Number, Container], default: 0) – when size is specified and there are fewer than size number of elements, the remaining elements in the output array will be filled with fill_value. Default = 0.

Return type:

Container

Returns:

ret – a container containing the indices of the nonzero values.

where(x1, x2, /, *, out=None)[source]#

ivy.Container instance method variant of ivy.where. This method simply wraps the function, and so the docstring for ivy.where also applies to this method with minimal changes.

Parameters:
  • self (Container) – input array or container. Should have a boolean data type.

  • x1 (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • x2 (Union[Container, Array, NativeArray]) – input array or container. Should have a numeric data type.

  • out (Optional[Container], default: None) – optional output container, for writing the result to. It must have a shape that the inputs broadcast to.

Return type:

Container

Returns:

ret – a container containing the values of x1 where condition is True, and x2 where condition is False.

Examples

>>> x1 = ivy.Container(a=ivy.array([3, 1, 5]), b=ivy.array([2, 4, 6]))
>>> x2 = ivy.Container(a=ivy.array([0, 7, 2]), b=ivy.array([3, 8, 5]))
>>> res = x1.where((x1.a > x2.a), x2)
>>> print(res)
{
    a: ivy.array([1, 0, 1]),
    b: ivy.array([1, 0, 1])
}

This should have hopefully given you an overview of the searching submodule, if you have any questions, please feel free to reach out on our discord!