2 条题解

  • 0
    @ 2026-3-26 17:43:48

    NUMPY041 题解:快速求和

    题目

    如何比 np.sum 更快地求小数组的和?

    解题思路

    使用 np.add.reduce()np.sum() 在某些场景下更快。

    代码

    import numpy as np
    Z = np.arange(10)
    print(np.add.reduce(Z))
    

    代码详解

    1. np.arange(10) —— 创建 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    2. np.add.reduce(Z) —— 累加所有元素

    原理

    np.add.reduce() 等价于:

    0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45
    

    add.reduce vs sum

    # np.sum 的实现
    np.sum(Z) == Z.sum()
    
    # np.add.reduce 的实现
    np.add.reduce(Z) == 0 + 1 + 2 + ... + 9
    

    性能对比

    import numpy as np
    import time
    
    Z = np.arange(1000)
    
    # 方法1
    start = time.time()
    for _ in range(10000):
        np.sum(Z)
    print(f"sum: {time.time() - start:.4f}s")
    
    # 方法2
    start = time.time()
    for _ in range(10000):
        np.add.reduce(Z)
    print(f"add.reduce: {time.time() - start:.4f}s")
    

    常用 reduce 操作

    np.add.reduce(Z)   # 求和
    np.multiply.reduce(Z)  # 累乘
    np.logical_and.reduce(Z)  # 逻辑与
    

    核心知识点

    1. np.add.reduce() —— 累加
    2. reduce 是函数式编程的概念
    3. 对于大数组,差异不明显
    • 0
      @ 2026-3-25 15:38:23

      NumPy041 题解

      参考代码

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

      信息

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