![]()
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))#对列排序