У вас есть две возможности
data = np.random.randn(batch_size*time_length*nb_feats).reshape((bsize,time,feats))
Версия 1 делает то, что вы говорите:
scaler = StandardScaler()
for sample in range(data.shape[0]):
scaler.partial_fit(data[sample])
for sample in range(data.shape[0]):
data[sample] = scaler.transform(data[sample])
Другая возможность (версия 2) - сгладить массив, подогнать и преобразовать, а затем изменить его форму
scaler = StandardScaler()
data = scaler.fit_transform(data.reshape((bsize*time,feats))).reshape((bsize,time,feats))
В моем компьютере
Версия 1 занимает 0,8759770393371582 секунд
Версия 2 занимает 0.11733722686767578 секунд