数据分析之Numpy、Matplotlib库

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 
菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
菜鸟教程:https://www.runoob.com/numpy/numpy-matplotlib.html

Numpy模块的简单使用
  1 """
  2 菜鸟教程:https://www.runoob.com/numpy/numpy-tutorial.html
  3 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
  4 
  5 """
  6 import numpy as np  # pip install numpy
  7 
  8 # 1.numpy创建的数组类型为<class 'numpy.ndarray'>
  9 
 10 # (1)创建ndarray一维数组
 11 ndarray_1 = np.array([1, 2, 4, 6])
 12 print(ndarray_1)
 13 # (2)创建ndarray二维数组(如果元素不对称,结果是一维列表数组)
 14 ndarray_2 = np.array([[2, 4, 6], [1, 3, 5]])
 15 print(ndarray_2,type(ndarray_2[1]))
 16 
 17 # ndarray_2=np.array([[2,4,6],[1,3,5,3]])
 18 # print(ndarray_2,type(ndarray_2))#[list([2, 4, 6]) list([1, 3, 5, 3])] <class 'numpy.ndarray'>
 19 # print(type(ndarray_2[1]))#<class 'list'>
 20 
 21 # (3)numpy默认ndarray的所有元素的类型是相同的
 22 # 如果传进来的列表中包含不同的类型,则统一为同一类型,优先级:str>float>int
 23 ndarray_3 = np.array([[2, 4, 6], [1, 3, 5]])
 24 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5 <class 'numpy.int32'>
 25 
 26 ndarray_3 = np.array([[2, 4.8, 6], [1, 3, 5]])
 27 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5.0 <class 'numpy.float64'>
 28 
 29 
 30 ndarray_3 = np.array([["a", 4, 6], [1, 3, 5]])
 31 print(ndarray_3[1][2], type(ndarray_2[1][2]))  # 5 <class 'numpy.str_'>
 32 
 33 #(4)numpy创建等差数组np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 等差数列
 34 ndarray_4=np.linspace(0,10,num=20)
 35 print(ndarray_4)
 36 
 37 #(5)numpy创建随机数组np.arange([start, ]stop, [step, ]dtype=None)
 38 ndarray_5=np.arange(0,10,step=2)
 39 print(ndarray_5)
 40 ndarray_5=np.arange(0,10)
 41 print(ndarray_5)
 42 
 43 #(6)numpy创建随机多维数组np.random.randint(low, high=None, size=None, dtype='l')
 44 #如果指定了随机银子,就不在随机
 45 # np.random.seed(10)#随机因子/时间种子
 46 ndarray_6=np.random.randint(0,10,size=(3,4))#0到10之间3X4的数组
 47 print(ndarray_6)
 48 ndarray_6=np.random.randint(0,100,size=(3,3,3))#0到100之间3X3X3的三维数组
 49 print(ndarray_6)
 50 
 51 #(7)numpy创建0-1之间的随机小数
 52 ndarray_7=np.random.random()
 53 print(ndarray_7,type(ndarray_7))
 54 
 55 
 56 #2.ndarray数组的属性
 57 
 58 #(8)ndarray数组的大小:ndarray.size
 59 print(ndarray_1.size)
 60 print(ndarray_2.size)
 61 print(ndarray_3.size)
 62 print(ndarray_4.size)
 63 print(ndarray_5.size)
 64 print(ndarray_6.size)
 65 
 66 #(9)ndarray数组的维度:ndarray.ndim
 67 print(ndarray_1.ndim)
 68 print(ndarray_2.ndim)
 69 print(ndarray_3.ndim)
 70 print(ndarray_4.ndim)
 71 print(ndarray_5.ndim)
 72 print(ndarray_6.ndim)
 73 
 74 #(10)ndarray数组的形状:ndarray.shape
 75 print(ndarray_1.shape)
 76 print(ndarray_2.shape)
 77 print(ndarray_3.shape)
 78 print(ndarray_4.shape)
 79 print(ndarray_5.shape)
 80 print(ndarray_6.shape)
 81 
 82 #(11)ndarray数组的元素类型:ndarray.dtype
 83 print(ndarray_1.dtype)
 84 print(ndarray_2.dtype)
 85 print(ndarray_3.dtype)
 86 print(ndarray_4.dtype)
 87 print(ndarray_5.dtype)
 88 print(ndarray_6.dtype)
 89 
 90 #(12)ndarray类型查看:type()
 91 print(type(ndarray_1))
 92 print(type(ndarray_2))
 93 print(type(ndarray_3))
 94 print(type(ndarray_4))
 95 print(type(ndarray_5))
 96 print(type(ndarray_6))
 97 
 98 
 99 
