You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何高效对多维NumPy数组中各2D矩阵的列执行MinMax归一化

高效实现X维NumPy数组中各2D矩阵的列MinMax归一化

核心思路

MinMax归一化的公式为:(x - x_min) / (x_max - x_min),要高效处理X维数组中每个2D矩阵的列,关键是利用NumPy的轴操作和广播机制,避免显式循环(循环在处理大规模数据时效率极低)。

对于X维数组(以示例3D数组为例,shape为(N, M, K),其中N是2D矩阵数量,M是行数,K是列数),我们需要针对每个2D矩阵,沿**行轴(axis=1)**计算每列的最小值和最大值,再通过广播完成逐元素的归一化计算。

代码实现

import numpy as np

# 示例3D数组
a = np.array([[[  0,  10],
               [ 20,  30]],
              [[ 40,  50],
               [ 60,  70]],
              [[ 80,  90],
               [100, 110]]])

# 计算每个2D矩阵各列的最小值(保持维度以支持广播)
col_mins = np.min(a, axis=1, keepdims=True)
# 计算每个2D矩阵各列的最大值(保持维度以支持广播)
col_maxs = np.max(a, axis=1, keepdims=True)

# 执行MinMax归一化,添加epsilon避免除以0的情况
epsilon = 1e-10
b = (a - col_mins) / (col_maxs - col_mins + epsilon)

print(b)

结果验证

运行上述代码后,输出结果与预期完全一致:

[[[0. 0.]
  [1. 1.]]

 [[0. 0.]
  [1. 1.]]

 [[0. 0.]
  [1. 1.]]]

适配更高维度数组

如果是4D及以上维度的数组(比如4D数组(B, N, M, K),B为批次维度),只需调整axis参数指向对应2D矩阵的行轴即可。例如4D数组中每个2D矩阵是(M, K)结构,计算min/max时指定axis=2,保持维度后就能通过广播完成归一化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:30:50