python - numpy 中的 "as of"

标签 python loops numpy time-series

我正在寻找一种在 numpy 中实现“截至”运算符的方法.具体来说,如果:

  1. t1是一个 n - 严格递增顺序的时间戳向量;
  2. d1是一个 n x p观察矩阵,i第 - 行对应于 t1[i] ;
  3. t2m - 时间戳向量,也是严格递增的顺序;

我需要创建一个 m x p矩阵 d2 , 其中d2[i]就是d1[j] j 的最大值这样 t1[j] <= t2[i] .

换句话说,我需要获取 d1 的行截至 t2 中的时间戳.

用纯 Python 很容易写这个,但我想知道是否有办法避免解释循环( nmp 非常大)。

时间戳是 datetime.datetime 对象。观测值是浮点值。

编辑:对于 t1[j] <= t2[i] 的条目无法满足(即 t2 中的时间戳先于 t1 中的所有时间戳),理想情况下我希望获得 NaN 的行

最佳答案

您最好的选择是 numpy.searchsorted() :

d1[numpy.searchsorted(t1, t2, side="right") - 1]

这将搜索 t2 的值所在的索引必须插入 t1维持秩序。 side="right"- 1位是为了确保完全指定的行为。

编辑:获取满足条件 t1[j] <= t2[i] 的 NaN 行不能满足,可以用

nan_row = numpy.repeat(numpy.nan, d1.shape[1])
d1_nan = numpy.vstack((nan_row, d1))
d2 = d1_nan[numpy.searchsorted(t1, t2, side="right")]

关于python - numpy 中的 "as of",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5898617/

相关文章:

python - 当不存在此类数据时,是否可以使用 python 将 IPTC 数据添加到 JPG?

python - 库类名的大写

python - 使用pandas过滤excel数据时出现KeyError

java - 如何将循环索引发送到另一个类?

python - 如何从序列化器中的另一个模型访问外键字段

php - 编辑实时运行的 PHP 脚本

c - 从循环中删除 if 语句

python - 使用索引不会更改 numpy 元素值

python - "Keyword cannot be an expression"

python - numpy ndarray 到 Pandas 数据框