gpt4 book ai didi

python - 将浮点值舍入到区间限制/网格

转载 作者:太空狗 更新时间:2023-10-29 20:13:22 26 4
gpt4 key购买 nike

我有一个(随机) float 数组。我想将每个值四舍五入到任意网格的限制。请参阅以下示例:

import numpy as np
np.random.seed(1)

# Setup
sample = np.random.normal(loc=20, scale=6, size=10)
intervals = [-np.inf, 10, 12, 15, 18, 21, 25, 30, np.inf]

# Round each interval up
for i in range(len(intervals) - 1):
sample[np.logical_and(sample > intervals[i], sample <= intervals[i+1])] = intervals[i+1]

这导致:

[ 30.  18.  18.  15.  30.  10.  inf  18.  25.  21.]

如何避免 for 循环?我确信有一些方法可以使用 NumPy 的数组魔法,但我现在还没有看到。

最佳答案

如果intervals被排序,你可以使用np.searchsorted :

np.array(intervals)[np.searchsorted(intervals, sample)]
# array([ 30., 18., 18., 15., 30., 10., inf, 18., 25., 21.])

searchsorted 返回元素所属区间的索引:

np.searchsorted(intervals, sample)
# array([7, 4, 4, 3, 7, 1, 8, 4, 6, 5])

默认 side='left' 返回该区间的最小索引,结果属于左开右闭场景。

关于python - 将浮点值舍入到区间限制/网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51502197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com