numpy-note

    xiaoxiao2021-03-25  93

    ################## NumPy ########################## NumPy的数组类被称作ndarray ####### 常用属性 ######## X.flags    #数组的存储情况信息。 X.shape    #结果是一个tuple,返回本数组的行数、列数、…… X.ndim     #数组的维数,结果是一个数 X.size     #数组中元素的数量 X.itemsize #数组中的数据项的所占内存空间大小 X.dtype    #数据类型 X.T        #如果X是矩阵,发挥的是X的转置矩阵 X.trace()  #计算X的迹 ###### 创建 array( [ [1,2], [3,4] ], dtype=complex ) np.arange(2,3,0.1)       起点,终点,步长值。含起点值,不含终点值。 np.linspace(1,4,10)      起点,终点,区间内点数。起点终点均包括在内 np.logspace() zeros( (3,4) )           创建给定形状的 0‘s数组 ones( (2,3,4), dtype=int16 )  创建给定形状的 1‘s数组 empty( (2,3) )           创建一个没有使用特定值来初始化的数组 zeros_like/ones_like/empty_like(数组A) 创建与数组A形状和数据类型都相同的指定数组 eye, identity            生成一个NxN的单位方阵(对角线上为1,其它地方为0)  ###### 数据类型转换 astype 方法             显式的把一个数组的dtype转换或 投射 到另外的类型      a = np.array(['1.25', '-9.6', '42'], dtype=np.string_)      b = np.array([1.0,2.0])      a.astype(float) 或 a.astype(b.dtype)      array([ 1.25, -9.6 , 42. ]) #######  数组元素 np.where(条件)        np.where(arr > 0, 2, -2)  arr中正值替换为2,负值替换为-2        index = np.where(arr>2)  得到值大于2的索引号        new_arr = arr[index]   arr中大于2的元素组成的数组        new_arr = np.delete(arr, index)  删除arr中元素值大于2的元素 np.argwhere(条件) np.extract([条件],a) 布尔数组 (可以用或与非等操作) arr > 2              得到布尔数组,形如 array([False, False,  True,  True], dtype=bool) new_arr = arr[index] arr中大于2的元素组成的数组,可以用 ~index 来得到小于2的数组 np.delete(arr, index) 删除arr中的索引为index中的元素 ndarray.all()   如果所有元素都为真,那么返回真;否则返回假 ndarray.any()   只要有一个元素为真则返回真 ndarray.ptp(axis=None, out=None)  返回数组的最大值—最小值或者某轴的最大值—最小值 ndarray.clip(a_min, a_max, out=None)   小于最小值的元素赋值为最小值,大于最大值的元素变为最大值。 numpy.repeat(a, repeats, axis=None)   重复数组的元素 numpy.tile(A, reps)         根据给定的reps重复数组A,和repeat不同,repeat是重复元素,该方法是重复数组。 numpy.put(a, ind, v, mode=’raise’)   用v的值替换数组a中的ind(索引)的值。Mode可以为raise/wrap/clip。                                      Clip:如果给定的ind超过了数组的大小,那么替换最后一个元素。 ndarray.compress(condition, axis=None, out=None)   指定轴上条件下的切片。 ndarray.nonzero()         非零元素的索引 np.unique(arr)  类似于元素去重  纯python中的类似命令:sorted(set(list)) ###### 改变形状 ndarray.reshape(shape[, order])         返回重命名数组大小后的数组,不改变元素个数. ndarray.resize(new_shape[, refcheck])   改变数组的大小(可以改变数组中元素个数). ndarray.transpose(*axes)                返回矩阵的转置矩阵 ndarray.swapaxes(axis1, axis2)          交换两个轴的元素后的矩阵. ndarray.flatten([order])                复制一个一维的array出来. ndarray.ravel([order])                  返回为展平后的一维数组. ndarray.squeeze([axis])                 移除长度为1的轴。 ndarray.tolist()                        将数组转化为列表 hstack((a,b))  concatenate((a,b),axis=1)   水平组合 vstack((a,b))  concatenate((a,b),axis=0)   垂直组合 dstack((a,b))                                 深度组合 hsplit,vsplit,dsplit,split(split与concatenate相对应)   数组分割 arr.flat[2:6]       将数组变为1维数组,并获取其中的一部分数据 #### 统计相关函数 sum        对数组的所有或一个轴向上的元素求和。零长度的数组的和为0。  mean       算术平均值。灵长度的数组的均值为NaN。  std, var   标准差和方差,有可选的调整自由度(默认值为n)。  min, max   最大值和最小值  argmin, argmax     索引最小和最大元素。  cumsum     从0元素开始的累计和。  cumprod    从1元素开始的累计乘。  ndarray.prod(axis=None, dtype=None, out=None)   指定轴的所有元素乘积 ###### 随机数 numpy.random 随机数生成 np.random.rand(3,2)    产生一个3行2列的随机数组 同一空间下,有randn()/randint()等多个随机函数 ##### 复数 array( [ [1,2], [3,4] ], dtype=complex ) arr.imag            获得复数的虚部 arr.real            获得复数的实部 np.angle()      复数的辐角 np.rad2deg()    弧度变为角度单位 ndarray.conj():返回所有复数元素的共轭复数 ##### 数组集合操作 unique(x)            计算x单一的元素,并对结果排序 intersect1d(x, y)    计算x和y相同的元素,并对结果排序  union1d              结合x和y的元素,并对结果排序  in1d(x, y)           得到一个布尔数组指示x中的每个元素是否在y中  setdiff1d(x, y)      差集,在x中但不再y中的集合  setxor1d(x, y)       对称差集,不同时在两个数组中的元素  ###### 积分 np.trapz(y,x) # 相当于计算序列点(x,y)为顶点坐标的折线与x轴所夹的面积 ###### 数组函数 abs, fabs     计算基于元素的整形,浮点或复数的绝对值。fabs对于没有复数数据的快速版本  sqrt          计算每个元素的平方根。等价于 arr  ** 0.5  square        计算每个元素的平方。等价于 arr  ** 2  exp           计算每个元素的指数。  log, log10, log2, log1p    自然对数(基于e),基于10的对数,基于2的对数和 log(1+ x)  sign          计算每个元素的符号:1(positive),0(zero), -1(negative)  ceil          计算每个元素的天花板,即大于或等于每个元素的最小值  floor         计算每个元素的地板,即小于或等于每个元素的最大值  rint          圆整每个元素到最近的整数,保留dtype  modf          分别返回分数和整数部分的数组  isnan         返回布尔数组标识哪些元素是 NaN (不是一个数)  isfinite, isinf      分别返回布尔数组标识哪些元素是有限的(non-inf, non-NaN)或无限的  cos, cosh, sin sinh, tan, tanh regular 和 hyperbolic          三角函数  arccos, arccosh, arcsin, arcsinh, arctan, arctanh             反三角函数  logical_not          计算基于元素的非x的真值。等价于 -arr  add           在数组中添加相应的元素  substract     在第一个数组中减去第二个数组  multiply      对数组元素相乘  divide, floor_divide       除和地板除(去掉余数)  power         使用第二个数组作为指数提升第一个数组中的元素  maximum, fmax     基于元素的最大值。 fmax 忽略 NaN  minimum, fmin     基于元素的最小值。 fmin 忽略 NaN  mod            基于元素的模(取余)  copysign       拷贝第二个参数的符号到第一个参数  greater, greater_equal, less, less_equal, not_equal   基于元素的比较,产生布尔数组。等价于中缀操作符 >,>=, <,                                                       <=,==, !=  logical_and, logical_or, logical_xor                  计算各个元素逻辑操作的真值。等价于中缀操作符 &,|, ^  arr.round(decimals=0)    指定精度下的四舍五入 ##### 矩阵 NumPy 的 matrix 类型则可以直接用运算符号进行运算    A = np.matrix([[3, 6, -5], [1, -3, 2], [5, -1, 4]])    B = np.matrix([[12], [-2], [10]])    X = A ** (-1) * B 数组排序(小到大):列排列np.msort(a),行排列np.sort(a),np.argsort(a)排序后返回下标 复数排序:np.sort_complex(a)按先实部后虚部排序 数组的插入:np.searchsorted(a,b)将b插入原有序数组a,并返回插入元素的索引值 根据b中元素作为索引,查找a中对应元素:np.take(a,b)一维 数组中最小最大元素的索引:np.argmin(a),np.argmax(a) 多个数组的对应位置上元素大小的比较:np.maximum(a,b,c,…..)返回每个索引位置上的最大值,np.minimum(…….)相反 将a中元素都置为b:a.fill(b) 每个数组元素的指数:np.exp(a) 求余:np.mod(a,n)相当于a%n,np.fmod(a,n)仍为求余且余数的正负由a决定 计算平均值:np.mean(a) 计算加权平均值:np.average(a,b),其中b是权重 计算数组的极差:np.pth(a)=max(a)-min(a) 计算方差(总体方差):np.var(a) 标准差:np.std(a) 算术平方根,a为浮点数类型:np.sqrt(a) 对数:np.log(a) 点积(计算两个数组的线性组合):np.dot(a,b),即得到a*b(一维上是对应元素相乘,多维可将a*b视为矩阵乘法 修剪数组,将数组中小于x的数均换为x,大于y的数均换为y:a.clip(x,y) 所有数组元素乘积:a.prod() 数组元素的累积乘积:a.cumprod() 数组元素的符号:np.sign(a),返回数组中各元素的正负符号,用1和-1表示 数组元素分类:np.piecewise(a,[条件],[返回值]),分段给定取值,根据判断条件给元素分类,并返回设定的返回值。 判断两数组是否相等: np.array_equal(a,b) 判断数组元素是否为实数: np.isreal(a) 去除数组中首尾为0的元素:np.trim_zeros(a) 对浮点数取整,但不改变浮点数类型:np.rint(a) 中位数  np.median(a) ######### 文档 Python 读写文件文件虽然方便且效率很好,但是不太适合处理极大的文件。 当文件内容有结构,且为数字时用 NumPy 处理,存 numpy.ndarray 会更合适。 numpy.loadtxt()/numpy.savetxt()  载入txt文件 numpy.genfromtxt()/numpy.recfromcsv()  智能导入文本/csv文件 numpy.save()/numpy.load()  高速,有效率但numpy特有的二进制格式 ######## numpy.linglg 函数 diag    返回一个方阵的对角线(或非对角线)元素为一个一维数组,或者转换一个一维数组到一个方阵(非对角线元素为零)  dot     矩阵乘积  trace   计算对角线上元素的和  det     计算矩阵行列式  eig     计算方阵的特征值和特征向量  inv     计算方阵转置  pinv    计算方阵 Moore-Penrose pseudo-inverse 的转置  qr      计算 QR 分解  svd     计算奇异值分解(SVD)  solve   求解线性系统方程 Ax = b 的x,其中A是一个方阵  lstsq   计算 y = Xb 的最小二乘解  np.linalg.logm(A)  计算矩阵A的对数 cosm()/sinm()/signm()/sqrtm() 对矩阵进行计算 cross, dot, outer, svd, vdot  
    转载请注明原文地址: https://ju.6miu.com/read-25461.html

    最新回复(0)