我有两组数据由两个测量仪器创建,每个仪器给出一个时间列和电压列,而两组数据表示相同的时间量(或非常接近),它们存储在不同大小的数组中因为采样时间不同。 我想得到scipy.stats.pearsonr系数,但要做到这一点,我需要两个数据集相同的大小。
如何将两组中较小的一组的大小缩放到两组中较大的一组的大小,以便用更多的数据点表示相同的数据?
编辑。
很抱歉,我本来应该提供一个数据示例,因为文件中有额外的数据,我认为这样做会让我的注意力远离我遇到麻烦的方面。
名为OOL_Drift.dat的文件包含我想知道的数据,如果它与TemperatureChannels.txt和Room_Temperature.txt中包含的温度读数相关联。 每个文件的第1列是时间。 OOL_Drift.dat上的第二列包含我想要比较的数据。 TemperatureChannels.txt中的第4,第8,第12,第16,第20列包含要比较的数据。
以下是文件 https://drive.google.com/folderview?id=0B_viQkcWo4Z2LUlyVG82eWpmUXM&usp=sharing
由于我有很多样本并且读数没有很快改变,我认为它应该有用。
感谢所有人提出的建议
答案 0 :(得分:0)
但是,为了获得相同长度的数组,你可以做的是采用更短的数据并通过插值信息来扩展它。 您可以插入信号(双线性或甚至三线性以获得更好的值)并重新采样。
http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.interp.html
答案 1 :(得分:0)
如果没有最恰当的例子,这很难回答,但可能有效的一种方法是通过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
方法填充这些NaN
- 这可能是一个插值例程,对您的应用程序有意义