numpy实用指引
1 ''' 2 NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含: 3 4 一个强大的N维数组对象 ndarray(ndim,shape,size,dtype,itemisze) 5 广播功能函数 6 整合 C/C++/Fortran 代码的工具 7 线性代数、傅里叶变换、随机数生成等功能 8 9 10 一维数据:列表、数组、集合 11 二维数据:多个一维数据构成 12 多维数据:由一维和二维数据在新的维度上扩展而成,时间维度 13 高维数据:利用最基本的二元关系展示数据间的复杂结构,键值对 14 15 16 17 numpy库: 18 numpy.array() ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。 19 numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0) 20 21 知识点一: 22 ndarray数组的创建方法: 23 1.从Python中的列表、元组等数据类型创建ndarray数组 24 x=np.array(list/tuple) 25 2.使用numpy相关函数创建(arrange、ones、zeros等) 26 27 3.从字节流(rwa bytes)中创建ndarray数组 28 4.从文件中读取特定格式,创建ndarray数组 29 30 31 32 常用数组创建方法: 33 np.arange(n) 创建一个从0到n-1 34 np.ones(shape) np.ones_like(a) 35 np.zeros(shape) np.zeros_like(a) 36 np.full(shape,val) np.full_like(a,val) 37 np.eye(n) 38 np.linspace(起始值,最后值,希望填充的个数,endpoint=False) 根据起止数据等间距地填充数据,形成数组 39 np.concatenate() 将两个或者多个数组合并成一个新的数组 40 41 知识点二 42 ndarray数组的维度变换: 43 np.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变,即是新创建一个对象 44 np.resize(shape) 与reshape功能一样,只是修改原数组 45 np.swapaxies(ax1,ax2) 将数组n个维度中两个维度进行调换 46 np.flatten() 对数组进行降维,返回折叠后的一对数组,原数组不变 47 48 知识点三 49 ndarray数组类型变换: 50 new_a=a.astype(new_type) 新建一个对象,可以用于拷贝使用 51 52 知识点四 53 naarray数组向列表转换 54 ls=a.tolist() 55 56 知识点五 57 ndarray数组的操作 58 数组的索引与切片:一维数组的索引与切片:与Python的列表类似 59 多维数组的索引与切片:索引:a[1,2,3] 切片:a[:,:,:] 60 61 知识点六 62 ndarray数组的运算 63 *数组与标量之间的运算作用于数组的每一个元素 64 a.mean() 计算数组平均值 65 np.abs(x) or np.fabs(x) 绝对值 66 np.sqrt(x) 平方根 67 np.square(x) 平方 68 np.log(x) 自然对数 69 np.log10(x) 10底对数 70 np.log2(x) 2底对数 71 np.ceil(x) 超过元素的最小整数 72 np.floor(x) 小于元素的最大整数 73 np.rint(x) 计算数组各元素的四舍五入值 74 np.modf(x) 返回各个元素的(整数,小数部分) 75 np.sin() cos tan cosh sinh tanh 三角函数你懂的 76 np.exp(x) 指数值 77 np.sign(x) 各个元素的符号,1(+)、0,-1(-) 78 79 二元操作: 80 np.mod(x,y) 数组各元素进行对应模运算 81 np.copysign(x,y) 将Y中各元素的符号赋值给X中对应元素 82 np.maximum(x,y) np.fmax() 最大值 83 np.minimum(x,y) np.fmin() 最小值 84 85 86 87 88 89 90 91 92 93 94 1.矩阵计算: 95 a=np.matrix([]) 创建矩阵 96 a.I 矩阵求逆 97 a.T 矩阵转置 98 a*b or np.dot(a,b) 矩阵乘法 99 np.shape n行m列 100 np.size 对象元素个数 101 102 103 matplotlib库 104 105 106 107 ''' 108 import numpy as np 109 #知识点一 110 111 # a=np.array([1,2,3,4,5]) 112 # print(a) 113 # print(a.ndim) 114 # print(a.shape) 115 # print(a.size) 116 # print(a.itemsize) 117 # print(a.dtype) 118 119 # b=np.array([[1,23,4,5,6],[2,3,5]]) 120 # print(b.dtype) 121 # print(b.shape) 122 # print(b.size) 123 # print('使用numpy时尽量避免使用非同质ndarray对象') 124 125 # a=np.array([1,2,3,4,5]) 126 # b=np.array([4,5,6,7,8]) 127 # print(a+b) 128 # print(a*b) 129 # print(np.ones((2,3,4),dtype=np.int32)) 130 # print(np.eye(5)) 131 # print(np.arange(2,5)) 132 # print(np.full((2,3),2)) 133 # print(np.ones_like(np.full((2,3),2))) 134 135 # a=np.linspace(1,10,4,endpoint=False) 136 # b=np.linspace(1,15,4) 137 # print(a) 138 # print(b) 139 # print(np.concatenate((a,b))) 140 141 142 #知识点二 143 # a=np.ones((2,3,4),dtype=np.int32) 144 # print(a) 145 # 146 # a.resize((3,8)) 147 # print(a) 148 # 149 # a.reshape(8,3) 150 # print(a) 151 # print(a.reshape((8,3))) 152 # 153 # a=np.ones((2,3,4),dtype=np.int32) 154 # b=a.flatten() 155 # print(a) 156 # print(b) 157 158 #知识点三 159 # a=np.ones((2,3,4),dtype=np.int32) 160 # a.astype(np.float16) 161 # print(a) 162 # print(a.astype(np.float16)) 163 164 #知识点四 165 # a=np.full((2,3,4),25,dtype=np.int32) 166 # ls=a.tolist() 167 # print(a) 168 # print(ls) 169 170 #知识点五 171 # a=np.arange(12) 172 # print(a[1:10:2]) 173 # a=np.arange(24).reshape(2,3,4) 174 # print(a) 175 # print(a[1,2,3]) 176 # print(a[-1,1,1]) 177 # print(a[-1,-2,-3]) 178 # 179 # print('切片') 180 # print(a[:,1,-3]) 181 # print(a[:,1:3,:]) 182 # print(a[:,:,::2]) 183 184 185 186 #知识点六 187 a=np.array([2.8,2.3,2.5]) 188 print(np.ceil(a)) 189 print(np.floor(a)) 190 191 a=np.arange(24).reshape(2,3,4) 192 b=np.square(a) 193 print(b) 194 195 c=np.sqrt(b) 196 print(c) 197 198 d=np.sqrt(a) 199 print(d) 200 e=np.modf(d) 201 print(e) 202 203 print('二元运算') 204 a=np.arange(24).reshape((2,3,4)) 205 b=np.sqrt(a) 206 print(np.maximum(a,b)) 207 print(a>b)