Numpy学习笔记

Numpy学习笔记,第1张

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)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/580751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存