在python中匹配最小值等效代码

在python中匹配最小值等效代码,python,pandas,match,Python,Pandas,Match,我想寻找MATCH Excel函数的最快等效Python代码,该函数返回“范围”中“value”的最小和最近值的位置,即MATCH(value,RANGE,-1)。此函数应应用于多个“值”,即向量 我在下面有一个初始解决方案,但它非常慢,元素数量很高(100k): 在下面的示例中,我希望匹配“vector”中的每个值,以找到其最小最近值在“vector_to_match”中的位置: 使用广播: out = np.sum(np.array((vector_to_match < vector[

我想寻找MATCH Excel函数的最快等效Python代码,该函数返回“范围”中“value”的最小和最近值的位置,即MATCH(value,RANGE,-1)。此函数应应用于多个“值”,即向量

我在下面有一个初始解决方案,但它非常慢,元素数量很高(100k):

在下面的示例中,我希望匹配“vector”中的每个值,以找到其最小最近值在“vector_to_match”中的位置:

使用广播:

out = np.sum(np.array((vector_to_match < vector[:, None]) * 1), axis=1) - 1

你试过np吗?在哪里(条件)?我不确定这是否是你真正想要的,但它似乎是对的。你能从我上面的代码中详细说明一个答案吗?感激。无法理解想要的输出是什么。请提供一个例子。只需编辑我的问题。我想在Python中复制Match(value,range,-1)Excel函数,该函数返回“range”中“value”的最小最近值的位置。但我的代码太慢,在“范围”或“值”中有大量元素。如果你只是重新运行我的代码,将100000替换为10,你肯定会理解我的问题!当使用
MATCH
查找“最近的”时,它将利用已排序的单元格。。。使用伟大的答案,谢谢@迪普是的,需要记忆,但应该工作得更好
perfplot.show(
    setup=lambda n: np.random.rand(n),  # or setup=np.random.rand
    kernels=[
        A_Finding
    ],
    labels=["c_"],
    n_range=[10 ** k for k in range(5)],
    xlabel="len(a)",
)
out = np.sum(np.array((vector_to_match < vector[:, None]) * 1), axis=1) - 1
out = vector_to_match.searchsorted(vector) - 1