如何在Kotlin中计算二维数组的按列平均值
Kotlin 二维数组按列求平均值实现方案
方案1:纯Kotlin标准库实现(无额外依赖)
直接使用Kotlin自带的集合操作即可完成需求,示例代码如下:
fun main() { // 输入示例二维数组 val twoDArray = arrayOf( intArrayOf(1, 2, 3), intArrayOf(4, 5, 6) ) val columnAverages = if (twoDArray.isEmpty() || twoDArray.first().isEmpty()) { emptyList() } else { val rowCount = twoDArray.size // 遍历每一列索引,聚合该列所有行的元素计算平均值 (0 until twoDArray.first().size).map { colIndex -> twoDArray.sumOf { row -> row[colIndex].toDouble() } / rowCount } } println(columnAverages) // 输出:[2.5, 3.5, 4.5] }
说明:
- 代码内置了空数组、空行边界判断,避免索引越界异常
- 若二维数组元素本身为
Double/Float类型,可去掉.toDouble()转换 - 若需要返回
DoubleArray类型,可在结果后追加.toDoubleArray()
方案2:使用Multik库实现(对标Python Numpy)
如果你的项目已经引入JetBrains官方的Multik数值计算库,可以使用和Numpy几乎一致的API实现:
import org.jetbrains.kotlinx.multik.api.mk import org.jetbrains.kotlinx.multik.ndarray.operations.mean fun main() { val ndArray = mk.ndarray(mk[mk[1,2,3], mk[4,5,6]]) // axis=0对应按维度0(列)计算平均值,和Numpy参数规则一致 val columnAverages = ndArray.mean(axis = 0) println(columnAverages) // 输出:[2.5, 3.5, 4.5] }
注:你提到的Python中np.mean(array, axis=1)实际为按行求平均,按列求平均对应的参数为axis=0,上述两种方案均匹配你给出的示例输出需求。
内容的提问来源于stack exchange,提问作者KaiJun
相关产品推荐
相关产品推荐

