Numpy 如何规格化三维阵列的特定尺寸

Numpy 如何规格化三维阵列的特定尺寸,numpy,machine-learning,keras,scikit-learn,Numpy,Machine Learning,Keras,Scikit Learn,sklearn.preprocessing.normalize仅支持二维数组规范化。 但是,我目前有一个用于LSTM模型训练(批处理、步骤、特征)的3D阵列,我希望规范化这些特征 我尝试了tf.keras.utils.normalize(X_-train,axis=-1,order=2),但它不正确 另一种方法是将三维阵列折叠为二维阵列 print(X_train.shape) print(max(X_train[0][0])) 输出 (1883, 100, 68) 6.02858876395

sklearn.preprocessing.normalize
仅支持二维数组规范化。 但是,我目前有一个用于LSTM模型训练(批处理、步骤、特征)的3D阵列,我希望规范化这些特征

我尝试了
tf.keras.utils.normalize(X_-train,axis=-1,order=2)
,但它不正确

另一种方法是将三维阵列折叠为二维阵列

print(X_train.shape)
print(max(X_train[0][0]))
输出

(1883, 100, 68)
6.028588763956215
(1883, 100, 68)
3.2232538993444533
-1.9056918449890343
输出

(1883, 100, 68)
6.028588763956215
(1883, 100, 68)
3.2232538993444533
-1.9056918449890343
该值仍不在1和-1之间


我应该怎么做?

正如评论中所建议的,我提供了答案

您可以使用
sklearn
预处理方法缩放三维阵列。您只需重新导入二维数据以进行拟合,然后反向返回到三维。这可以通过几行代码轻松完成

如果希望缩放数据在范围(-1,1)内,只需使用
MinMaxScaler
指定
feature\u range=(-1,1)


你可以简单地用sklearn预处理类来缩放3D数组,方法如下:@MarcoCerliani我建议你用
MinMaxScaler
将此作为一个答案,这样OP可以随后接受并解决这个问题(它不是完全重复的)。