题目
根据以下代码,得到的结果为? import numpy as np a=np.arange(10,50,2).reshape(4,5).T print(a.shape) A (4,5) B (20,1) C (5,4) D (1,20)
根据以下代码,得到的结果为?
import numpy as np
a=np.arange(10,50,2).reshape(4,5).T
print(a.shape)
A (4,5)
B (20,1)
C (5,4)
D (1,20)
题目解答
答案
为了确定代码得到的结果,让我们逐步分析。
1. **生成数组:**
代码 `np.arange(10, 50, 2)` 生成一个从 10 到 50(不包括 50)的整数数组,步长为 2。这将创建以下数组:
\[
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48]
\]
这个数组有 20 个元素。
2. **重塑数组:**
代码 `a = np.arange(10, 50, 2).reshape(4, 5)` 将包含 20 个元素的数组重塑为 4 行 5 列的矩阵。重塑后的数组如下:
\[
\begin{bmatrix}
10 & 12 & 14 & 16 & 18 \\
20 & 22 & 24 & 26 & 28 \\
30 & 32 & 34 & 36 & 38 \\
40 & 42 & 44 & 46 & 48
\end{bmatrix}
\]
这个数组的形状是 (4, 5)。
3. **转置数组:**
代码 `a.T` 将数组转置。矩阵的转置是通过将行的元素与列的元素互换获得的。转置后的数组如下:
\[
\begin{bmatrix}
10 & 20 & 30 & 40 \\
12 & 22 & 32 & 42 \\
14 & 24 & 34 & 44 \\
16 & 26 & 36 & 46 \\
18 & 28 & 38 & 48
\end{bmatrix}
\]
转置后数组的形状是 (5, 4)。
4. **打印形状:**
代码 `print(a.shape)` 将打印转置后数组的形状,即 (5, 4)。
因此,得到的结果是 $\boxed{C}$。
解析
考查要点:本题主要考查NumPy数组的生成、重塑和转置操作,以及对数组形状的理解。
解题核心思路:
- 生成数组:使用
np.arange生成指定范围和步长的一维数组。 - 重塑数组:通过
reshape方法调整数组的行和列。 - 转置数组:使用
.T属性交换数组的行和列。 - 确定形状:通过
shape属性获取最终数组的维度。
破题关键点:
arange的参数:注意arange(10,50,2)生成的元素个数为20。reshape的可行性:确保元素总数与新形状匹配。- 转置后的形状:转置后行和列的维度交换。
1. 生成初始数组
np.arange(10, 50, 2)生成从10开始,步长为2,末尾小于50的数组:
$[10, 12, 14, \dots, 48]$
元素总数为:
$\frac{50-10}{2} = 20$
2. 重塑数组
reshape(4,5)将数组调整为4行5列:
$\begin{bmatrix}10 & 12 & 14 & 16 & 18 \\20 & 22 & 24 & 26 & 28 \\30 & 32 & 34 & 36 & 38 \\40 & 42 & 44 & 46 & 48\end{bmatrix}$
此时形状为(4,5)。
3. 转置数组
.T操作交换行和列,得到新形状(5,4):
$\begin{bmatrix}10 & 20 & 30 & 40 \\12 & 22 & 32 & 42 \\14 & 24 & 34 & 44 \\16 & 26 & 36 & 46 \\18 & 28 & 38 & 48\end{bmatrix}$
4. 输出形状
a.shape返回转置后的形状(5,4),对应选项C。