Owl_utils_arraymin_i x returns the index of minimum value in array x. If cmp is not passed in then Stdlib.compare is used as default value.
max_i x returns the index of minimum value in array x. If cmp is not passed in then Stdlib.compare is used as default value.
argsort cmp x sorts x according to the compare function cmp and returns the corresponding indices.
sort_fill ~min ~max ~fill x first sorts x, then expands it to an array of length max - min + 1, and fills the holes with fill. E.g., sort_fill ~min:1 ~max:5 ~fill:0 [|4;2|] x returns a new array as follows: [|1; 0; 2; 0; 4; 5|].
get_slice slice x returns a copy of slice of x defined by slice. The slice definition must have [|start;stop;step|] format. The value of start, stop, and step can be negative, and the boundary is inclusive.
set_slice slice x y sets the elements in x to the corresponding value of the elements in y based on the slice definition slice. Please refer to get_slice function for the information on the format of slice definition.
set_n arr indices v sets the elements at the positions specified by indices in the array arr to the value v.
range start stop generates an array of integers from start to stop inclusive.
count arr x counts the number of occurrences of the value x in the array arr.
insert arr1 arr2 pos inserts the elements of arr2 into arr1 at the specified position pos.
remove arr pos removes the element at position pos from the array arr.
replace pos len arr1 arr2 replaces the subarray of length len starting at pos in arr1 with the elements from arr2.
mapi f arr applies the function f to each element of the array arr, passing the index of the element as the first argument to f, and returns a new array of the results.
map f arr applies the function f to each element of the array arr and returns a new array of the results.
iter2i f arr1 arr2 applies the function f to each pair of corresponding elements from arr1 and arr2, passing the index as the first argument to f.
iter2 f arr1 arr2 applies the function f to each pair of corresponding elements from arr1 and arr2.
iter3i f arr1 arr2 arr3 applies the function f to each triplet of corresponding elements from arr1, arr2, and arr3, passing the index as the first argument to f.
iter3 f arr1 arr2 arr3 applies the function f to each triplet of corresponding elements from arr1, arr2, and arr3.
val iter4i :
(int -> 'a -> 'b -> 'c -> 'd -> unit) ->
'a array ->
'b array ->
'c array ->
'd array ->
unititer4i f arr1 arr2 arr3 arr4 applies the function f to each group of corresponding elements from arr1, arr2, arr3, and arr4, passing the index of the elements as the first argument to f.
iter4 f arr1 arr2 arr3 arr4 applies the function f to each group of corresponding elements from arr1, arr2, arr3, and arr4.
map2i f arr1 arr2 applies the function f to each pair of corresponding elements from arr1 and arr2, passing the index of the elements as the first argument to f, and returns an array of the results.
map2i_split2 f arr1 arr2 applies the function f to each pair of corresponding elements from arr1 and arr2, passing the index of the elements as the first argument to f, and returns a tuple of two arrays containing the first and second elements of the results of f.
map3i f arr1 arr2 arr3 applies the function f to each triplet of corresponding elements from arr1, arr2, and arr3, passing the index of the elements as the first argument to f, and returns an array of the results.
map3 f arr1 arr2 arr3 applies the function f to each triplet of corresponding elements from arr1, arr2, and arr3, and returns an array of the results.
val map4i :
(int -> 'a -> 'b -> 'c -> 'd -> 'e) ->
'a array ->
'b array ->
'c array ->
'd array ->
'e arraymap4i f arr1 arr2 arr3 arr4 applies the function f to each group of corresponding elements from arr1, arr2, arr3, and arr4, passing the index of the elements as the first argument to f, and returns an array of the results.
map4 f arr1 arr2 arr3 arr4 applies the function f to each group of corresponding elements from arr1, arr2, arr3, and arr4, and returns an array of the results.
filteri_v f arr applies the function f to each element of arr, passing the index of the element as the first argument to f. The function f returns a pair of a boolean and a value. If the boolean is true, the value is included in the result array.
filter_v f arr applies the function f to each element of arr. The function f returns a pair of a boolean and a value. If the boolean is true, the value is included in the result array.
filteri f x filters out the elements in x according to predicate f.
filter f x filters out the elements in x according to predicate f.
filter2i f x y filters the elements in x and y using passed in function f. Both arrays must have same length.
filter2 f x y is similar to filter2i but without passing index of the elements to function f.
filter2i_i f x y filters the elements in x and y using passed in function f. Both arrays must have same length. Note that the indices of those satisfying the predicate f are returned in an array.
filter2_i f x y is similar to filter2i_i but without passing index of the elements to function f.
filter2_split f x y is similar to filter2 f x y, but the returned results are two separated arrays rather than merging into one tuple array.
resize ~head v n x resizes x of length m to length n. If m <= n, a copy of x subarray is returned. If m > n, then x is extended, the extra space is filled with value v.
fold2 a x y folds both x and y from left with starting value a.
pad side v len arr pads the array arr with the value v on the specified side (`Left` or `Right`) until the array reaches the desired length len.
If len is less than or equal to the length of arr, the original array is returned.
align side v x y aligns two arrays x and y along the specified side with value v. The copies of two arrays are returned.
val align3 :
[ `Left | `Right ] ->
'a ->
'a array ->
'a array ->
'a array ->
'a array * 'a array * 'a arrayalign3 side v x y z aligns three arrays x, y, and z.
greater_equal arr1 arr2 returns true if all elements in arr1 are greater than or equal to the corresponding elements in arr2, and false otherwise.
swap arr i j swaps the elements at indices i and j in the array arr.
permute indices arr rearranges the elements of arr according to the order specified by indices, returning a new array with the permuted elements.
of_tuples arr converts an array of pairs into an array containing all the first elements followed by all the second elements of the pairs in arr.
balance_last mass x performs the following function. Let l be the length of x, if i < l - 1, then x.(i) = x.(i), otherwise x.(l - 1) = mass - \sum_{i < l - 1} x.(i).
Binary search. bsearch cmp x a returns the index of the largest value in the sorted array a less than or equal to x, according to the comparison function cmp. If x is smaller than all elements, returns -1. The function raises an exception if a is empty.
val to_string :
?prefix:string ->
?suffix:string ->
?sep:string ->
('a -> string) ->
'a array ->
stringto_string ?prefix ?suffix ?sep f arr converts the array arr to a string representation, applying the function f to each element to produce a string. The elements are separated by sep (default is ", "), and the entire output is optionally wrapped with prefix and suffix.