A. 形状 (3,4) 与 (4,1) 的数组相加
B. 形状 (2,3) 与 (2,) 的数组相乘
C. 形状 (5,) 与 (5,2) 的数组相减
D. 形状 (3,1) 与 (3,2) 的数组相除
解析:此题答案为D,但我错选了B,要求尾部对齐后向前逐个比较维度,要么相等要么其中一个为1(可广播),满足任一条件即合法。
A:尾部对齐,倒数第1维4 vs 1 ,1可以广播,倒数第2维 3 vs 4 不相等且均不为1,不可广播;
B:(2,)为1维,尾部对齐时其唯一维度对应(2,3)的最后一维(列数:3),3vs2 不相等且均不为1 不合法;
C:(5,) 与(5,2) 尾部对齐后5 vs 2 不相等且均不为1 不合法;
D:(3,1) 与 (3,2) 对其后3 vs 3相等,合法, 1 vs 2不相等但有1,可广播。
题2:将一维数组 v 升级为行矩阵(1行多列)的正确 reshape 写法是 v.reshape(1, -1) 或者v.reshape(1, len(v))题3:在 NumPy 中,arr[布尔数组]操作中,布尔数组充当:掩码(mask)角色。x = np.array([1,2,3])y = np.array([[4],[5],[6]])print(x * y)
[[ 4 8 12] [ 5 10 15] [ 6 12 18]]
题5:如何将一个形状为 (4,6) 的矩阵展平为一维向量,给出两种写法? 答:arr.reshape(-1) 或 arr.flatten()1.生成一个 8×8 的随机整数矩阵(范围 0~100),然后:arr = np.random.randint(0,101,size=(8,8))print(arr[2,:])#提取第三行print(arr[:,4]) #提取第五列arr[:3,-4:] = 0 #右上角4*4子块全部替换为0print(np.max(arr))#求array整体最大值print(np.min(arr))#求array整体最小值print(np.mean(arr))#求array整体平均值print(np.std(arr)) #求array整体标准差
题7:1.创建一个长度为 1000 的一维数组,元素服从均值为 170、标准差为 10 的正态分布(模拟身高)。2.统计身高在 160~180 之间的人数3.输出所有身高超过 190 的索引位置4.判断是否所有身高都大于 140arr = np.random.normal(170,10,1000)print(np.sum((arr>160)&(arr<180))) print(np.where(arr>190))print(np.all(arr>140))
注:第2题np.sum(arr>160 & arr<180),np.sum(160<arr<180)写法都不对,因为运算符&的优先级高于比较运算符>,<,不加括号会优先计算160&arr