2 条题解

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

    NUMPY027 题解:合法的向量运算

    题目

    以下表达式哪些是合法的?

    Z**Z
    2 << Z >> 2
    Z <- Z
    1j*Z
    Z/1/1
    ZZ
    

    解题思路

    逐个分析每个表达式的合法性。

    代码

    import numpy as np
    Z = np.array([1, 2, 3])  # 示例数组
    
    print(Z**Z)      # [1, 4, 27] - 合法
    print(2 << Z >> 2)  # [1, 2, 4] - 合法(位运算)
    print(Z <- Z)     # [False, False, False] - 合法(比较运算)
    print(1j*Z)       # [1j, 2j, 3j] - 合法(复数乘法)
    print(Z/1/1)     # [1., 2., 3.] - 合法(除法)
    # print(ZZ)     # 不合法!语法错误
    

    详解

    1. Z**Z —— 合法

    • 指数运算
    • 结果:[1^1, 2^2, 3^3] = [1, 4, 27]

    2. 2 << Z >> 2 —— 合法

    • 位运算:左移后右移
    • 2 << 1 >> 2 = 4 >> 2 = 1
    • 2 << 2 >> 2 = 8 >> 2 = 2
    • 2 << 3 >> 2 = 16 >> 2 = 4

    3. Z <- Z —— 合法

    • <- 是"小于等于"的比较运算符
    • 结果是布尔数组

    4. 1j*Z —— 合法

    • 1j 是 Python 的复数单位
    • 结果是复数数组

    5. Z/1/1 —— 合法

    • 连续除法

    6. ZZ —— 不合法

    • 语法错误,需要运算符连接

    核心知识点

    1. NumPy 支持多种运算符
    2. 位运算:<<, >>, &, |, ^
    3. 比较运算返回布尔数组
    • 0
      @ 2026-3-25 13:22:24

      NumPy027 题解

      题目分析

      本题要求判断哪些表达式是合法的。

      参考代码

      Z = np.array([1,2,3])
      print(Z**Z)          # legal
      print(2 << Z >> 2)  # legal
      print(Z <- Z)         # legal
      print(1j*Z)          # legal
      print(Z/1/1)          # legal
      # Z<Z>Z is illegal
      
      • 1

      信息

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