Python 通过轴=2,在-1到1之间对numpy信号(三维数组)进行规格化

Python 通过轴=2,在-1到1之间对numpy信号(三维数组)进行规格化,python,numpy,Python,Numpy,我有一个NumPy数组[shape:(100,11,1000)],我想通过axis=2将其规格化为-1到1之间的值。我应该使用哪种方法来确保每个信号按批次和通道(轴0和1)排列,其中值范围在-1到1之间 图1:数据值可能在-20到20之间,例如plt.plot(数据[0,0]): 图2:范围在-140到140之间,例如plt.plot(数据[55,3]): 更新:MinMaxScaler不支持三维数组: 找到了具有dim 3的数组。MinMaxScaler预期您可以使用sklearn提供的M

我有一个NumPy数组[shape:(100,11,1000)],我想通过axis=2将其规格化为-1到1之间的值。我应该使用哪种方法来确保每个信号按批次和通道(轴0和1)排列,其中值范围在-1到1之间

图1:数据值可能在-20到20之间,例如
plt.plot(数据[0,0])

图2:范围在-140到140之间,例如
plt.plot(数据[55,3])

更新:MinMaxScaler不支持三维数组:
找到了具有dim 3的数组。MinMaxScaler预期您可以使用sklearn提供的MinMaxScaler

from sklearn.preprocessing import MinMaxScaler

# create object with feature range of -1, 1
scaler = MinMaxScaler(feature_range=(-1, 1))

# transform data
transformed_array = scaler(your_data)
如果您不想使用sklearn,您可以自己在numpy中实现它。使用以下公式计算上述方程式:

X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
X_scaled = X_std * (max - min) + min

文档:

只需在以下公式中指定轴=2

X_std = (X - X.min(axis=2)) / (X.max(axis=2) - X.min(axis=2))
X_scaled = X_std * (max - min) + min
当轴=0时,信号失真是绝对正常的,因为与其他采样值相比,每个点都将标准化

X_std = (X - X.min(axis=2)) / (X.max(axis=2) - X.min(axis=2))
X_scaled = X_std * (max - min) + min