N维数组_3_ndarray运算

import numpy as np

1.逻辑运算

# 生成10名同学,5门功课的数据
score = np.random.randint(40, 100, [10, 5])
score
array([[98, 47, 44, 77, 43],
       [46, 78, 52, 54, 87],
       [64, 78, 67, 75, 59],
       [59, 72, 78, 59, 50],
       [92, 55, 56, 81, 84],
       [54, 94, 41, 72, 48],
       [96, 40, 67, 57, 71],
       [69, 42, 88, 52, 95],
       [74, 85, 98, 64, 71],
       [68, 62, 47, 96, 75]])
# 取出最后4名同学的成绩,用于逻辑判断
test_score=score[6:,:]
test_score
array([[69, 60, 85, 58, 95],
       [44, 45, 52, 52, 81],
       [56, 43, 81, 99, 96],
       [97, 51, 64, 99, 95]])
# 逻辑判断, 如果成绩大于60就标记为True 否则为False
test_score>60
array([[False, False,  True,  True,  True],
       [ True, False,  True,  True, False],
       [ True,  True,  True,  True,  True],
       [False, False,  True,  True, False]])
# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
test_score[test_score > 60] = 1
test_score

array([[ 1, 60,  1, 58,  1],
       [44, 45, 52, 52,  1],
       [56, 43,  1,  1,  1],
       [ 1, 51,  1,  1,  1]])

2.通用函数判断

# np.all() 全,都
# np.any() 任意一个
# 判断前两名同学的成绩[0:2, :]是否全及格
np.all(score[0:2, :] > 60)
False
# 判断前两名同学的成绩[0:2, :]是否有大于90分的
np.any(score[0:2, :] > 90)
True

3.np.where(三元运算符)

# 通过使用np.where能够进行更加复杂的运算
# 判断前四名学生,前四门课程中,成绩中大于60的置为1,否则为0
tem = score[0:4, 0:4]
np.where(tem > 60, 1, 0)
array([[1, 0, 1, 1],
   	   [1, 1, 1, 1],
       [1, 1, 1, 0],
       [1, 1, 1, 0]])
# 复合逻辑需要结合np.logical_and和np.logical_or使用
# 判断前四名学生,前四门课程中,成绩中大于60且小于90的换为1,否则为0
np.where(np.logical_and(tem > 60, tem < 90), 1, 0)
array([[0, 0, 0, 1],
       [0, 1, 0, 0],
       [1, 1, 1, 1],
       [0, 1, 1, 0]])
# 判断前四名学生,前四门课程中,成绩中大于90或小于60的换为1,否则为0
np.where(np.logical_or(tem < 60, tem > 90), 1, 0)
array([[1, 1, 1, 0],
       [1, 0, 1, 1],
       [0, 0, 0, 0],
       [1, 0, 0, 1]])

4.统计运算

# np.max(数据,值)
# np.min()
# np.media()中位数
# np.mean()平均值
# np.std()标准差
# np.var()方差
# np.argmax() 最大值对应的下标
# np.argmin() 最小值对应的下标
# 进行统计的时候,axis 轴的取值并不一定
# Numpy中不同的API轴的值都不一样,在这里,axis 0代表列, axis 1代表行去进行统计
# 接下来对于前四名学生,进行一些统计运算
temp = score[:4, :]
print("前四名学生,各科成绩的最高分:{}".format(np.max(temp, axis=0)))
print("前四名学生,各科成绩的最低分:{}".format(np.min(temp, axis=0)))
print("前四名学生,各科成绩波动情况:{}".format(np.std(temp, axis=0)))
print("前四名学生,各科成绩的平均分:{}".format(np.mean(temp, axis=0)))
temp
前四名学生,各科成绩的最高分:[98 78 78 77 87]
前四名学生,各科成绩的最低分:[46 47 44 54 43]
前四名学生,各科成绩波动情况:[19.20123694 12.79404158 13.16007219  9.93415824 16.7238602 ]
前四名学生,各科成绩的平均分:[66.75 68.75 60.25 66.25 59.75]





array([[98, 47, 44, 77, 43],
       [46, 78, 52, 54, 87],
       [64, 78, 67, 75, 59],
       [59, 72, 78, 59, 50]])
print("前四名学生,各科成绩最高分对应的下标:{}".format(np.argmax(temp, axis=0)))
前四名学生,各科成绩最高分对应的下标:[0 1 3 0 1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GJ_WL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值