let matrix = [
[18.95, 21.1, 0, 23, 0, 0, 0],
[19, 25.3, 24.64, 0, 0, 0, 21.24],
[22.18, 24.5, 20, 0, 26, 0, 0],
[18.41, 19.05, 22.41, 27.67, 17, 0, 0],
[14.86, 19.31, 0, 19.4, 18.71, 0, 25.04],
[18.93, 19.53, 0, 0, 0, 0, 0]
];
// 获取矩阵的列数
const numCols = matrix[0].length;
// 计算每一列的平均值
const columnAverages = Array.from({ length: numCols }, (_, colIndex) => {
// 使用filter过滤掉值为0的行,然后使用reduce计算平均值
const sum = matrix.reduce((acc, row) => {
const value = row[colIndex];
if (value !== 0) {
return acc + value;
}
return acc;
}, 0);
// 计算非零值的数量
const count = matrix.reduce((acc, row) => {
const value = row[colIndex];
if (value !== 0) {
return acc + 1;
}
return acc;
}, 0);
// 如果存在非零值,则返回平均值,否则返回0或其他默认值
return count > 0 ? sum / count : 0;
});
// 打印新的数组,即每一列的平均值
console.log(columnAverages);