Numpy/Pandas实现矩阵A中0值位置替换为矩阵B对应位置值的方法
矩阵替换逻辑实现方案
以下两种实现均为向量化运算,无Python层面循环,性能优异,可直接用于大规模矩阵处理:
1. Numpy实现(推荐纯数值矩阵场景)
核心使用np.where逐元素判断取值,一行代码完成逻辑,运算效率为C语言级别:
import numpy as np # 构造示例矩阵 A = np.array([ [0, 0, 1], [0, 0, 0], [1, 0, 0] ]) B = np.array([ [0, 2, 4], [2, 0, 3], [4, 3, 0] ]) # 核心逻辑:A位置值为0则取B对应值,否则保留A的值 C = np.where(A == 0, B, A)
输出结果C完全匹配预期:
array([[0, 2, 1], [2, 0, 3], [1, 3, 0]])
2. Pandas实现(适合原数据为DataFrame的场景)
如果你的矩阵原本是以DataFrame格式存储,可以用mask方法实现:
import pandas as pd df_a = pd.DataFrame(A) df_b = pd.DataFrame(B) # 替换df_a中值为0的位置为df_b对应值 df_c = df_a.mask(df_a == 0, df_b) # 如需转回numpy矩阵,可调用df_c.values
内容的提问来源于stack exchange,提问作者xc-2021
相关产品推荐
相关产品推荐

