我有一个levels
数组
# 0 1 2 3 4
levels = np.array(( 0.2, 0.4, 0.6, 0.8 ))
以及values
阵列,例如,
np.random.seed(20230204)
values = np.random.rand(5)
最后是SLOW函数
def map_into_levels(values, levels):
result = []
for n in np.asarray(values):
for r, level in enumerate(levels):
if n <= level:
break
else:
r += 1
result.append(r)
return result
所以我有
In [153]: np.random.seed(20220204)
...: values = np.random.rand(6)
...: levels = np.array(( 0.2, 0.4, 0.6, 0.8 ))
...: result = map_into_levels(values, levels)
...: print(levels)
...: print(values)
...: print(result)
[0.2 0.4 0.6 0.8]
[0.00621839 0.23945242 0.87124946 0.56328486 0.5477085 0.88745812]
[0, 1, 4, 2, 2, 4]
In [154]:
你能给我指一个能帮助我加速操作的Numpy原语吗?
1条答案
按热度按时间fzsnzjdm1#
假设
levels
已经排序了,你需要np.searchsorted
。它 * 找到应该插入元素以保持顺序的索引 *: