我的数据是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.
我该如何解决这个问题?
谢谢。
答案 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)