【问题标题】:Reverse reshaping of a numpy arraynumpy数组的反向整形
【发布时间】:2021-12-03 22:12:27
【问题描述】:

我有一个时间序列t,由 30 个特征组成,形状为(5400, 30)。为了绘制它并识别异常,我必须按以下方式重塑它:

t = t[:,0].reshape(-1)

现在,它变成了形状为 (5400,) 的单个张量,我可以在其中执行分析并根据异常的位置创建由 True 和 False 组成的 5400 个元素的列表:

anomaly = [True, False, True, ...., False]

现在我想重塑这个大小为(30, 5400) 的列表(与第一个相反)。我该怎么做?

编辑:这是我想要实现的一个示例: 我有一个大小为(2, 4)

的时间序列
feature 1 | feature 2 | feature 3 | feature 4
  0.3         0.1        0.24          0.25
  0.62        0.45       0.43          0.9

编码为:

[[0.3, 0.1, 0.24, 0.25]
[0.62, 0.45, 0.43, 0.9]]

当我重塑它时,我得到这个大小为 (8,) 的单变量时间序列:

[0.3, 0.1, 0.24, 0.25, 0.62, 0.45, 0.43, 0.9]

在这个时间序列中,我应用了一种异常检测方法,它为我提供了每个值的真/假列表:

[True, False, True, False, False, True, True, False]

我想制作这个与原始形状相反的列表,所以它的结构如下:

feature 1 True, False 
feature 2 False, True
feature 3 True, True
feature 4 False, False

形状为(4, 2),所以编码应该是:

[[True, False]
[False, True]
[True, True]
[False, False]]

【问题讨论】:

  • 如何将 5400 重塑为 (30, 5400)?为什么?
  • 转置原始集合就足够了吗?
  • @QuangHoang 我还没有重塑它。目前,对于每个观察,我只有 5400 True/False 的列表。我需要列出形状 (30, 5400)
  • 您的问题有歧义。您正在将 t 重新分配给 t[:,0].reshape(-1)。向我们提供明确的意见并明确您想要什么。
  • 我的问题是,你的输出是什么样的?例如。 output[0] 是什么?

标签: python arrays numpy


【解决方案1】:
t = np.array([[0.3, 0.1, 0.24, 0.25],[0.62, 0.45, 0.43, 0.9]])
anomaly= [True, False, True, False, False, True, True, False]
your_req_array = np.array(anomaly).reshape(2,4).T

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-16
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    相关资源
    最近更新 更多