首页 > 解决方案 > 向量化两个数字之间的查找

问题描述

我正在尝试找到一种使用 numpy 对以下 for 循环进行矢量化的方法。这个 for 循环让我的代码真的很拖沓。我遇到的问题是,我需要根据值 val 落在数组 row 范围内的索引来查找字典 d 中的值。

for i in range(len(row)-1):
    if row[i]<val<=row[i+1]:
        return d[i]*row[-1]

我想我可以使用 np.where 和 np.logical_and 来获取数组中的两个数字,但是我需要索引来从字典中获取值,这就是我似乎无法做到的部分弄清楚没有循环。

标签: pythonpandasnumpycython

解决方案


感谢 Divakar 的评论,我认为正确的答案是用这个 numpy 怪物替换整个 for 循环:

 np.vectorize(d1.get)((np.searchsorted(row[:-1],vals,side='left'))-1)*row[-1]

推荐阅读