如何将形状为(10,50)的矩阵调整为(10,)以实现矩阵减法运算
矩阵维度适配减法运算的调整方案
首先需要明确:形状为(10,50)的二维矩阵B,无法通过直接reshape的方式得到符合运算逻辑的(10,)一维矩阵,直接reshape会强制拉平所有元素再截断,会破坏原有和A的行对应关系,得到无业务意义的结果。
你需要根据你的实际业务需求,对B的长度为50的第1维(axis=1)做聚合操作,聚合后该维度会被压缩消失,得到的输出形状恰好为(10,),可直接和A做逐元素减法,常用方案如下:
- 均值聚合:如果需要用B每一行的平均特征参与运算,对第1维取均值即可,NumPy环境下的代码示例为
A - B.mean(axis=1) - 极值聚合:如果需要提取B每一行的最大/最小特征参与运算,对第1维取最值即可,代码示例为
A - B.max(axis=1)或A - B.min(axis=1) - 指定列索引:如果你只需要用B的某一列和A做运算,直接索引对应列即可,比如取第0列的代码为
A - B[:, 0] - 求和聚合:如果需要用B每一行的元素总和参与运算,对第1维取和即可,代码示例为
A - B.sum(axis=1)
注意:除非你明确知道自己的操作逻辑,否则不要使用
B.reshape(10,)这类直接修改形状的操作,该操作会把B的全部500个元素强制取前10个,完全不符合A和B按行对应的运算逻辑。
内容的提问来源于stack exchange,提问作者Thomas Iskandar
相关产品推荐
相关产品推荐

