伪增加分辨率'值表

时间:2015-07-06 13:29:39

标签: python arrays numpy indexing

我有一个测量数组,其中包含16.000个条目

[t] [value]

问题是我的数据记录器太慢而且我每秒只有测量点。对于我的模拟,我需要增加分辨率伪。这样每个时间步长除以1000,每个测量值必须复制1000次。 (为清楚起见,见图)。所以我伪增加了测量文件的分辨率。

如何使用Pythonnumpy中有效地(!!!)完成此操作。我不想在创建16.000.000条目的数组时进行迭代。enter image description here

将时间数组除以1000的简单答案在这种情况下不适用。

编辑:使它变得更加复杂:除了在我的图片中,时间增量对于每个时间步长都不是等距的。

1 个答案:

答案 0 :(得分:0)

虽然很难确切地说出你在问什么,但我猜你只是想在你已经得到的价值之间进行插值。好的numpy有一个简单的内置功能,interp1d模块(docs):

>>> from scipy import interpolate
>>> x = np.arange(0, 10)
>>> y = np.exp(-x / 3.0)
>>> f = interpolate.interp1d(x, y)

>>> x_new = np.array([1.5, 2.5, 3.5])
>>> f(x_new)
array([ 0.61497421,  0.44064828,  0.31573829])

就您的问题的第二部分而言numpy再次为您提供了很好的内置功能! np.repeat函数应该完全按照您要查找的内容执行,直到完成可变时间步骤。可以找到文档here。示例如下:

>>> values = np.array([1, 2, 3, 4])
>>> np.repeat(values, [2, 1, 2, 1])
array([1, 1, 2, 3, 3, 4])