规范化numpy ndarray数据

时间:2017-06-02 08:57:57

标签: numpy scikit-learn normalization

我的数据是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.

我该如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:3)

似乎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)