我有一个测量数组,其中包含16.000个条目
[t] [value]
问题是我的数据记录器太慢而且我每秒只有测量点。对于我的模拟,我需要增加分辨率伪。这样每个时间步长除以1000,每个测量值必须复制1000次。 (为清楚起见,见图)。所以我伪增加了测量文件的分辨率。
如何使用Python
在numpy
中有效地(!!!)完成此操作。我不想在创建16.000.000条目的数组时进行迭代。
将时间数组除以1000的简单答案在这种情况下不适用。
编辑:使它变得更加复杂:除了在我的图片中,时间增量对于每个时间步长都不是等距的。
答案 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])