2 条题解

  • 0
    @ 2026-3-26 17:44:31

    NUMPY050 题解:找最接近的值

    题目

    如何在数组中找出与给定标量最接近的值?

    解题思路

    计算每个元素与目标值的差的绝对值,然后找最小值对应的索引。

    代码

    import numpy as np
    Z = np.arange(100)
    v = np.random.uniform(0, 100)
    index = (np.abs(Z - v)).argmin()
    print(Z[index])
    

    代码详解

    1. np.arange(100) —— 创建 0-99 的数组
    2. np.random.uniform(0, 100) —— 随机目标值(假设为 42.7)
    3. np.abs(Z - v) —— 每个元素与目标值的差的绝对值
      • |0-42.7| = 42.7
      • |1-42.7| = 41.7
      • ...
      • |42-42.7| = 0.7 ← 最小
      • |43-42.7| = 0.3 ← 实际最小
    4. .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]
    

    核心知识点

    1. np.abs() —— 绝对值
    2. .argmin() —— 最小值索引
    3. np.searchsorted() —— 二分查找插入位置
    • 0
      @ 2026-3-25 15:38:59

      NumPy050 题解

      参考代码

      import numpy as np
      Z = np.array(list(map(int, input().split())))
      print(np.cumsum(Z))
      
      • 1

      信息

      ID
      101
      时间
      1000ms
      内存
      256MiB
      难度
      (无)
      标签
      (无)
      递交数
      0
      已通过
      0
      上传者