题目 1:温度数据分析
题目:某城市一周的最高气温(℃)为 [28, 30, 29, 31, 32, 30, 29]。
- 计算平均气温、最高气温和最低气温。
- 找出气温超过 30℃ 的天数。
解析:
- 使用 np.mean() 计算平均值。
- 使用 np.max() 和 np.min() 计算极值。
- 使用布尔索引 arr[arr > 30] 筛选数据。
答案:
import numpy as np
temps = np.array([28, 30, 29, 31, 32, 30, 29])
print("平均气温:", np.mean(temps)) # 29.857
print("最高气温:", np.max(temps)) # 32
print("最低气温:", np.min(temps)) # 28
print("超过30℃的天数:", len(temps[temps > 30])) # 2
题目 2:学生成绩统计
题目:某班级 5 名学生的数学成绩为 [85, 90, 78, 92, 88]。
- 计算成绩的平均分、中位数和标准差。
- 将成绩转换为百分制(假设满分为 100)。
解析:
- 使用 np.mean()、np.median() 和 np.std() 计算统计量。
- 百分制无需转换(已经是百分制)。
答案:
scores = np.array([85, 90, 78, 92, 88])
print("平均分:", np.mean(scores)) # 86.6
print("中位数:", np.median(scores)) # 88
print("标准差:", np.std(scores)) # 4.98
题目 3:矩阵运算
题目:给定矩阵 A = [[1, 2], [3, 4]] 和 B = [[5, 6], [7, 8]]。
- 计算 A + B 和 A * B(逐元素乘法)。
- 计算 A 和 B 的矩阵乘法(点积)。
解析:
- A + B 和 A * B 是逐元素运算。
- 矩阵乘法用 A @ B 或 np.dot(A, B)。
答案:
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
print("A + B:\n", A + B) # [[6, 8], [10, 12]]
print("A * B:\n", A * B) # [[5, 12], [21, 32]]
print("A @ B:\n", A @ B) # [[19, 22], [43, 50]]
题目 4:随机数据生成
题目:生成一个 (3, 4) 的随机整数数组,范围 [0, 10)。
- 计算每列的最大值和每行的最小值。
- 将数组中的所有奇数替换为 -1。
解析:
- 使用 np.random.randint() 生成随机数。
- np.max(axis=0) 计算列最大值,np.min(axis=1) 计算行最小值。
- 使用布尔索引 arr[arr % 2 == 1] = -1 替换奇数。
答案:
arr = np.random.randint(0, 10, (3, 4))
print("原数组:\n", arr)
print("每列最大值:", np.max(arr, axis=0))
print("每行最小值:", np.min(arr, axis=1))
arr[arr % 2 == 1] = -1 # 奇数替换为-1
print("替换后:\n", arr)
题目 5:数组变形
题目:创建一个 1 到 12 的一维数组,并转换为 (3, 4) 的二维数组。
- 计算每行的和与每列的平均值。
- 将数组展平为一维数组。
解析:
- 用 np.arange(1, 13).reshape(3, 4) 创建数组。
- np.sum(axis=1) 计算行和,np.mean(axis=0) 计算列均值。
- arr.flatten() 展平数组。
答案:
arr = np.arange(1, 13).reshape(3, 4)
print("每行和:", np.sum(arr, axis=1)) # [10, 26, 42]
print("每列均值:", np.mean(arr, axis=0)) # [5, 6, 7, 8]
print("展平后:", arr.flatten()) # [1, 2, ..., 12]
题目 6:布尔索引
题目:生成一个 (5, 5) 的随机数组,范围 [0, 20)。
- 找出数组中大于 10 的元素。
- 将所有大于 10 的元素替换为 0。
解析:
- 使用 np.random.randint() 生成数组。
- 用 arr[arr > 10] 筛选元素。
- 直接赋值 arr[arr > 10] = 0 替换。
答案:
arr = np.random.randint(0, 20, (5, 5))
print(">10的元素:", arr[arr > 10])
arr[arr > 10] = 0 # 替换为0
print("替换后:\n", arr)
题目 7:统计函数应用
题目:某公司 6 个月的销售额(万元)为 [120, 135, 110, 125, 130, 140]。
- 计算销售额的总和、均值和方差。
- 找出销售额最高的月份和最低的月份。
解析:
- np.sum()、np.mean()、np.var() 计算统计量。
- np.argmax() 和 np.argmin() 返回极值索引。
答案:
sales = np.array([120, 135, 110, 125, 130, 140])
print("总和:", np.sum(sales)) # 760
print("均值:", np.mean(sales)) # 126.67
print("方差:", np.var(sales)) # 108.89
print("最高月份:", np.argmax(sales) + 1) # 6
print("最低月份:", np.argmin(sales) + 1) # 3
题目 8:数组拼接
题目:给定 A = [1, 2, 3] 和 B = [4, 5, 6]。
- 水平拼接为 [1, 2, 3, 4, 5, 6]。
- 垂直拼接为 [[1, 2, 3], [4, 5, 6]]。
解析:
- 水平拼接用 np.concatenate((A, B))。
- 垂直拼接需先转为二维 np.vstack((A, B))。
答案:
A, B = np.array([1, 2, 3]), np.array([4, 5, 6])
print("水平拼接:", np.concatenate((A, B))) # [1, 2, 3, 4, 5, 6]
print("垂直拼接:\n", np.vstack((A, B))) # [[1,2,3], [4,5,6]]
题目 9:唯一值与排序
题目:给定数组 [2, 1, 2, 3, 1, 4, 3]。
- 找出唯一值并排序。
- 计算每个唯一值出现的次数。
解析:
- np.unique() 返回唯一值并排序。
- return_counts=True 统计频次。
答案:
arr = np.array([2, 1, 2, 3, 1, 4, 3])
unique_values, counts = np.unique(arr, return_counts=True)
print("唯一值:", unique_values) # [1, 2, 3, 4]
print("出现次数:", counts) # [2, 2, 2, 1]
题目 10:缺失值处理
题目:给定数组 [1, np.nan, 3, np.nan, 5]。
- 计算非缺失值的数量。
- 将缺失值替换为 0。
解析:
- np.isnan() 检测缺失值。
- ~np.isnan(arr) 计算非缺失值数量。
- arr[np.isnan(arr)] = 0 替换缺失值。
答案:
arr = np.array([1, np.nan, 3, np.nan, 5])
print("非缺失值数量:", np.sum(~np.isnan(arr))) # 3
arr[np.isnan(arr)] = 0 # 替换为0
print("替换后:", arr) # [1, 0, 3, 0, 5]
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END











请登录后查看评论内容