2 条题解
-
0
NUMPY050 题解:找最接近的值
题目
如何在数组中找出与给定标量最接近的值?
解题思路
计算每个元素与目标值的差的绝对值,然后找最小值对应的索引。
代码
import numpy as np Z = np.arange(100) v = np.random.uniform(0, 100) index = (np.abs(Z - v)).argmin() print(Z[index])代码详解
np.arange(100)—— 创建 0-99 的数组np.random.uniform(0, 100)—— 随机目标值(假设为 42.7)np.abs(Z - v)—— 每个元素与目标值的差的绝对值- |0-42.7| = 42.7
- |1-42.7| = 41.7
- ...
- |42-42.7| = 0.7 ← 最小
- |43-42.7| = 0.3 ← 实际最小
.argmin()—— 返回最小值的索引
示例
Z = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] v = 3.3 abs_diff = |0-3.3|=3.3, |1-3.3|=2.3, |2-3.3|=1.3, |3-3.3|=0.3, |4-3.3|=0.7 最小的是 0.3,对应索引 3 Z[3] = 3 ← 最接近 3.3 的值其他方法
# 方法2:使用 searchsorted index = np.searchsorted(np.sort(Z), v) if index == 0: result = Z[0] elif index == len(Z): result = Z[-1] else: result = Z[index - 1] if v - Z[index-1] < Z[index] - v else Z[index]核心知识点
np.abs()—— 绝对值.argmin()—— 最小值索引np.searchsorted()—— 二分查找插入位置
- 1
信息
- ID
- 101
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者