python常用函数

一、math模块

math模块是python中用于科学计算的内建模块,其中的函数都经过了特殊的算法优化,效率较高。

1、常规数学运算函数

import math
math.ceil(x)   #向上取整
math.floor(x)  #向下取整
math.fabs(x)   #求绝对值

2、幂函数与对数函数

math.exp(x)       #返回e^x
math.log(x,base)       
math.log(16,4)    #输出为2
math.pow(x,y)     #返回x^y
math.sqrt(x)      #返回x的平方根

3、三角函数

math.sin(x)
math.cos(x)
math.tan(x)

4、常用函数

math.pi    #返回圆周率
math.e     #e
math.inf   #无穷大
math.nan   #空值

二、time模块

time模块是python中用于处理时间的一个内建模块。

struct_time的元素

属性
tm_year 年(例如2021)
tm_mon 月(1-12)
tm_mday 日(1-31)
tm_hour 时(0-23)
tm_min 分(0-59)
tm_sec 秒(0-6)
tm_wday 周几(0-6)0是周日
tm_yday  一年中的第几天(1-366)
tm_isdst   是否夏令时(默认-1)

 

import time
start = time.time()
a = 1566897866           #类型1:时间戳数据,常见的时间输入格式
c = time.localtime(a)
print(c)
#输出结果:
#time.struct_time(tm_year=2019, tm_mon=8, tm_mday=27, tm_hour=17, tm_min=24, tm_sec=26, tm_wday=1, tm_yday=239, tm_isdst=0)
a = '2017-6-11 17:51:30' #类型2:字符型时间数据
c = time.strptime(a,'%Y-%m-%d %H:%M:%S')
print(c)
#输出结果:
#time.struct_time(tm_year=2017, tm_mon=6, tm_mday=11, tm_hour=17, tm_min=51, tm_sec=30, tm_wday=6, tm_yday=162, tm_isdst=-1)
end = time.time()        #运行结束时间
timeSpent = end - start  #计算运行时间
print('共用时:{0}s'.format(timeSpent))
#输出结果:
#共用时:0.0004961490631103516s

 

三、random模块

random模块是python内建的用于生成随机数的模块。

import random
random.random()                                  #生成0-1之间均匀分布的随机浮点数
random.normalvariate(0,1)
[random.normalvariate(0,1) for x in range(10)]   #生成长度为10的正态分布序列
random.uniform(a,b)                              #生成[a,b]区间内的随机浮点数
random.randint(a,b)                              #生成[a,b]区间内的随机整数
random.choice(s)                                 #从序列s中随机获得一个值
random.sample(s,k)                               #从序列s中中获取长度为k的片段

四、NumPy模块

NumPy是一个用于科学计算的基础模块,它提供了高性能的数组对象、矩阵对象,以及众多的基础数学、线性代数、基本统计运算等领域所需的相关函数,是基于python进行大数据处理中常用的第三方模块。

import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]]) #定义一个ndarray对象
#输出:
#[[1,2,3],
#[4,5,6],
#[7,8,9]]
print(a.ndim)      #查看ndarray的维数(阶),输出为2
print(a.shape)     #查看ndarray的形状,输出为(3,3),对应(行数,列数)
print(a.size)      #查看ndarray的元素个数,输出为9

对于ndarray进行复制有三种形式,分别为:引用,浅复制和深复制。引用不会创建一个新的数组,新的数组只是原对象的一个别名,通过引用创建新数组和原数组指向的内存是相同的;浅复制会创建一个新的对象,具有独立的形状等属性,但数据仍与原数组共享,对于引用和浅复制,修改原数组,新创建的数组也会发生变化对新创建的素组进行修改亦是如此;而深复制则是完全创建一个新的对象,具有独立的属性数据。

b = a                  #引用
print(id(a)==id(b))    #id()能够输出对象的内存地址,输出为True
c = a.view()           #浅复制
print(id(a)==id(c))    #输出为False
d = a.copy()

