You need to enable JavaScript to run this app. 如何对特征矩阵执行行归一化?解决NumPy广播报错问题
优惠活动
大模型
产品
解决方案
定价
更多

如何对特征矩阵执行行归一化?解决NumPy广播报错问题

错误原因
  • 本质是NumPy广播机制的维度匹配规则冲突:你调用a.min(axis=1)、a.max(axis=1)时,会压缩掉axis=1的维度,得到的是形状为(4,)的一维数组,而原矩阵a的形状是(4,5)。
  • NumPy广播要求从最后一个维度开始匹配,(4,5)的最后一维长度是5,和(4,)的维度长度4无法匹配,因此触发维度不兼容的报错。
修复方案

有两种常用的修复方式:

方案1:求最值时保留维度

调用min/max时传入keepdims=True参数,直接得到形状为(4,1)的二维数组,无需手动调整维度:

import numpy as np
a = np.random.randint(10, size=(4,5))
# 行归一化实现
min_row = a.min(axis=1, keepdims=True)
max_row = a.max(axis=1, keepdims=True)
normalized_a = (a - min_row) / (max_row - min_row)

方案2:手动给一维数组增加维度

如果不想改最值计算的逻辑,可以给计算得到的一维行最值新增维度,适配广播规则:

# 等价写法,用[:, np.newaxis]新增维度
min_row = a.min(axis=1)[:, np.newaxis]
max_row = a.max(axis=1)[:, np.newaxis]
normalized_a = (a - min_row) / (max_row - min_row)

补充注意:如果某一行的所有元素值都相同,会出现分母为0的情况,得到nan值,可以根据业务需求给分母加一个极小值(比如1e-8)避免除以0的问题。

内容的提问来源于stack exchange,提问作者kapooraae489

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 15:24:01