Numpy数组反向重塑:如何将异常检测一维标记转换为目标多维维度
前提说明
你开头贴的代码t = t[:,0].reshape(-1)是取原始张量的第0列特征,仅会得到长度为5400的一维数组,和你补充示例里「将所有特征拉平为长度等于时间步数量*特征数量的一维数组」的逻辑不符,推测是笔误,实际拉平代码为t = t.reshape(-1),以下方案基于该前提实现。
实现方案
核心逻辑非常简单:先把异常标记列表重塑为和原始时间序列完全相同的(时间步数量, 特征数量)形状,再对数组做转置即可得到(特征数量, 时间步数量)的目标结构。
1. NumPy 实现(最常用)
import numpy as np # 示例场景验证 anomaly = [True, False, True, False, False, True, True, False] # 先reshape为原始输入形状(时间步=2, 特征数=4),再转置 anomaly_final = np.array(anomaly).reshape(2, 4).T print(anomaly_final) # 输出: # [[ True False] # [False True] # [ True True] # [False False]] # 适配你的实际场景:原始形状(5400, 30),目标形状(30, 5400) anomaly_final = np.array(anomaly).reshape(5400, 30).T
2. PyTorch 实现(针对张量场景)
import torch anomaly_tensor = torch.tensor(anomaly) anomaly_final = anomaly_tensor.reshape(5400, 30).T
3. 纯Python 实现(无需第三方库)
n_time_step = 5400 n_feature = 30 anomaly_final = [] for feature_idx in range(n_feature): # 按特征维度逐个取对应时间步的异常标记 feature_anomaly = [anomaly[ts * n_feature + feature_idx] for ts in range(n_time_step)] anomaly_final.append(feature_anomaly)
内容的提问来源于stack exchange,提问作者Fabio
相关产品推荐
相关产品推荐

