1 条题解

  • 0
    @ 2026-3-26 13:37:07

    NUMPY066 题解:视图与 base 属性

    题目

    将数组从第 kk 个元素开始每隔一个取一个,判断是否是视图。

    解题思路

    1. 使用切片 arr[k::2]\texttt{arr[k::2]} 获取元素
    2. 检查 .base\texttt{.base} 属性判断是否是视图

    代码

    import numpy as np
    
    n = int(input())
    arr = np.array(list(map(int, input().split())))
    k = int(input())
    B = arr[k::2]
    print(B)
    print(B.base is arr)
    

    代码详解

    • arr[k::2]\texttt{arr[k::2]} —— 从索引 kk 开始,每隔一个取一个
    • .base\texttt{.base} —— 返回视图的原始数组
    • B.base is arr\texttt{B.base is arr} —— 判断 BB 是否是 arrarr 的视图

    运行示例

    输入:

    10
    1 2 3 4 5 6 7 8 9 10
    0
    

    分析:

    • 从索引 00 开始,每隔一个取一个:[1,3,5,7,9][1, 3, 5, 7, 9]
    • 切片操作返回的是视图,所以 B.base is arr\texttt{B.base is arr}True\texttt{True}

    输出:

    [ 1  3  5  7  9]
    True
    

    核心知识点

    1. .base\texttt{.base} —— 返回视图的原始数组
    2. 切片返回视图,不是副本
    3. is\texttt{is} —— 判断是否是同一个对象
    • 1

    信息

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