Multik 0.3.0 Help

groupNDArray

Groups array elements by a key function, returning a Map where each key maps to a 1D NDArray of matching elements. groupingNDArrayBy returns a Grouping for lazy aggregation with eachCount, fold, or reduce.

Signatures

inline fun <T, D : Dimension, K> MultiArray<T, D>.groupNDArrayBy( keySelector: (T) -> K ): Map<K, NDArray<T, D1>> inline fun <T, D : Dimension, K, V : Number> MultiArray<T, D>.groupNDArrayBy( keySelector: (T) -> K, valueTransform: (T) -> V ): Map<K, NDArray<V, D1>> inline fun <T, D : Dimension, K> MultiArray<T, D>.groupingNDArrayBy( keySelector: (T) -> K ): Grouping<T, K>

Parameters

Parameter

Type

Description

keySelector

(T) -> K

Extracts the group key from each element.

valueTransform

(T) -> V

Transforms the element before adding to the group.

Returns: Map<K, NDArray<T, D1>> — each key maps to a 1D array of matching elements.

Example

val a = mk.ndarray(mk[1, 2, 3, 4, 5, 6]) val groups = a.groupNDArrayBy { if (it % 2 == 0) "even" else "odd" } // "odd" -> [1, 3, 5] // "even" -> [2, 4, 6] val grouping = a.groupingNDArrayBy { it % 3 } grouping.eachCount() // {1=2, 2=2, 0=2}
28 February 2026