mean function
Computes the mean along a specified axis.
Implementation
List<double> mean(List<List<num>> values, {int? axis}) {
if (values.isEmpty) {
return [double.nan]; // Return NaN for empty lists
}
if (axis == null) {
final List<num> flattenedValues = values.expand((list) => list).toList();
final num total = flattenedValues.reduce((a, b) => a + b);
return [total / flattenedValues.length];
} else if (axis == 0) {
final List<num> columnSums = List<num>.filled(values[0].length, 0);
for (List<num> row in values) {
for (int i = 0; i < row.length; i++) {
columnSums[i] += row[i];
}
}
return columnSums.map((sum) => sum / values.length).toList();
} else if (axis == 1) {
return values
.map((row) => row.reduce((a, b) => a + b) / row.length)
.toList();
} else {
throw ArgumentError("Axis must be null, 0, or 1.");
}
}