Numpy 同步两个阵列的矢量化方法

Numpy 同步两个阵列的矢量化方法,numpy,pandas,vectorization,Numpy,Pandas,Vectorization,我有两个熊猫时间序列:x,和y,我想“从”同步。我想为x中的每个元素查找y中最新的(按索引)元素(按索引值)。例如,我想计算这个new\ux: x new_x ---- ----- 13:01 13:00 14:02 14:00 y ---- 13:00 13:01 13:30 14:00 我在寻找一个矢量化的解决方案,而不是Python循环。时间值基于Numpydatetime64。y数组的长度约为数百万,因此O(n^2)解可能不实用。在某些圆中,此操作称为“

我有两个熊猫时间序列:
x
,和
y
,我想“从”同步。我想为
x
中的每个元素查找
y
中最新的(按索引)元素(按索引值)。例如,我想计算这个
new\ux

x       new_x
----    -----
13:01   13:00  
14:02   14:00

y
----
13:00
13:01
13:30
14:00

我在寻找一个矢量化的解决方案,而不是Python循环。时间值基于Numpy
datetime64
y
数组的长度约为数百万,因此O(n^2)解可能不实用。

在某些圆中,此操作称为“asof”联接:


在内部,它使用。

使用
Series.searchsorted()
返回要插入
x
y
索引。然后,您可以从该值中减去一,并使用它来索引
y

In [1]: x
Out[1]:
0    1301
1    1402

In [2]: y
Out[2]:
0    1300
1    1301
2    1330
3    1400

In [3]: y[y.searchsorted(x)-1]
Out[3]:
0    1300
3    1400

注意:上面的示例使用int64系列

这似乎符合您的要求:此问题重复了“谢谢”。另请参见:有关McKinney的“使用数组操作”中的“O(n log n)NA友好时间序列”。但是
asof()
应该更快,因为
searchsorted()
使用二进制搜索。
In [1]: x
Out[1]:
0    1301
1    1402

In [2]: y
Out[2]:
0    1300
1    1301
2    1330
3    1400

In [3]: y[y.searchsorted(x)-1]
Out[3]:
0    1300
3    1400