2 条题解

  • 0
    @ 2026-3-26 17:42:22

    NUMPY025 题解:条件赋值

    题目

    给定数组 np.arange(11),将所有在 3 到 8 之间的元素取反(原地操作)。

    解题思路

    使用布尔索引找到符合条件的元素,然后直接取反。

    代码

    import numpy as np
    Z = np.arange(11)
    Z[(3 < Z) & (Z < 8)] *= -1
    print(Z)
    

    代码详解

    1. np.arange(11) —— 创建 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    2. (3 < Z) & (Z < 8) —— 布尔数组,表示 3<Z<8 的位置
      • Z > 3[F,F,F,F,T,T,T,T,T,T,T]
      • Z < 8[T,T,T,T,T,T,T,T,T,F,F]
      • 交集:[F,F,F,F,T,T,T,T,F,F,F]
    3. Z[条件] *= -1 —— 对符合条件的元素取反

    输出

    [ 0  1  2  3 -4 -5 -6 -7 -8  9 10]
    

    布尔索引原理

    # 布尔索引示例
    Z = np.array([0, 1, 2, 3, 4, 5])
    mask = Z > 2  # [F,F,F,T,T,T]
    Z[mask] = -1 # [0,1,2,-1,-1,-1]
    

    核心知识点

    1. 布尔索引 —— 用布尔数组选择元素
    2. & 运算符 —— 布尔数组的"与"操作
    3. 原地操作 *= —— 修改原数组
    • 0
      @ 2026-3-25 14:47:11

      NumPy025 题解

      题目分析

      本题要求将数组中在 aabb 之间的元素取反。

      参考代码

      import numpy as np
      Z = eval(input())
      a, b = map(int, input().split())
      Z[(a < Z) & (Z < b)] *= -1
      print(Z)
      
      • 1

      信息

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