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) #矩阵计算

浙公网安备 33010602011771号