1.数组创建
import numpy as np
arr=np.array([1,2,3])
注:array()内可以是列表,也可以是元组。
arr=np.array([1,2,3],dtype='str')
dtype指定数组类型
np.arange(a,b,c)生成a到b,步长为c的等差数列,包含b
np.linspace(a,b,c)生成a到b的等差数列,个数为c
np.linspace(a,b,c,endpoint=False)先产生c+1个数值(等差),再将最后一个剔除
np.logspace(1,5,base=2,num=10)生成10个以2为底的等比数列,指数为1至5的10个等差数值
np.zeros([5,5])
np.ones([7,6])
np.eye(6)对角线元素为1
np.diag([4,5,8])对角线元素为4,5,8
arr.shape查看数组为几行几列 注:无需加()
arr.ndim查看维度
arr.size查看元素个数
arr.dtype查看数据类型
2.索引与切片
axis=0对行进行 *** 作,axis=1对列进行 *** 作
索引从0开始
arr[a,b]取索引[a,b)
arr_change=arr
arr_change[1:3]=[1,2]
此时arr也会发生改变,若想不变,可用copy()方法
arr_change=arr.copy()
此时对arr_change进行 *** 作不会改变arr
arr[a]访问第a+1行
arr[:,a:b]访问第a+1和b+1列
arr[(a)&(b)]取满足条件a和b的数据
花式索引,可理解为列表嵌套
arr[[2,1]]输出第3行和第2行
3.数组形状改变
arr.reshape(a,b)变为a行b列数据,原数组不变
arr.resize(a,b)原数组改变
arr.shape=(a,b)原数组改变
arr.ravel()、arr.flatten()降为1维,横向进行
arr.ravel/flatten(order='F')按纵向进行降为1维
4.数组合并
np.hstack((arr1,arr2))或np.concatenate((arr1,arr2),axis=1)横向合并
np.vstack((arr1,arr2))或np.concatenate((arr1,arr2),axis=0)纵向合并
np.tile()复制
5.广播机制(numpy的便利体现)
np.power(arr,3)对每个元素进行3次幂运算
np.unique(arr)去重
np.inld(arr1,arr2)判断arr1的元素是否再arr2中
np.intersectld(arr1,arr2)交集
np.equal(arr1,arr2)查看元素是否相同,相当于arr1 == arr2
np.isnan()判断空值
注:能多用numpy进行数据处理就多使用,效率高。
6.搜索与排序
sort()与argsort()
np.sort(arr)返回排序结果
np.argsort(arr)返回排序后的索引位置
sorted(arr)返回数据类型为列表
arr.argmax()返回最大值的索引
arr.argmax(axis=0)返回每列最大值的索引
np.where(a,b,c)a为条件,为真时返回b,否则返回c
np.extract(arr1 > arr2,arr1)arr1与arr2需同型,返回的是一维数组
7.Numpy文件读写
np.genfromtxt(r'文件存储位置',delimiter='-',skip_header=1)delimiter设置分隔符形式,skip_header跳过读取表头
存储数据
np.savetxt(存储路径,要存储的数据变量名,delimiter=',',fmt='%.4f')fmt设置存储保留的小数位数
8.字符串处理——char模块
大写:np.char.upper()
连接:np.char.add(),np.char.join()
重复:np.char.multiply()
替换:np.char.replace()
去除:np.char.strip(str_list,'-')注:只能去头尾
判断是否是小写:np.char.islower()
是否只包含数字:np.char.isdigit()
是否只包含字母:np.char.isalpha()
计算包含*的个数:np.char.count(str_list,'*')
是否以开头或结尾:np.char.startswith/endswith()
9.随机数生成——random模块
np.random.random()产生0-1的浮点数
np.random.seed()指定随机种子,使每次生成的随机数相同
np.random.rand()0-1均匀分布的浮点型随机数
np.random.randint(a,b,size=n)生成a到b间均匀分布的n个随机整数
np.random.uniform(low=a,high=b,size=n)生成a到b间均匀分布的n个浮点型随机数
np.set_printoptions(precision=a)控制显示的小数位数
np.random.normal(mean,std,size=n)生成服从正态分布的随机数
np.random.randn()生成服从标准正态分布的随机数
np.random.shuffle(arr)(会改变原数组)、np.random.permutation()(不会改变原数组)对数组进行随机排列
10.统计相关函数
axis=1👉
axis=0👇
data.sum(axis=0/1)
data.mean()
data.cumsum()累计求和
data.cumprod()累计求积
data.max()
np.percentile(data,10/25/75)求分位数
np.median()求中位数
np.ptp()求极差
11.线性代数
矩阵乘法:np.dot(arr1,arr2)
注:arr1*arr2执行结果为对应元素相乘,非矩阵相乘
矩阵转置:np.transpose()
矩阵求逆:np.linalg.inv()
例:多元一次方程组求解
3x+2y+z=38
2x+3y+z=24
x+2y+3z=26
A=np.array([[3,2,1],[2,3,1],[1,2,3]])
b=np.array([[38],[34],[26]])
X=np.linalg.solve(A,b)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)