gpt4 book ai didi

python - 从 NumPy 中的不均匀采样数据生成均匀采样数组

转载 作者:太空狗 更新时间:2023-10-29 23:55:24 24 4
gpt4 key购买 nike

问题是我想减少绘图和分析的数据量。我正在使用 Python 和 Numpy。数据是不均匀采样的,所以有一个时间戳数组和一个对应值数组。我希望数据点之间至少有一定的时间间隔。我这里有一个用 Python 编写的简单解决方案,在样本之间至少间隔一秒的地方找到指标:

import numpy as np

t = np.array([0, 0.1, 0.2, 0.3, 1.0, 2.0, 4.0, 4.1, 4.3, 5.0 ]) # seconds
v = np.array([0, 0.0, 2.0, 2.0, 2.0, 4.0, 4.0, 5.0, 5.0, 5.0 ])

idx = [0]
last_t = t[0]
min_dif = 1.0 # Minimum distance between samples in time
for i in range(1, len(t)):
if last_t + min_dif <= t[i]:
last_t = t[i]
idx.append(i)

如果我们看一下结果:

--> print idx
[0, 4, 5, 6, 9]

--> print t[idx]
[ 0. 1. 2. 4. 5.]

问题是如何才能更有效地做到这一点,特别是如果数组真的很长?是否有一些内置的 NumPy 或 SciPy 方法可以做类似的事情?

最佳答案

虽然,像 @1443118,我建议使用 pandas,但您可能想尝试使用 np.histogram

首先,了解您需要的 bin 数量(min_dif 的间隔):

>>> bins = np.arange(t[0], t[-1]+min_dif, min_dif) - 1e-12

t[-1]+min_dif 是为了确保我们采用最后一点,-1e-12 一个 hack 以避免 4.0 您的示例在最后一个 bin 中计数:它只是一个偏移量,以确保我们关闭右侧的间隔。

>>> (counts, _) = np.histogram(t, bins)
>>> counts
array([4, 1, 1, 0, 3])
>>> counts.cumsum()
array([4, 5, 6, 6, 9])

因此,v[0:4] 是您的第一个示例,v[4:5] 是您的第二个...您明白了。

关于python - 从 NumPy 中的不均匀采样数据生成均匀采样数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12056165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com