100 #3.ndarray数组的基本操作
101 # 对二维数组中括号第一个参数为行,第二个参数为列;
102 #对多维数组ndarray[,,,,],中括号中逗号分割的每个数字都指代一个维度
103 
104 #(13)索引:①一维数组与列表一致;②多维数组与C语言一样
105 ndarray_13=np.random.randint(0,10,size=(3,4))
106 print(ndarray_13)#二维数组
107 print(ndarray_13[1])#获取二位数组第2行
108 print(ndarray_13[[1,2]])#获取二维数组第2和第3行
109 print(ndarray_13[1,3])#获取二维数组第2行第4个元素
110 
111 #(14)切片
112 ndarray_14=np.random.randint(0,10,size=(5,4))
113 print(ndarray_14)
114 print(ndarray_14[:2])#获取二维数组的前两行
115 print(ndarray_14[:,:2])#获取二位数组的前两列
116 print(ndarray_14[:2,:2])#获取二位数组的前两行和前两列
117 
118 print(ndarray_14[::-1])#对二维数组的行进行翻转
119 print(ndarray_14[:,::-1])#对二位数组的列进行翻转
120 print(ndarray_14[::-1,::-1])#对二维数组的行和列都进行翻转
121 
122 
123 #(15)变形:使用ndarray.reshape()函数,注意参数是一个tuple!
124 
125 ndarray_15=np.random.randint(0,10,size=10)
126 print(ndarray_15)
127 print(ndarray_15.reshape((2,5)))#一维数组变形成二位数组
128 
129 ndarray_15=np.random.randint(0,10,size=(3,4))
130 print(ndarray_15)
131 print(ndarray_15.reshape((12,)))#二位数组变形成一位数组
132 print(ndarray_15.reshape((2,6)))#二位数组便形成其它二位数组
133 
134 #(16)级联操作:对多个ndarray数组进行横向或者纵向的拼接np.concatenate((arr,arr),axis=0) #axis=0 列  1行
135 ndarray_16=np.random.randint(0,10,size=(3,4))
136 print(ndarray_16)
137 print(np.concatenate((ndarray_16,ndarray_16),axis=0))#第一个参数为多个ndarray数组,axis为0表示列级联
138 print(np.concatenate((ndarray_16,ndarray_16),axis=1))#第一个参数为多个ndarray数组,axis为1表示列级联
139 
140 
141 
142 #4.ndarray数组的聚合操作
143 #(17)求和:ndarray.sum([axis=])
144 ndarray_17=np.random.randint(0,10,size=(3,4))
145 print(ndarray_17)
146 
147 print(ndarray_17.sum())#无参数默认全部求和
148 print(ndarray_17.sum(axis=1))#axis为1指定行求和
149 print(ndarray_17.sum(axis=0))#axis为0指定列求和
150 
151 #(18)最大值、最小值:ndarray.max()/ndarray.min()
152 ndarray_18=np.random.randint(0,10,size=(3,4))
153 print(ndarray_18)
154 
155 print(ndarray_18.max())#默认无参数求数组最大值
156 print(ndarray_18.max(axis=1))#axis为1指定行求最大值
157 print(ndarray_18.max(axis=0))#axis为0指定列求最大值
158 
159 print(ndarray_18.min())#默认无参数求数组最小值
160 print(ndarray_18.min(axis=1))#axis为1指定行求最小值
161 print(ndarray_18.min(axis=0))#axis为0指定列求最小值
162 
163 #(19)平均值:ndarray.mean()
164 ndarray_19=np.random.randint(0,10,size=(3,4))
165 print(ndarray_19)
166 
167 print(ndarray_19.mean())#默认无参数求数组平均值
168 print(ndarray_19.mean(axis=1))#axis为1指定行求平均值
169 print(ndarray_19.mean(axis=0))#axis为1指定列求平均值
170 
171 #(19)ndarray数组的其它聚合操作
172 """
173 ndarray.prod()     
174 ndarray.std()       标准差
175 ndarray.var()
176 ndarray.argmin()         
177 ndarray.argmax()       
178 ndarray.median()           
179 ndarray.percentile()          
180 ndarray.any()       一些           
181 ndarray.all()       所有
182 ndarray.power()     幂运算        
183 """
184 
185 
186 
187 #5.ndarray数组排序:np.sort()与ndarray.sort()都可以,但有区别
188 ndarray_20=np.random.randint(0,10,size=(3,4))
189 print(ndarray_20)
190 print(np.sort(ndarray_20))#默认对行、列顺序排序
191 print(np.sort(ndarray_20,axis=1))#对行排序
192 print(np.sort(ndarray_20,axis=0))#对列排序
Numpy简单使用
Matplotlib模块的简单使用
 1 """
 2 菜鸟教程:https://www.runoob.com/numpy/numpy-matplotlib.html
 3 Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。
 4 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。
 5 """
 6 import numpy as np
 7 import matplotlib.pyplot as plt
 8 #读取显示图片
 9 img_arr=plt.imread('1.png')#读取图片数组
10 plt.imshow(img_arr)#显示图片
11 plt.show()
12 print(img_arr.shape)
13 #可以直接使用numpy中的数组方法
14 plt.imshow(img_arr[::-1])#对行进行翻转,图片上下反转
15 plt.show()
16 
17 plt.imshow(img_arr[:,::-1])#对列进行翻转,图片左右反转
18 plt.show()
19 
20 plt.imshow(img_arr[::-1,::-1])#对行/列进行翻转,图片完全反转
21 plt.show()
22 
23 print(img_arr.shape)#三维数组
24 plt.imshow(img_arr[::-1,::-1,::-1])#对行/列及颜色进行翻转,图片及色彩完全反转
25 plt.show()
26 
27 #拼图np.concatenate((arr,arr),axis=0) #axis=0 列  1行
28 img_arr3=np.concatenate((img_arr,img_arr,img_arr),axis=1)#行拼3
29 img_arr9=np.concatenate((img_arr3,img_arr3,img_arr3),axis=0)#列拼3
30 plt.imshow(img_arr9)
31 plt.show()
32 
33 
34 
35 # 绘制图形
36 import numpy as np
37 x = np.arange(1, 11)
38 y = 2 * x + 5
39 plt.title("Matplotlib demo")
40 plt.xlabel("x axis caption")
41 plt.ylabel("y axis caption")
42 plt.plot(x, y)
43 plt.show()
Matplotlib简单使用

   效果图:

    

猜你喜欢

转载自www.cnblogs.com/open-yang/p/11347624.html