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 |
|---|---|---|
|
| Extracts the group key from each element. |
|
| 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