多维数组的下表存取

NumPy中数组的下标存取方法如下,与内置的list对象存取和切片方法类似:

a[0,1]              #输出2 (行、列的索引都是由0开始)
a[[0,2],[1,2]]      #输出为array([2,9]),等价于np.array([a[0,1],a[2,2]])
a[:2,1:3]           #第0至1行,第1至2行array([[2,3],[5,6]])
a[:-1]              #第0至倒数第2行
a[1,:]              #第1行,shape为(3,),一维,array([4,5,6])
a[1:2,:]            #第1行,shape为(1,3),二维,array([[4,5,6]])
a[:,1]              #第1列,shape为(3,),一维,arraay([2,5,8])
a[:,1:2]            #第1列,shape为(3,1),二维,array([[2],[5],[8]])

NumPy中还能直接用判断条件(布尔矩阵)取出符合某些条件的元素:

a>2
#array([[False, False,  True],
#       [ True,  True,  True],
#       [ True,  True,  True]])
a[a>2]           #输出数组中大于2的值,为一个一维数组
a[(a>2)&(a<6)]   #使用逻辑运算符连接多个条件,注意不能使用and,or之类的关键词进行连接,否则会报错

数组运算

#逐元素运算    
a + b    
a * b    
a/b     
a ** 2    
np.sin(a)    
# 矩阵运算    
a.dot(b)                               #a与b矩阵相乘    
a = np.mat(a)                          #转换为矩阵对象    
a.I                                    #逆矩阵    
a.T                                    #转置    
a.trace()                              #
np.linalg.det(a)                       #矩阵a的行列式    
np.linalg.norm(a,ord=None)             #矩阵a的范数    
np.linalg.eig(a)                       #矩阵a的特征值和特征向量    
np.linalg.cond(a,p=None)               #矩阵a的条件数    

随机数生成

np.random.norm(0, 1, 100)  #生成均值为0,方差为1(不是标准差),长度为100的正态分布样本
np.random.poisson(5, 100)  #生成均值为5,长度为100的泊松分布样本
np.random.negative_binomial(1, 0.1, 100)  #生成n=1, p=0.1,长度为100的负二项分布样本

NumPy常用函数

np.sum(a,axis=0)            #输出为array([12, 15, 18])   按照列进行累计求和计算
a.sum(axis = 0)             #输出为array([12, 15, 18])   按照列进行累计求和计算
np.sum(a,axis=1)            #输出为array([ 6, 15, 24])   按照行进行累计求和计算
a.ndim                      #返回array的维度 
np.ndim([[1,2,3],[4,5,6]])  #返回值为2
np.ndim([4,5,6])            #返回值为1
a.sum()                     #对整个array数组求和
np.prod(a,axis=0)           #计算array数组的乘积,可以指定按行或列进行计算
a.min()                      #查找最小值
a.min(axis=1)               #按照行或列查找最小值,axis = 0(列)| = 1(行)
a.max()
a.max(axis=1)               #求最大值与min函数相同
a.argmin()                  #返回最小值的索引,也可以指定axis来获取行或列的最小值索引
a.argmax()                   #返回最大值的索引
a.mean()                    #返回均值
a.std()                     #返回标准差,也可以指定axis来获取行或列的标准差
a.var()                     #计算方差
a.clip()                    #可以将数组限制在指定范围值内,小于范围的值替换为范围中的最小值,大于范围的值替换为范围中的最大值
a.round()                   #取近似值
a.sort()                    #排序,同样可以指定axis、
a.reshape(a,b)              #调整array数组的形状
np.concatenate((a,b))       #连接两个array数组
np.vstack((a,b))            #上下拼接两个array数组
np.hstack((a,b))            #左右拼接两个array数组
a.flatten()                 #把所有数组合并成一列
np.dot(x,y)                 #矩阵计算

 

posted @ 2021-07-04 00:09  KnightLaHire  阅读(322)  评论(0)    收藏  举报