# NumPy 科学计算库核心知识点总结题

## 一、填空题

1. NumPy 中核心的 N 维数组对象是\_\_\_\_\_\_，其别名是 array。
2. 数组的秩指的是\_\_\_\_\_\_的个数，一维数组的秩为\_\_\_\_\_\_。
3. 查看 NumPy 数组维度个数的属性是\_\_\_\_\_\_，描述数组各维度大小的属性是\_\_\_\_\_\_。
4. 创建元素全为 0 的数组使用\_\_\_\_\_\_函数，创建等差数组且指定元素个数的函数是\_\_\_\_\_\_。
5. 二维数组中，轴 0 代表\_\_\_\_\_\_方向，轴 1 代表\_\_\_\_\_\_方向，按行求和的参数为\_\_\_\_\_\_。
6. 将多维数组转换为一维数组的函数是\_\_\_\_\_\_，查找数组中唯一元素的函数是\_\_\_\_\_\_。
7. 实现数组转置的属性是\_\_\_\_\_\_，垂直堆叠多个数组的函数是\_\_\_\_\_\_，堆叠时要求数组\_\_\_\_\_\_数相同。
8. np.where () 函数是三元表达式`x if condition else y`的\_\_\_\_\_\_版本。

## 二、选择题（单选 / 多选）

1. 以下不属于 NumPy 数组特点的是（）
   A. 固定大小，创建后无法动态增减
   B. 元素可包含多种不同数据类型
   C. 适合大规模数据的数学运算
   D. 支持矢量算术和广播机制
2. 下列关于数组索引的说法，正确的是（）
   A. 一维数组仅有正向索引，无反向索引
   B. 二维数组获取单个元素格式为`数组[行索引, 列索引]`
   C. 花式索引是使用整数数组 / 列表作为索引
   D. 布尔索引的布尔数组长度需与原数组对应轴元素数一致
3. 转换数组数据类型的方法是（）
   A. dtype () B. astype () C. type () D. change\_dtype ()
4. 以下能实现数组元素级算术运算的是（）
   A. 形状相同的数组直接做加减乘除
   B. 数组与标量做算术运算
   C. 形状兼容的不同形状数组做算术运算（触发广播）
   D. 任意形状不同的数组都能直接运算
5. 下列函数中，属于 NumPy 一元通用函数的是（）
   A. np.abs () B. np.add () C. np.sqrt () D. np.maximum ()
6. 关于 np.all () 和 np.any ()，说法正确的是（）
   A. np.all () 判断数组**所有**元素满足条件，返回布尔值
   B. np.any () 判断数组**至少一个**元素满足条件，返回布尔值
   C. 判断数组所有元素 0<x<2000 的写法是`np.all((arr>0) & (arr<2000))`
   D. 可以使用`and`替代`&`实现多条件判断
7. 创建 3 行 3 列、元素全为 1 的 int32 类型数组，正确的代码是（）
   A. np.ones ((3,3), dtype=np.int32)
   B. np.ones (3,3, dtype='int32')
   C. np.ones ((3,3), dtype='i4')
   D. np.ones ((3,3)).astype (np.int32)
8. 关于数组重塑 reshape ()，错误的是（）
   A. 重塑前后数组元素总个数不变
   B. 可将一维数组重塑为二维 / 三维数组
   C. 重塑会改变数组元素的原始值
   D. 一维数组`np.arange(12)`可重塑为 (4,3) 的二维数组
9. 以下属于 NumPy 随机数模块的函数是（）
   A. np.random.rand () B. np.random.randint ()
   C. np.random.seed () D. np.random.normal ()
10. 数组排序 sort () 的特点是（）
    A. 直接修改原数组，无返回值
    B. axis=1 表示按行排序
    C. axis=0 表示按列排序
    D. 可对任意维度的数组进行排序

## 三、判断题（对打√，错打 ×）

1. NumPy 数组的 size 属性值等于 shape 属性中元组各元素的乘积。（）
2. 广播机制中，两个数组形状右对齐后，对应维度大小相等或其中一个为 1，即为形状兼容。（）
3. 二维数组切片`arr[:2, :2]`表示取前 2 行、前 2 列的元素。（）
4. np.unique () 函数可直接对二维数组查找唯一元素，无需展开。（）
5. 数组的 T 属性可实现任意维度数组的转置操作。（）
6. 花式索引操作二维数组时，`arr[[1,4], [2,3]]`表示取行 1 列 2、行 4 列 3 的元素。（）
7. 浮点数数组转换为整数数组时，会自动四舍五入保留整数。（）
8. np.cumsum () 函数用于计算数组元素的累计和，返回新数组。（）
9. 使用 vstack () 堆叠数组时，行数列数都必须完全相同。（）
10. flatten () 函数展开多维数组后，会改变原数组的结构。（）

