Numpy
Numpy属性:
ndim:维度
shape:行数和列数
size:元素个数
Numpy的创建array:
array:创建数组
dtype:指定数据类型
zeros:创建数据全为0
ones:创建数据全为1
empty:创建数据接近0
arange:按指定范围创建数据
linspace:创建线段
创建数组: a = np.array([2,23,4]) # list 1d print(a) # [2 23 4] 指定数据dtype: a = np.array([2,23,4],dtype=np.int) print(a.dtype) # int32 创建特定数据: a = np.array([[2,23,4],[2,32,4]]) # 2d 矩阵 2行3列 print(a) """ [[ 2 23 4] [ 2 32 4]] """ 创建全零数组: a = np.zeros((3,4)) # 数据全为0,3行4列 创建全空数组, 其实每个值都是接近于零的数: a = np.empty((3,4)) """ array([[ 0.00000000e+000, 4.94065646e-324, 9.88131292e-324, 1.48219694e-323], [ 1.97626258e-323, 2.47032823e-323, 2.96439388e-323, 3.45845952e-323], [ 3.95252517e-323, 4.44659081e-323, 4.94065646e-323, 5.43472210e-323]]) """ 用 arange 创建连续数组: a = np.arange(10,20,2) # 10-19 的数据,2步长 """ array([10, 12, 14, 16, 18]) """ 使用 reshape 改变数据的形状: a = np.arange(12).reshape((3,4)) # 3行4列,0到11 """ array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) """ 用 linspace 创建线段型数据: a = np.linspace(1,10,20) # 开始端1,结束端10,且分割成20个数据,生成线段
Numpy的基本运算:
矩阵相乘: a=np.array([[1,1],[0,1]]) b=np.arange(4).reshape((2,2)) c_dot = np.dot(a,b) print(c_dot) """ array([[2, 4], [2, 3]]) """ 乘方: c=b**2 最大最小值的对应索引(不是多维的索引): A = np.arange(2,14).reshape((3,4)) print(np.argmin(A)) # 0 print(np.argmax(A)) # 11 均值、中位数: A.mean() A.median() 累加函数:生成的每一项矩阵元素均是从原矩阵首项累加到对应项的元素之和 print(np.cumsum(A)) # [2 5 9 14 20 27 35 44 54 65 77 90] 累差运算函数(少一列),每一行中后一项与前一项之差: print(np.diff(A)) # [[1 1 1] # [1 1 1] # [1 1 1]] 分隔行和列的作为为俩个array: print(np.nonzero(A)) #(array([0,0,0,0,1,1,1,1,2,2,2,2]),array([0,1,2,3,0,1,2,3,0,1,2,3])) 排序: np.sort(a, axis, kind, order) a:要排序的数组 axis: axis=0 按列排序,axis=1 按行排序 kind: 默认为'quicksort'(快速排序),'mergesort'(归并排序)。'heapsort'(堆排序) order: 如果数组包含字段,则是要排序的字段 矩阵转置: A.T 合并: np.vstack((A,B)) # 行合并 np.hstack((A,B)) # 列合并 分割: split(ary, indices_or_sections, axis=0) ary:数组 indices_or_sections:如果是整数则是分成n份,如果是数组则成为沿轴切分的位置(左开右闭) 如(2,4)分成1,2和3,4和5之后 axis:axis=0 按列排序,axis=1 按行排序
不等份分割:(避免不会因为不能均分而报错)
np.array_split(ary, indices_or_sections, axis=0)