【问题标题】:Fit data to different array size使数据适合不同的数组大小
【发布时间】:2016-06-03 13:12:35
【问题描述】:

我有两个测量仪器创建的两组数据,每个仪器给出时间列和电压列,而这两组数据代表相同的时间量(或非常接近),它们存储在不同大小的数组中因为采样时间不同。 我想获得 scipy.stats.pearsonr 系数,但要做到这一点,我需要两个数据集的大小相同。

如何将两个集合中较小的大小缩放为两个集合中较大的大小,以便用更多数据点表示相同的数据?

编辑。

对不起,我应该提供一个数据示例,我最初没有提供,因为文件中有额外的数据,我认为它会引起人们对我遇到问题的关注。

名为 OOL_Drift.dat 的文件包含我想知道的数据是否与 TemperatureChannels.txt 和 Room_Temperature.txt 中包含的温度读数相关。 每个文件的第一列是时间。 OOL_Drift.dat 的第二列包含我要比较的数据。 TemperatureChannels.txt中的第4、8、12、16、20列包含要比较的数据。

这里是文件 https://drive.google.com/folderview?id=0B_viQkcWo4Z2LUlyVG82eWpmUXM&usp=sharing

由于我有很多样本,而且读数不会很快改变,我认为它应该可以工作。

感谢大家提出的建议

【问题讨论】:

  • 如果您确定要这样做,@npielawski 已为您提供了如何操作的想法。但是,我认为您应该认真考虑是否要全部完成。您自己说过“相同的数据用更多的数据点表示”,严格来说,这是完全不可能的。如果两个采样频率都比您要比较的信号高很多,那么(可能)会很好。但是,如果数据非常嘈杂或者您的测量结果非常混乱,那么(可能)这是一个坏主意。也许您应该在stats.stackexchange.com 提出更具体的问题(带有数据)

标签: python numpy signal-processing data-manipulation


【解决方案1】:

但是,要获得相同长度的数组,您可以做的是缩短并通过插值信息来扩展它。 您可以对信号进行插值(双线性甚至三线性以获得更好的值)并重新采样。

http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.interp.html

【讨论】:

    【解决方案2】:

    如果没有一些您正在做什么的最小示例,这很难回答,但一种可能有效的方法是通过pandas 来完成。如果您有测量时间,您可以创建两个带有日期时间索引的 DataFrame:

    df1 = pd.DataFrame({"data":np.random.rand(6)}, index=pd.date_range("01:00:00","06:00:00", freq="H"))
    
                        data
    2016-06-03 01:00:00 0.436862
    2016-06-03 02:00:00 0.171859
    2016-06-03 03:00:00 0.273939
    2016-06-03 04:00:00 0.949059
    2016-06-03 05:00:00 0.434267
    2016-06-03 06:00:00 0.212041
    
    df2 = pd.DataFrame({"data2":np.random.rand(3)}, index=pd.date_range("01:00:00","06:00:00", freq="2H"))
    
                        data2
    2016-06-03 01:00:00 0.544233
    2016-06-03 03:00:00 0.253989
    2016-06-03 05:00:00 0.893227
    

    然后,您可以简单地将两者加入索引,这将自动对齐同时发生的那些观察,同时用NaN 填充数组中观察较少的“缺失”观察:

    df1["data2"] = df2.data2
    
                        data        data2   
    2016-06-03 01:00:00 0.436862    0.544233    
    2016-06-03 02:00:00 0.171859    NaN 
    2016-06-03 03:00:00 0.273939    0.253989    
    2016-06-03 04:00:00 0.949059    NaN 
    2016-06-03 05:00:00 0.434267    0.893227    
    2016-06-03 06:00:00 0.212041    NaN 
    

    然后,您可以在计算相关系数之前使用 pandas 相当广泛的 interpolate 方法来填充这些 NaNs - 其中可能有一个对您的应用程序有意义的插值例程。

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2020-10-09
      • 1970-01-01
      • 2019-12-26
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多