【儒冠多误身】Numpy库知识体系

Numpy个人知识体系

儒冠多误身
20181202

文章目录

  • Numpy个人知识体系
    • 一元函数 *unary ufunc*
    • 二元函数 *binary ufunc*
    • 矢量化三元表达式 *```np.where(arr1,第二个参数,第三个参数)```*
    • 统计函数
  • 创建
    • 从列表、元组创建
    • 使用numpy函数创建
  • 随机数组
    • 随机生成
    • 随机排列
    • 随机分布

  • 通用函数ufunc
  • 对ndarray中元素运算的函数

一元函数 unary ufunc

  • 一元ufunc 说明
    np.abs()、np.fbs() 计算整数、浮点数或复数的绝对值。
    对于非复数值,可以使用更快的fbs
    np.sqrt() 计算各元素的平方根:arr ** 0.5
    np.square() 计算各元素的平方:arr ** 2
    np.exp() 计算各元素的指数ex
    np.log()\np.log10\np.log2\np.log1p 分别:自然对数(e为底数),底数为10的log,底数为2的log,log(1+x)
    np.sign() 计算各元素的正负号:1(正数),0(零),-1(负数)
    np.ceil() 向上取整
    np.floor() 向下取整
    np.rint() 四舍五入取整
    np.modf() 小数部分和正数部分以两个独立数组返回arr1,arr2 = np.modf(arr3)
    np.isnan() 返回一个布尔型数组:“哪些值是NaN"
    np.isfinite()\np.isinf() 返回布尔型数组:哪些元素是有穷的,哪些元素是无穷的
    np.cos()\np.sin()\np.tan() 普通型三角函数
    np.cosh()\np.sinh()\np.tanh() 双曲型三角函数
    np.arccos()\np.arcsin()\np.arctan() 反三角函数
    np.arccosh()\np.arcsinh()\np.arctanh() 反三角函数
    np.logical_not() 计算各元素not x的真值
    相当于-arr

二元函数 binary ufunc

  • 二元ufunc 说明
    np.add(arr1,arr2) 将数组对应元素相加
    np.subtract() 从第一个数组中,减去第二个数组中的元素
    np.multiply() 数组元素相乘
    np.divide() 除法
    np.floor_divide() 向下圆整除法(丢弃余数)
    np.power() 对第一个数组中的元素A,根据第二个数组中相应元素B,计算AB
    np.maximum() 元素级的最大值计算
    np.fmax() 忽略NaN的,元素级的最大值计算
    np.minimum() 元素级的最小值计算
    np.fmin() 忽略NaN的,元素级的最小值计算
    np.mod() 元素级的求模计算(除法的余数)
    np.copysign() 将第二个数组中的值的符号赋值给第一个数组中的值
    np.greater() 执行元素级的比较>,产生布尔型数组
    np.greater_equal() 执行元素级的比较>=,产生布尔型数组
    np.less() 执行元素级的比较<,产生布尔型数组
    np.less_equal() 执行元素级的比较<=,产生布尔型数组
    np.equal() 执行元素级的比较==,产生布尔型数组
    np.not_equal() 执行元素级的比较!=,产生布尔型数组
    np.logical_and() 执行元素级的真值逻辑元素:& ,且
    np.logical_or() 执行元素级的真值逻辑元素:|,或
    np.logical_xor 执行元素级的真值逻辑元素:^,异或

矢量化三元表达式 np.where(arr1,第二个参数,第三个参数)

  • 第二个和第三个参数不必是数组,可以是标量值

  • 相当于x if condition else y的矢量化版本

  • np.where(arr1>0,1,-1)# 元素>0的返回1,否则返回-1
    
  • 类似于MySQL的控制流函数

  • select education,salary,case education
    		when '大专' then 1
    		when '本科' then 2
    		when '硕士' then 3
    		when '博士' then 4
    		else 0
    		end as tmp
    from demp_table;	
    
    
  • 相当于MySQL的三元表达式

  • select education,if(salary > 9,'优先','等待') as tmp
    from demp_talbe;
    
  • python的三元表达式结果1 if 表达式 else 结果2

  • a = 10
    b = 20
    r = a if a>b else b
    
  • python列表推倒时

  • list1 = [i*i for i in range(2,11,2)]#生成1~10之间的所有偶数
    


