Numpy的高级运算(布尔赋值,all,any,where)

  • Post author:
  • Post category:其他




1 逻辑运算

>>> score = np.random.randint(40, 100, (10, 5))          # 生成10名同学,5门功课的数据
>>> test_score = score[6:, 0:5]                          # 取出最后4名同学的成绩,用于逻辑判断


逻辑判断, 如果成绩大于60就标记为

True

否则为

False

>>> test_score > 60                                                      
array([[ True,  True,  True, False,  True],
       [ True,  True,  True, False,  True],
       [ True,  True, False, False,  True],
       [False,  True,  True,  True,  True]])



BOOL

赋值, 将满足条件的设置为指定的值

>>> test_score[test_score > 60] = 1
>>> test_score
array([[ 1,  1,  1, 52,  1],
       [ 1,  1,  1, 59,  1],
       [ 1,  1, 44, 44,  1],
       [59,  1,  1,  1,  1]])



2 判断函数



np.all()

判断前两名同学的成绩[0:2, :]是否全及格

>>> np.all(score[0:2, :] > 60)
False



np.any()

判断前两名同学的成绩[0:2, :]是否有大于90分的

>>> np.any(score[0:2, :] > 80)
True



3 np.where(三元运算符)


判断前四名学生,前四门课程中,成绩中大于60的置为1,否则为0

temp = score[:4, :4]
np.where(temp > 60, 1, 0)


复合逻辑需要结合np.logical_and和np.logical_or使用



a

判断前四名学生,前四门课程中,成绩中大于60且小于90的换为1,否则为0

np.where(np.logical_and(temp > 60, temp < 90), 1, 0)


b

判断前四名学生,前四门课程中,成绩中大于90或小于60的换为1,否则为0

np.where(np.logical_or(temp > 90, temp < 60), 1, 0)



版权声明:本文为weixin_44695969原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。