2020-08-25

第七讲练习

练习1

在这里插入图片描述

def auto_label(x,my_y):
    for x_i,y_i in zip(x,my_y):
        plt.annotate(f"{y_i}",xy=(x_i,y_i),xytext=(x_i,y_i-1))

plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一(替换sans-serif字体)
plt.rcParams['axes.unicode_minus'] = False   # 步骤二(解决坐标轴负数的负号显示问题)

# 构建x,height
fruits = ["苹果","梨子","车厘子"]
Q1_sales = [1000,800,3000]
Q2_sales = [1200,700,2800]

# 柱子的对应索引位置 [0,1,2]
# 设置柱子宽度
width = 0.35
# rects1 = plt.bar(list(range(len(fruits))),Q1_sales,width)
# rects2 = plt.bar(list(range(len(fruits))),Q2_sales,width)



# 蓝黄柱子宽度都为0.35 怎么使蓝色显示左边  黄色显示右边
# 位置左移width/2  位置-width/2    [0-width/2,1-width/2,2-width/2]

## 原方法(列表推导式)
# po_l = [i-width/2 for i in list(range(len(fruits)))]
# po_r = [i+width/2 for i in list(range(len(fruits)))]

#map方法
# def add_wl(w):
#     return w-width/2
# def add_wr(w):
#     return w+width/2
# po_l = list(map(add_wl,range(len(fruits))))
# po_r = list(map(add_wr,range(len(fruits))))
# adwl = lambda x:x-width/2#匿名函数方式
# po_l = list(map(adwl,range(len(fruits))))
# adwr = lambda x:x+width/2#匿名函数方式
# po_r = list(map(adwr,range(len(fruits))))

#直接用数组的方式
po_l = np.arange(len(fruits))-width/2
po_r = np.arange(len(fruits))+width/2



plt.bar(po_l,Q1_sales,width,label="Q1")
plt.bar(po_r,Q2_sales,width,label="Q2")

# 设置图例 
plt.legend()

# 数据标签
auto_label(po_l,Q1_sales)
auto_label(po_r,Q2_sales)

plt.xticks(list(range(len(fruits))),fruits)

plt.show()

重点代码:

## 原方法(列表推导式)
# po_l = [i-width/2 for i in list(range(len(fruits)))]
# po_r = [i+width/2 for i in list(range(len(fruits)))]

#map方法
# def add_wl(w):
#     return w-width/2
# def add_wr(w):
#     return w+width/2
# po_l = list(map(add_wl,range(len(fruits))))
# po_r = list(map(add_wr,range(len(fruits))))
# adwl = lambda x:x-width/2#匿名函数方式
# po_l = list(map(adwl,range(len(fruits))))
# adwr = lambda x:x+width/2#匿名函数方式
# po_r = list(map(adwr,range(len(fruits))))

#直接用数组的方式
po_l = np.arange(len(fruits))-width/2
po_r = np.arange(len(fruits))+width/2

在这里插入图片描述

练习2

在这里插入图片描述

np.arange(16).reshape(4,4) - 2
np.arange(16).reshape(4,4) + np.arange(16,32).reshape(4,4)
#np.arange(8).reshape(2,4)与np.arange(4)运算吗?
np.arange(8).reshape(2,4) - np.arange(4)#广播机制,二行四列与一行
#np.arange(8).reshape(2,4)与np.arange(4).reshape(1,4)运算吗?
np.arange(8).reshape(2,4) - np.arange(4).reshape(1,4)#广播机制,二行四列与一行四列
#np.arange(8).reshape(2,4)与np.arange(4).reshape(4,1)运算吗?
#不能,不符合广播条件
练习3

在这里插入图片描述

a = np.arange(16).reshape(4,4)
a[:,2]#第三列
a[:,0:3]#一至三列
a[:,(0,2)]#神奇索引,一三列
a[:,1::2]#二四列
a[:,(1,3)]#神奇索引,二四列
# a[(1,1),(0,3)] = 0#神奇索引,先取1行,然后0列;再1行,3列
a[a<10]
b = a[a<10]

print('第三列\n' + str(a[:,2]))
print('第1-3列\n'+str(a[:,0:3]))
print('第2,4列\n'+str(a[:,(1,3)]))
a[(1,1),(0,3)] = 0#神奇索引,先取1行,然后0列;再1行,3列
print('将47变成0\n'+str(a))
print('滤出小于5的\n'+str(b))

在这里插入图片描述

练习4

在这里插入图片描述

# np.loadtxt??
score_data = np.loadtxt("D:\\Download\\scores.csv",delimiter=",",skiprows=1,encoding='gb18030')
# print(score_data.shape)

score_data[(score_data>60)&(score_data<80)] 
score_data[(score_data>80)&(score_data<90)] 
score_data[score_data>90] 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值