我有一个numpy数组(比如100x64x64)
我的目标是独立缩放每个64x64层,并存储一个缩放器供以后使用
这是如何通过for-loop解决方案实现的:
scalers_dict={}
for i in range(X.shape[0]):
scalers_dict[i] = MinMaxScaler()
#fitting the scaler
X[i, :, :] = scalers_dict[i].fit_transform(X[i, :, :])
#saving dict of scalers
joblib.dump(value=scalers_dict,filename="dict_of_scalers.scaler")
我的真实数组要大得多,遍历它需要相当长的时间
你有没有想过一些更矢量化的解决方案,或者for-loop是唯一的方法
如果我正确理解了^{} 的工作原理,那么它可以在独立的数组上运行,这些数组沿着
axis=0
减少为了使其对您的案例有用,您需要将
X
转换为(64 * 64, 100)
数组:或者,你可以写
现在,您可以使用
由于实际拟合是在第一个维度上计算的,因此所有结果的大小都将为100。由于最后一个维度的大小相同,因此这将完美地广播
要恢复原始形状,请反转原始变换:
完成后,
M
将是一个为100个特性校准的定标器。这里不需要词典。请记住,由整数序列键控的字典可以更好地表示为列表或数组,这里就是这样IIUC,您可以手动缩放:
相关问题 更多 >
编程相关推荐