发布时间: 2023-7-20 文章作者: myluzh 分类名称: Python 朗读文章
import numpy as np # 生成40-100的10行5列数据 arr1 = np.random.randint(40, 100, (10, 5)) """ #查看下arr1 arr1 Out[3]: array([[95, 65, 74, 76, 64], [95, 62, 74, 81, 59], [48, 93, 87, 40, 63], [99, 68, 57, 95, 51], [75, 78, 43, 50, 49], [75, 74, 86, 50, 98], [62, 61, 53, 40, 73], [58, 63, 99, 76, 85], [52, 44, 65, 77, 51], [90, 74, 93, 78, 46]]) """ # 取6行开始取,每行取0-5列 arr2 = arr1[6:, 0:5] """ # 查看下arr2 arr2 Out[4]: array([[62, 61, 53, 40, 73], [58, 63, 99, 76, 85], [52, 44, 65, 77, 51], [90, 74, 93, 78, 46]]) # 逻辑运算,查看大于60的有哪些 arr2 > 60 Out[5]: array([[ True, True, False, False, True], [False, True, True, True, True], [False, False, True, True, False], [ True, True, True, True, False]]) # 把大于60的改成1 arr2[arr2 > 60] = 1 Out[8]: array([[ 1, 1, 53, 40, 1], [58, 1, 1, 1, 1], [52, 44, 1, 1, 51], [ 1, 1, 1, 1, 46]]) """
# np.all() 判断前两名学生成绩是否及格 np.all(arr1[0:2,:] > 60) """ Out[11]: False """ # np.any() 判断前两名学生成绩中是否有大于80的 np.any(arr1[0:2,:] > 80) """ Out[12]: True """
# 使用np.where 判断前4名学生成绩中,大于60置为1否则为0 temp = arr1[:4, :4] """ #查看temp array([[95, 65, 74, 76], [95, 62, 74, 81], [48, 93, 87, 40], [99, 68, 57, 95]]) """ np.where(temp > 60, 1, 0) """ array([[1, 1, 1, 1], [1, 1, 1, 1], [0, 1, 1, 0], [1, 1, 0, 1]]) """ # 复合逻辑需要结合np.logical and和np.logical or使用 # 判断前四名学生,前四门课程中,成绩中大于60且小于90的换为1,否则为0 np.where(np.logical_and(temp > 60, temp < 90), 1, 0) """ array([[0, 1, 1, 1], [0, 1, 1, 1], [0, 0, 1, 0], [0, 1, 0, 0]]) """ # 判断前四名学生,前四门课程中,成绩中大于90或小于60的换为1,否则为0 np.where(np.logical_or(temp > 90, temp < 60), 1, 0) """ array([[1, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 1], [1, 0, 1, 1]]) """
# 接下来对于前四名学生,进行一些统计运算 # 指定列 去统计 temp = arr1[:4, 0:5] """ array([[78, 93, 57, 47, 67], [45, 79, 50, 68, 64], [66, 59, 65, 57, 99], [53, 68, 89, 82, 50]]) """ print(f"前四名学生,各科成绩的最大分:{np.max(temp, axis=0)}") # 前四名学生,各科成绩的最大分:[78 93 89 82 99] print(f"前四名学生,各科成绩的最小分:{np.min(temp, axis=0)}") # 前四名学生,各科成绩的最小分:[45 59 50 47 50] print(f"前四名学生,各科成绩波动情况:{np.std(temp, axis=0)}") # 前四名学生,各科成绩波动情况:[12.57974563 12.69596393 14.70331595 13.00961183 17.93042108] print(f"前四名学生,各科成绩的平均分:{np.mean(temp, axis=0)}") # 前四名学生,各科成绩的平均分:[60.5 74.75 65.25 63.5 70. ] # 如果需要统计出某科最高分对应的是哪个同学? # np.argmax(temp, axis=) # np.argmin(temp, axis=) print(f"前四名学生,各科成绩最高分对应的学生下标: {np.argmax(temp,axis=0)}") # 前四名学生,各科成绩最高分对应的学生下标: [0 0 3 3 2]
发表评论