题目
根据以下代码, 得到的结果为? import numpy as np a=np.arange(10).reshape(2,5).T b=np.arange(20).reshape(5,4) c=np.hstack((a,b)) print(c.shape)A. (5,6)B. (5,5)C. (6,5)D. (2,4)
根据以下代码, 得到的结果为? import numpy as np a=np.arange(10).reshape(2,5).T b=np.arange(20).reshape(5,4) c=np.hstack((a,b)) print(c.shape)
A. (5,6)
B. (5,5)
C. (6,5)
D. (2,4)
题目解答
答案
A. (5,6)
解析
考查要点:本题主要考查NumPy数组的形状变换与数组拼接操作,重点在于理解转置(.T)和水平堆叠(hstack)对数组维度的影响。
解题核心思路:
- 确定每个数组的原始形状:通过
reshape和arange生成初始数组。 - 分析转置操作后的形状:转置会交换行、列数。
- 验证拼接条件:
hstack要求拼接数组的行数相同,最终列数为各数组列数之和。
破题关键点:
- 转置后的形状计算:
a的原始形状为(2,5),转置后变为(5,2)。 - 拼接可行性判断:
a和b的行数均为5,满足hstack的拼接条件。
步骤1:定义数组a
a = np.arange(10).reshape(2,5).Tnp.arange(10)生成一维数组[0,1,2,...,9]。reshape(2,5)将其变为2行5列的二维数组。.T转置后,形状变为5行2列,即a.shape = (5,2)。
步骤2:定义数组b
b = np.arange(20).reshape(5,4)np.arange(20)生成[0,1,2,...,19]。reshape(5,4)直接形成5行4列的数组,形状为(5,4)。
步骤3:水平拼接a和b
c = np.hstack((a, b))hstack沿列方向拼接,要求两数组的行数相同。a有2列,b有4列,拼接后总列数为2+4=6,行数仍为5。- 最终
c.shape = (5,6)。