如果按月排序,请使用np.searchsorted
。否则,排序然后使用np.searchsorted
:
import numpy as np
quarters = np.array([200712, 200803, 200806, 200809, 200812, 200903])
months = np.arange(200801, 200813)
loc = np.searchsorted(months, quarters)
np.searchsorted
返回插入位置。如果您的数据有可能不在正确的范围内,那么您之后可能需要检查一下:
valid = (quarters <= months.max()) & (quarters >= months.min())
loc = loc[valid]
这是一个O(N log N)解决方案。如果就运行时间而言,这仍然对您的程序来说很重要,那么您可以使用散列方案在C(++)中执行此子例程,该方案应为O(N)(并避免某些常量因素,当然)。