Python中如何带条件遍历稀疏矩阵并按幂规则替换元素
Python实现0-1指示稀疏矩阵的5次幂元素替换
你不需要查找特殊的指数运算第三方包,根据矩阵的存储格式选对应实现即可,所有方案均满足替换规则:原元素为0时更新为$50=1$,原元素为1时更新为$51=5$。
方案1:原生Python实现(无第三方依赖)
如果你的矩阵以Python原生嵌套列表格式存储,不需要安装任何依赖,直接逐元素处理即可:
# 输入矩阵示例 input_mat = [ [0, 1, 0], [0, 1, 1] ] # 元素替换:直接值映射效率更高,也可写为 5**val 严格匹配幂运算逻辑 output_mat = [] for row in input_mat: output_mat.append([1 if v == 0 else 5 for v in row]) # 打印输出验证 for row in output_mat: print(' '.join(map(str, row)))
运行输出:
1 5 1 1 5 5
注:如果后续需要调整幂底数、扩展矩阵元素的取值范围,把列表推导式里的映射逻辑替换为5 ** v即可,逻辑完全通用。
方案2:NumPy稠密矩阵实现
如果你做实验用NumPy存储稠密数值矩阵,直接用向量化幂运算即可,执行效率远高于Python原生循环:
import numpy as np input_mat = np.array([ [0, 1, 0], [0, 1, 1] ]) output_mat = 5 ** input_mat print(output_mat)
运行输出:
[[1 5 1] [1 5 5]]
方案3:SciPy稀疏矩阵实现(适配大规模稀疏存储场景)
如果你的矩阵本身以稀疏格式存储(比如CSR、COO格式,适合毕业论文里大规模数据集的实验,避免内存溢出),不需要转换为稠密矩阵,直接在稀疏格式上做运算即可:
import numpy as np from scipy.sparse import csr_matrix # 构造示例稀疏输入矩阵 input_sparse = csr_matrix(np.array([ [0, 1, 0], [0, 1, 1] ])) output_sparse = 5 ** input_sparse # 转换为稠密格式打印验证 print(output_sparse.todense())
运行输出和要求完全一致,运算全程保持稀疏存储结构,内存占用远低于稠密矩阵方案。
内容的提问来源于stack exchange,提问作者ND Nhiep
相关产品推荐
相关产品推荐