统计函数

arr.mean(axis = 1)# 可接受axis参数
np.mean(arr)# 均值

arr.sum(axis = 1)
np.sum(arr)

arr.std(axis = 1)#标准差,通过axis选择轴
np.std(arr)

arr.var()#方差
np.var(arr)

arr.max(axis = 1)
np.max(arr)

arr.min(axis = 1)
np.min(arr)

arr.argmin()#最小元素的索引
np.argmin(arr)

arr.argmax()#最大元素的索引
np.argmax(arr)
arr.cumsum(0)# 列累加
arr.cumprod(1)# 行累积


创建

从列表、元组创建

np.array(list\tuple,dtype = np.float64)# 从序列创建,并指定每个元素的数据类型

使用numpy函数创建

np.arange(12).reshape(3,4)#返回ndarray取值[0,12),3行4列

np.ones((3,4))# 全1数组,3行4列
np.ones((2,3,4))# 最外层2个元素,每个元素3个维度,每个维度4个元素

np.zeros((3,4))# 全0数组,3行4列

np.full((2,3),val)#生成2行3列的数组 ,值都是val

np.eye(n)# 生成n*n的单位矩阵,对角线元素都是1,其余都是0

np.ones_like(arr) # 根据arr的形状,生成全1的ndarray
np.zeros_like(arr) # 根据arr的形状,生成全0的数组
np.full_like(arr,val) #根据arr的形状,生成值都为val的数组

np.linspace(1,10,4) # 包括1和10,等间隔的生成4个元素的数组,浮点数
np.linspace(1,10,4,endpoint = False) #元素10不作为生成数组的元素

np.concatenate((arr1,arr2)) # 合并数组arr1和arr2

随机数组

随机生成

  • np.random.rand(d0,d1,……,dn)

    • 生成[0,1)之间的数据

    • np.random.rand(3,4)
      np.random.rand(2,3,4)#最外层2个元素,每个元素3个维度,每个维度4个元素
      
  • np.random.randn(d0,d1,……,dn)

    • 返回数据,具有 标准正态分布(高斯分布)
    • 均值为1,标准差为0
  • np.random.randint(low[high,shape,dtype])

    • 返回随机整数,范围:[low,high)

    • shape:数组维度

    • dtype:数据类型,默认np.int

    • high不填时,范围[0,low)

    • np.random.randint(-5,5,size=(2,2))
      np.random.randint(1,5)# 返回1个[1,5)之间的随机整数
      
  • np.random.seed(s)

    • 使产生的随机数组不变

    • np.random.seed(1)
      np.random.randint(100,200,(3,4))
      #放在一起,再次调用,产生的随机数组元素不变
      

随机排列

  • np.random.shuffle(arr)
    • 根据数组arr的第1轴进行随机排序
    • 会改变数组arr
  • np.random.permutation(arr)
    • 根据arr的第1轴产生一个新的乱序数组
    • arr不变
  • np.random.choice(arr[,size,replace,p])
    • 从一维数组arr中以概率p抽取元素,形成size形状的数组
    • replace表示是否可以重用元素
    • p
      • 设置元素被抽取的概率
      • eg,p = arr/np.sum(arr)

随机分布

  • np.random.uniform(low,high,size)

    • 产生具有均匀分布的数组
    • low 起始值
    • high 结束值
    • size 形状
  • np.random.normal(loc.scale,size)

    • 产生具有正态分布的数组

    • loc 均值

    • scale 标准差

    • size 形状

    • np.random.normal(9,2,50)#创建 包含50个元素的数组,且均值9,标准差2
      
  • np.random.poisson(lam.size)

    • 产生泊松分布的数组
    • lam 随机事件发生概率
    • size 形状

你可能感兴趣的:(Learning,Day,基础,201812,Numpy)