第2章【思考与练习2】将scores数组中所有学生的英语成绩减去3分并显示。统计scores数组中每名学生所有科目的平均分并显示。使用随机函数生成[-1,1]之间服从均匀分布的3×4二维数组,求元素和

P30思考练习题2

1,将scores数组中所有学生的英语成绩减去3分并显示。

2.统计scores数组中每名学生所有科目的平均分并显示。

3,使用随机函数生成[-1,1]之间服从均匀分布的3×4二维数组,并计算所有元素的和。

#思考与练习2
import numpy as np
names=np.array(['王薇','肖良英','方绮雯','刘旭阳','钱易铭'])
subjects=np.array(['Math','English','Python','Chinese','Art','Database','Physics'])
scores=np.array([[70,85,77,90,82,84,89],
                 [60,64,80,75,80,92,90],
                 [90,93,88,87,86,90,91],
                 [80,82,91,88,83,86,80],
                 [88,72,78,90,91,73,80]])
#1
a = scores[: ,subjects =='English']-3
print(a)
 
#2
b = scores.mean(axis = 1)
print("每位同学的所有科目的平均分为:")
for i in range(0,5):
    print(names[i],":",b[i])
    
#3
b = np.random.uniform(-1,1,size = (3,4))     #uniform()函数的生成的随机数范围,两端都取。此题中可取-1与1。
print(b)
print(b.sum())

【补充作业题2】

1.选取scores中第2行第2列元素

scores[1,1]

2.选取scores中两个元素,行序号为0,列序号为1的元素;以及行序号为3,列序号为6的元素。 

scores[[0,3],[1,6]]

3.选取数组scores中的前3行数据

#方法一
scores[0:3]        #或scores[0:3,: ]
 
#方法二
scores[[0,1,2]]    #或scores[[0,1,2],: ]

4.选取scores中,列序号为1~4 的列

#方法一:
scores[: ,1:5]                 #或scores[: ,[1,2,3,4]]或scores[[0,1,2,3,4],1:5]或scores[0:5,1:5]
 
#方法二
scores[[0,1,2,3,4]][: ,1:5]    #或scores[[0,1,2,3,4]][: ,[1,2,3,4]]
 
#方法三
scores[0:5][: ,1:5]            #或scores[: ,][: ,1:5]或scores[: ,: ][: ,1:5]或scores[: ,: ][: ,[1,2,3,4]]

5.选取scores中,行序号为1,2,列序号为0,2,4 的元素

#方法一
scores[1:3,[0,2,4]]
 
#方法二:两层切片,先行后列
scores[1:3][: ,[0,2,4]]      #或scores[[1,2]][: ,[0,2,4]] 
  
#方法三:两层切片,先列后行
scores[: ,[0,2,4]][1:3]      #或scores[: ,[0,2,4]][[1,2]]

6.选取钱易铭的成绩

scores[(names == '钱易铭')]
 
#for循环输出成绩
m = scores[(names == '钱易铭')]
print("钱易铭各科目的成绩为:")
for i in range(0,7):
    print(subjects[i],":",m[0,i])

7.选取钱易铭的数学成绩

scores[(names == '钱易铭'),(subjects =='Math')]

8.选取王薇和肖良英的数学和英语成绩 

#方法一:双层切片,先行(人名)后列(学科)
scores[(names =='王薇')|(names =='肖良英')][: ,(subjects == 'Math')|(subjects =='English')]
 
#方法二:双层切片,先列(学科)后行(人名)
scores[: ,(subjects == 'Math')|(subjects =='English')][(names =='王薇')|(names =='肖良英')]

 9.选取scores中,大于等于80并且小于90的元素

scores[(scores>=80)&(scores<90)]

10.将第1列元素的值都增加5

#单独显示增加5的那一列
#方法一:
scores[: ,0]+5
 
#方法二:采用函数,subtract()减函数与add()加和函数
np.subtract(scores[: ,0],-5)
np.add(scores[: ,0],5)
 
#方法三:构造ones()函数
a = np.ones((1,5))*5   
scores[: ,0]+a
#或者
b = np.ones((5,1))*5       
scores[: ,0]+b.T              #用到了数组的转置
 
#方法四:构造zero()函数
c = np.zeros((5,7))
c[: ,0] = 5
scores+c 
 
 
#显示全部列
#方法一:
scores+[5,0,0,0,0,0,0]
 
#方法二:采用ones()函数
m = np.zeros((5,7))
m[: ,0] = 5
scores+m
 
#方法三:
n = np.ones((5,7))*5
n[: ,1: ] =0#或者c[: ,1:7]=0
scores+n
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是学数据分析的阿龙

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

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

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

打赏作者

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

抵扣说明:

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

余额充值