【数据处理与分析】numpy快速入门
参考教程:点这里
目录
numpy的属性
维度:a.ndim
行数和列数:a.shape
元素总个数:a.size
array的创建
列表转矩阵:a = np.array( [ [1,2,3] , [2,3,4] ] )
指定dtype:a = np.array([2,3,4],dtype=np.int) 【np.int、np.int32、np.float、np.float32】
全0数组:a = np.zeros((3,4)) 【3行4列】
全1数组:a = np.ones((3,4),dtype = np.int) 【3行4列】
全空(接近0的数):a = np.empty((3,4)) 【3行4列】
创建连续数组:a = np.arange(10,20,2) # 10-19 的数据,2步长【默认步长为1,不含右边数】
改变数据的形状:a = np.arange(12).reshape((3,4)) 【3行4列,0到11】
创建线段型数据:np.linspace(1,10,4) 【分成1到10的4个数,1 4 7 10】
numpy基础运算
加减乘:a+b a-b a*b 【对应元素乘】
乘方:a**b
三角函数:np.sin(a)
矩阵乘法:np.dot(a, b) 或 a.dot(b)
2行4列的随机矩阵:a=np.random.random((2,4))
矩阵所有元素之和:np.sum(a)
矩阵所有元素最小值:np.min(a)
矩阵所有元素最大值:np.max(a)
每行的元素之和:np.sum(a,axis=1) 【axis=1以行为查找单元,axis=0以列为查找单元】
每列最小值:np.min(a,axis=0) 【axis=1以行为查找单元,axis=0以列为查找单元】
每行最大值:np.max(a,axis=1) 【axis=1以行为查找单元,axis=0以列为查找单元】
矩阵所有元素最小值的索引(位置):np.argmin(a)
矩阵所有元素最大值的索引(位置):np.argmax(a)
矩阵所有元素的均值:np.mean(a) 或 np.average(a) 或 a.mean()
矩阵所有元素的中位数:np.median()
元素累加矩阵:np.cunsum(a) 【2,2+3,2+3+4,...】
元素累差矩阵:np.diff(a) 【后减前:[ 3-2,4-3,5-4],[ ....】
分割非0元素的行列坐标:np.nonzero(b)
矩阵元素从小到大排序:np.sort(A)
矩阵转置:np.transpose(A) 或 A.T
将矩阵太大/小的元素转为最值:np.clip(A,5,9) 【小于5的转成5,大于9的转成9】
numpy索引
一维索引:a[3] 【矩阵a的第3个元素或第3行,从0开始计】
二维索引:a[0][2] 或 a[0, 2] 【矩阵a第0行第2列的元素】
切片操作:a[1, 1:3] 【矩阵a第1行第1、2列(不含第3列)的元素】
打印每行:for row in a
打印每列:for col in a.T 【转置一下】
将多维矩阵展开成1行的数列:a.flatten()
对应的迭代器flat:for item in a.flat: 【如上图3】
array合并
上下合并(vertical stack):np.vstack((A,B))
左右合并(horizontal stack):np.hstack((A,B))
非标准矩阵的转置(A = np.array([1,1,1]) ,3个元素的array):A[np.newaxis,:] 【[[1 1 1]],1行3列】
非标准矩阵的转置(A = np.array([1,1,1]),3个元素的array ):A[:,np.newaxis] 【[[1] [1] [1]],3行1列】
多个矩阵或序列的合并:np.concatenate((A,B,B,A),axis=0) 【0是纵向打印,1是横向打印】
array分割
纵向分割(axis=0):np.split(A, 2, axis=1) 【第2个参数2代表分成2个array】
横向分割(axis=1):np.split(A, 3, axis=0) 【第2个参数3代表分成3个array】
不等量的分割:np.array_split(A, 2, axis=0)
numpy的赋值
= 赋值 指向的同一内存地址:a=b 【a改b也改】
copy赋值 指向不同内存地址:b = a.copy() 【a改b不动】