易知大学作业
一、numpy和matplotlib库的学习笔记
(1)numpy库
1,从数值范围创建数组
1 numpy.arange(start, stop, step, dtype)#参数分别为起始值,终止值,步长和数据类型
2.创建等间隔一位数组
1 np.linspace(start, stop, num=50,
endpoint=True, retstep=False, dtype=None)
#参数分别为起始值,终止值,数据数,是否包含stop值,是否显示间距和数据类型
3.使用数字 0 将一个全为 1 的 5x5 二维数组包围
1 Z = np.ones((5,5)) 2 Z = np.pad(Z, pad_width=1, mode='constant',
constant_values=0)
4.创建一个 5x5 的二维数组,并设置值 1, 2, 3, 4 落在其对角线下方Z = np.diag(1+np.arange(4),k=-1)
5.创建一个 10x10 的二维数组,并使得 1 和 0 沿对角线间隔放置
1 Z = np.zeros((10,10),dtype=int)
2 Z[1::2,::2] = 1
3 Z[::2,1::2] = 1
6.创建一个 0-10 的一维数组,并将 (1, 9] 之间的数全部反转成负数
1 Z = np.arange(11)
2 Z[(1 < Z) & (Z <= 9)] *= -1
7.找出两个一维数组中相同的元素
1 Z1 = np.random.randint(0,10,10)
2 Z2 = np.random.randint(0,10,10)
3 print("Z1:", Z1)
4 print("Z2:", Z2)
5 np.intersect1d(Z1,Z2)
8.返回每行,列最大值
1 np.argmax(a, axis=0) #行最小值是argmin函数
2 np.max(a, axis=0) #列最大值
9..使用 NumPy 打印昨天、今天、明天的日期
1 yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
2 today = np.datetime64('today', 'D')
3 tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
4 print("yesterday: ", yesterday)
5 print("today: ", today)
6 print("tomorrow: ", tomorrow)
10.几个常用的函数
flat #返回
np.nonzero([1,0,2,0,1,0,4,0])#返回一维数组中非 0 元素的位置索引
np.dot(A, B)#矩阵相乘 np.power(x,4)#对x数组的每个值4次方
np.set_printoptions(precision=2)#对于二维随机数组中各元素,保留其 2 位小
Z/1e3#科学记数法输出 NumPy(Z) 数组
a.argsort()#打印各元素在数组中升序排列的索引
a.real #属性,数组a的实部
a.imag #属性,数组a的虚部numpy.linalg.inv()# 函数计算矩阵的乘法逆矩阵。
numpy.linalg.solve() #函数给出了矩阵形式的线性方程的解。 umpy.matlib.eye() #函数返回一个矩阵,对角线元素为 1,其他位置为零。
np.c_[M1, M2]#按列连接两个数组 25 np.r_[M1, M2]#按行连接两个数组
(2)matplotlib库
Python 中可以用 matplotlib 库实现数据的可视化,以下是 matpltlib 库的一些介绍:
1、 matplotlib.pyplot 模块可以画折线图,分为两个步骤,分别是 pyplot.plot() 和 pyplot.show() ,前者负责画图,后者将画好的图展示出来。
2、 pyplot.plot( Series1 , Series2 ) 以 Series1 作为横坐标, Series2 作为纵坐标画出折线图;
3、 在执行 2 中的函数后,可以使用 pyplot.xticks( rotation = 45 ) 将 x 轴的坐标显示逆时针旋转 45 ° ,默认为 0 °,也就是水平的,同理,可以用 pyplot.yticks( rotation = 45 ) 对 y 轴坐标做同样的操作。
4、 可以使用 pyplot.xlabel( str ) 将 x 轴命名为 str 的值,同理可以用 pyplot.ylabel( str ) 将 y 轴命名为 str 的值。
5、 可以使用 pyplot.title( str ) 为画出的折线图命名。
6、 fig = pyplot.figure() 指出默认画图区间。
7、 fig.add_subplot( 3 , 2 , 1 ) 在画图区间中添加子图,位置为,将画图区间分为三行两列的六块中的第一块,这里数的顺序为,从左往右,从上到下,按照此逻辑, ( 3 , 2 , 1 ) 所在的位置为第一行最左边, ( 3 , 2 , 3 ) 的位置为第二行左边,( 3 , 2 , 6 ) 的位置为第三行最右边。
8、pyplot.figure( figsize = ( 3 , 6 ) )
指定画图的区域为 长为 3 , 宽为 6 的大小。
9、 pyplot.plot( x , y , c = 'red' , label = ' 250 ' )
c 指定这一条线为红色,这里可以用颜色的英文名,也可以用颜色代号,那个 # 什么的;
label 指定这条线的名字为 250.
10、 pyplot.legend( loc = 'best' )
将所有线的名字与线的对照框放到最适合的位置, loc 还可以设置为别的参数。
11、 ax = pyplot.subplots()
构建一个 pyplot 的子图对象。
12、 ax.bar( list1 , list2 , 0.5 )
list1 为条形图各个条距离远点的长度, list2 为条形图中条的高度, 0.5 为条的宽度,通过这三个数据确定图形的形状。
13、 ax.set_xticks( list )
设置 X 轴的坐标长度和标号,对于 y 轴也有对应函数实现此功能。
14、 ax.set_xticklabels( list )
设置 x 轴的坐标名,对于 y 轴也有对应函数实现此功能。
15、ax.set_xlabel( str )
设置 x 轴的名称,对于 y 轴也有对应函数实现此功能。
16、 ax.set_title( str )
设置图标的名称。
17、 ax.barh( list1 , list2 , 0.5 )
画水平的柱形图,其他函数一样, x 、 y 轴做对应转换。
18、 ax.scatter( list1 , list2 )
画散点图。
19、 ax.hist( array , range ,bins )
画柱形图, array 中的数值作为横轴的值,纵轴计算数值出现的次数, range 表示数值显示的范围, bins 表示总的显示柱的个数(控制间距)。
20、 ax.set_ylim( 0 , 50 )
设置纵轴的显示范围为 0 到 50 。
21、 ax.boxplot( Series )
画箱线图(还没搞明白箱线图是个什么玩意儿)。
22、 ax.boxplot( Series[ list ].value )
画 好几个箱线图。
23、 ax.tick_params( bottom = False , top = False , left = False , right = False )
设置图形框四边,是否显示刻度。
24、
for key,spine in ax.spines.items():
spine.set_visible(False)
spine.set_visible(False)
隐藏图形框的四条边框线。
25、 pyplot.legend()
只对上一个画出的图有效,所以如果每个子图都要这个的话,就得在画下一个之前调用。
分类变量绘图
1 import matplotlib.pyplot as plt
2 names = ['group_a', 'group_b', 'group_c']
3 values = [1, 10, 100]
4
5 plt.figure(1, figsize=(9, 3))
6
7 plt.subplot(131)
8 plt.bar(names, values)
9 plt.subplot(132)
10 plt.scatter(names, values)
11 plt.subplot(133)
12 plt.plot(names, values)
13 plt.suptitle('Categorical Plotting')
14 plt.show()
二.使用matplotlib绘制sinx,cosx图像
1 from matplotlib import pyplot as plt 2 import numpy as np 3 plt.figure(figsize=(4,2))#生成的图片的大小 4 x = np.linspace(-2 * np.pi,2*np.pi,100)#设置一个序列(-2pi,2pi,之间设置100个点) 5 y = np.sin(x)#需要绘制的函数 6 y1 = np.cos(x) 7 8 plt.ylim(-1,1)#限制y轴的范围 9 plt.xlim(-4,4)#x轴的范围 10 11 plt.xlabel("X") 12 plt.ylabel("Y") 13 plt.title("sinx cosx ") 14 plt.plot(x,y,label="sinx") 15 plt.plot(x,y1,label = "cosx") 16 plt.text(1,1,"Text",fontdict={'size':16,'color':'r'}) 17 plt.annotate('sin(np.pi)=',xy =(-np.pi,0),xytext=(-np.pi,2),fontsize=16, 18 arrowprops = dict(facecolor='black',shrink=0.01))#设置注释 19 plt.show()
三.雷达图
Python123作业成绩
1 #-*- coding:utf-8 -*- 2 ''' 3 Author: 冯佛养 4 Mail:946466685@qq.com 5 6 ''' 7 import numpy as np 8 import matplotlib.pyplot as plt 9 10 #标签 11 labels = np.array(['第一周','第二周','第三周','第四周','第五周','第六周']) 12 #数据个数 13 dataLenth = 6 14 #数据 15 data = np.array([5.0,9.1,9.8,9.0,9.7,8.8]) 16 17 angles = np.linspace(0, 2*np.pi, dataLenth, endpoint=False) 18 data = np.concatenate((data, [data[0]])) # 闭合 # #将数据结合起来 19 angles = np.concatenate((angles, [angles[0]])) # 闭合 20 21 fig = plt.figure() 22 ax = fig.add_subplot(121, polar=True)# polar参数!!代表画圆形!!!! 23 #111代表总行数总列数位置 24 ax.plot(angles, data, 'bo-', linewidth=1)# 画线四个参数为x,y,标记和颜色,闲的宽度 25 ax.fill(angles, data, facecolor='r', alpha=0.1)# 填充颜色和透明度 26 ax.set_thetagrids(angles * 180/np.pi, labels, fontproperties="SimHei") 27 ax.set_title("冯佛养的成绩表\n2018310143108", va='baseline', fontproperties="SimHei") 28 29 ax.set_rlim(0,10) 30 ax.grid(True) 31 plt.show()