规范化 numpy ndarray 数据

Normalize numpy ndarray data

我的数据是 numpy ndarray,形状 (2,3,4) 如下: 我尝试通过 sklearn 标准化为每列标准化 0-1 比例。

from sklearn.preprocessing import normalize  

x = np.array([[[1, 2, 3, 4],
      [2, 2, 3, 4],
      [3, 2, 3, 4]],
      [[4, 2, 3, 4],
      [5, 2, 3, 4],
      [6, 2, 3, 4]]])

x.shape ==> ( 2,3,4) 

x = normalize(x, norm='max', axis=0, ) 

但是,我发现了错误:

ValueError: Found array with dim 3. the normalize function expected <= 2.

如何解决这个问题?

谢谢。

似乎 scikit-learn 期望 ndarrays 最多有两个 dims。因此,要解决这个问题,可以将其重塑为 2D,将其提供给 normalize,从而得到一个 2D 数组,它可以重塑回原始形状 -

from sklearn.preprocessing import normalize  

normalize(x.reshape(x.shape[0],-1), norm='max', axis=0).reshape(x.shape)

或者,使用 NumPy 更简单,可以很好地与通用 ndarrays -

x/np.linalg.norm(x, ord=np.inf, axis=0, keepdims=True)