输入给定向量集。
输出协方差矩阵。
[[7, 8, 9], [10, 11, 12]]
[[1.0, 1.0], [1.0, 1.0]]
1.Python3对应的输入、输出已给出,您只用实现核心功能函数即可。
2.支持numpy、scipy、pandas、scikit-learn库。
import numpy as np def calculate_matrix_mean(matrix, mode='column'): m_cols = len(matrix[0]) m_rows = len(matrix) if mode == 'row': list_ = [0] * m_rows for i in range(m_rows): list_[i] = sum(matrix[i]) / m_cols elif mode == 'column': list_ = [0] * m_cols for i in range(m_cols): n = 0 for j in range(m_rows): n += matrix[j][i] list_[i] = n / m_rows return list_ def calculate_covariance_matrix(vectors): vectors = np.array(vectors).T.tolist() m_cols = len(vectors[0]) m_rows = len(vectors) col_mean = calculate_matrix_mean(vectors) # 计算中心化矩阵 for i in range(m_cols): for j in range(m_rows): vectors[j][i] -= col_mean[i] coefficient = round(1 / (m_rows - 1), 16) covariance_matrix = coefficient * (np.array(vectors).T @ np.array(vectors)) # covariance_matrix = covariance_matrix.round(16) return covariance_matrix.tolist() # 补全代码 # 主程序 if __name__ == "__main__": # 输入 ndarrayA = input() # 处理输入 import ast A = ast.literal_eval(ndarrayA) # 调用函数计算 output = calculate_covariance_matrix(A) # 输出结果 print(output) 为什么保留16位小数还是[[6.666666666666666,6.666666666666666],[6.666666666666666,6.666666666666666]]