【问题标题】:Repeat a series n time in order按顺序重复 n 次
【发布时间】:2021-01-31 12:57:07
【问题描述】:

我有一系列 24 小时的数据,需要将其延长到全年,使得与每个小时相关的值重复 365 次(例如 1.a.m = 0.256 的值我需要这个值重复 365 次,但在凌晨 2 点之前和 12 点之后按特定顺序) 例如,我只需要重复 2 次的输出: (0,1,2,3,....23,0,1,2,3,....23) 我不需要这样的东西: (0,0,1,1,2,2,.....23,23)

【问题讨论】:

    标签: python pandas numpy repeat series


    【解决方案1】:

    你试过np.tile吗?

    import numpy as np
    
    # Your array
    l = np.array([0,1,2,3])
    
    # Number of repeats
    n = 10
    
    # Final array
    r = np.tile(l, n)
    

    【讨论】:

      【解决方案2】:

      如果你只想要一个重复的序列,你可以这样做 -

      import pandas as pd
      import numpy as np
      
      X = np.arange(3)
      
      R = np.repeat(X[None, :], 5, axis=0).reshape(15)
      
      print(R)
      

      给 -

      [0 1 2]
      [0 1 2 0 1 2 0 1 2 0 1 2 0 1 2]
      

      R 就是你要找的东西

      【讨论】:

      • 我试过这个。问题是它重复每个数据 365 次,而不是按照我想要的顺序。我想要以相同的确切顺序重复的 24 个值系列。例如,对于 n = 2,您的函数的输出将是 (0,0,1,1,2,2,3,3,.....23,23)。相反,我需要这样的东西: (0,1,2,3,....23,0,1,2,3,....23)
      • 您是否尝试过我发布的确切代码?它旨在处理这种情况。我编辑了也发布的输出。它确实会产生您指定的输出。
      【解决方案3】:

      列表类型在 Python 中是加法的,所以

      print([1,2,3] + [1,2,3])
      

      给出输出

      [1,2,3,1,2,3]
      

      乘以一个整数只会多次将列表添加到自身,所以

      print([1,2,3]*3)
      

      给出输出

      [1,2,3,1,2,3,1,2,3]
      

      所以您希望list(range(24))*365 获取您的时间戳,并希望list(your_data)*365 获取您的数据值

      【讨论】:

        猜你喜欢
        • 2013-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-20
        • 1970-01-01
        • 2021-10-30
        • 2016-07-25
        相关资源
        最近更新 更多