# arrayfire.algorithm module

Vector algorithms (sum, min, sort, etc).

`arrayfire.algorithm.``accum`(a, dim=0)

  Cumulative sum of an array along a specified dimension

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: 0

  > Dimension along which the cumulative sum is required.

  Returns:

  out: af.Array

  > array of same size as a containing the cumulative sum along dim.

`arrayfire.algorithm.``all_true`(a, dim=None)

  Check if all the elements along a specified dimension are true.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the product is required.

  Returns:

  out: af.Array or scalar number

  > Af.array containing True if all elements in a along the dimension are True. If dim is None, output is True if a does not have any zeros, else False.

`arrayfire.algorithm.``any_true`(a, dim=None)

  Check if any the elements along a specified dimension are true.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the product is required.

  Returns:

  out: af.Array or scalar number

  > Af.array containing True if any elements in a along the dimension are True. If dim is None, output is True if a does not have any zeros, else False.

`arrayfire.algorithm.``count`(a, dim=None)

  Count the number of non zero elements in an array along a specified dimension.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the the non zero elements are to be counted.

  Returns:

  out: af.Array or scalar number

  > The count of non zero elements in a along dim. If dim is None, the total number of non zero elements in a.

`arrayfire.algorithm.``diff1`(a, dim=0)

  Find the first order differences along specified dimensions

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: 0

  > Dimension along which the differences are required.

  Returns:

  out: af.Array

  > Array whose length along dim is 1 less than that of a.

`arrayfire.algorithm.``diff2`(a, dim=0)

  Find the second order differences along specified dimensions

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: 0

  > Dimension along which the differences are required.

  Returns:

  out: af.Array

  > Array whose length along dim is 2 less than that of a.

`arrayfire.algorithm.``imax`(a, dim=None)

  Find the value and location of the maximum value along a specified dimension

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the maximum value is required.

  Returns:

  (val, idx): tuple of af.Array or scalars

  > val contains the maximum value of a along dim. idx contains the location of where val occurs in a along dim. If dim is None, val and idx value and location of global maximum.

`arrayfire.algorithm.``imin`(a, dim=None)

  Find the value and location of the minimum value along a specified dimension

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the minimum value is required.

  Returns:

  (val, idx): tuple of af.Array or scalars

  > val contains the minimum value of a along dim. idx contains the location of where val occurs in a along dim. If dim is None, val and idx value and location of global minimum.

`arrayfire.algorithm.``max`(a, dim=None)

  Find the maximum value of all the elements along a specified dimension.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the maximum value is required.

  Returns:

  out: af.Array or scalar number

  > The maximum value of all elements in a along dimension dim. If dim is None, maximum value of the entire Array is returned.

`arrayfire.algorithm.``min`(a, dim=None)

  Find the minimum value of all the elements along a specified dimension.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the minimum value is required.

  Returns:

  out: af.Array or scalar number

  > The minimum value of all elements in a along dimension dim. If dim is None, minimum value of the entire Array is returned.

`arrayfire.algorithm.``product`(a, dim=None, nan_val=None)

  Calculate the product of all the elements along a specified dimension.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the product is required.

  nan_val: optional: scalar. default: None

  > The value that replaces NaN in the array

  Returns:

  out: af.Array or scalar number

  > The product of all elements in a along dimension dim. If dim is None, product of the entire Array is returned.

`arrayfire.algorithm.``set_intersect`(a, b, is_unique=False)

  Find the intersect of two arrays.

  Parameters:

  a : af.Array

  > A 1D arrayfire array.

  b : af.Array

  > A 1D arrayfire array.

  is_unique: optional: bool. default: False

  > Specifies if the both inputs contain unique elements.

  Returns:

  out: af.Array

  > an array values after performing the intersect of a and b.

`arrayfire.algorithm.``set_union`(a, b, is_unique=False)

  Find the union of two arrays.

  Parameters:

  a : af.Array

  > A 1D arrayfire array.

  b : af.Array

  > A 1D arrayfire array.

  is_unique: optional: bool. default: False

  > Specifies if the both inputs contain unique elements.

  Returns:

  out: af.Array

  > an array values after performing the union of a and b.

`arrayfire.algorithm.``set_unique`(a, is_sorted=False)

  Find the unique elements of an array.

  Parameters:

  a : af.Array

  > A 1D arrayfire array.

  is_sorted: optional: bool. default: False

  > Specifies if the input is pre-sorted.

  Returns:

  out: af.Array

  > an array containing the unique values from a

`arrayfire.algorithm.``sort`(a, dim=0, is_ascending=True)

  Sort the array along a specified dimension

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: 0

  > Dimension along which sort is to be performed.

  is_ascending: optional: bool. default: True

  > Specifies the direction of the sort

  Returns:

  out: af.Array

  > array containing the sorted values

`arrayfire.algorithm.``sort_by_key`(iv, ik, dim=0, is_ascending=True)

  Sort an array based on specified keys

  Parameters:

  iv : af.Array

  > An Array containing the values

  ik : af.Array

  > An Array containing the keys

  dim: optional: int. default: 0

  > Dimension along which sort is to be performed.

  is_ascending: optional: bool. default: True

  > Specifies the direction of the sort

  Returns:

  (ov, ok): tuple of af.Array

  > ov contains the values from iv after sorting them based on ik ok contains the values from ik in sorted order

`arrayfire.algorithm.``sort_index`(a, dim=0, is_ascending=True)

  Sort the array along a specified dimension and get the indices.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: 0

  > Dimension along which sort is to be performed.

  is_ascending: optional: bool. default: True

  > Specifies the direction of the sort

  Returns:

  (val, idx): tuple of af.Array

  > val is an af.Array containing the sorted values. idx is an af.Array containing the original indices of val in a.

`arrayfire.algorithm.``sum`(a, dim=None, nan_val=None)

  Calculate the sum of all the elements along a specified dimension.

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  dim: optional: int. default: None

  > Dimension along which the sum is required.

  nan_val: optional: scalar. default: None

  > The value that replaces NaN in the array

  Returns:

  out: af.Array or scalar number

  > The sum of all elements in a along dimension dim. If dim is None, sum of the entire Array is returned.

`arrayfire.algorithm.``where`(a)

  Find the indices of non zero elements

  Parameters:

  a : af.Array

  > Multi dimensional arrayfire array.

  Returns:

  idx: af.Array

  > Linear indices for non zero elements.