Numpy知识点大总结

Numpy学习笔记

  • 1 Numpy介绍
  • 2 Numpy使用方法
    • 2.1 创建数组
    • 2.2 数组属性
    • 2.3 数组变型
    • 2.4 数组元素处理
    • 2.5 数组组合
    • 2.6 Numpy的axis
    • 2.7 数组排序
    • 2.8 数组的ufun广播机制
      • 2.8.1 一维数组执行广播机制
      • 2.8.2 二维数组执行广播机制
    • 2.9 通用函数
    • 2.10 条件查找
    • 2.11 多个数组对应位置上元素的大小比较
    • 2.12 矩阵方法
    • 2.13 线性代数
    • 2.14 Numpy随机数
    • 2.15 Numpy字符串操作

1 Numpy介绍

numpy是高性能科学计算和数据分析的基础包

  • ndarray:一个具有矢量算术和复杂广播能力的快速且节省空间的多维数组
  • 对整数数据进行快速运算的标准数学函数
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具

2 Numpy使用方法

2.1 创建数组

方法 功能 举例 结果 注释
arange() 创建一维数组 np.arange(10) array([0, 1, 2, 3, 4])
array() 创建一维或多维数组 np.array([0,1,2,3,4],dtype=‘float’) array([0., 1., 2., 3., 4.]) 一维,dtype可指定数据类型
np.array([[1,2],[3,4]]) array([[1, 2], [3, 4]]) 创建二维数组

2.2 数组属性

在这里插入图片描述

方法 功能 举例 结果 注释
a.shape 获取数组每一维度的大小 a.shape (4,6)
a.ndim 获取数组维度 a.ndim 2
a.size 元素个数 a.size 24
a.itemsize 每个元素在内存中的字节数 a.itemsize 4 数组元素为整型,占4个字节
a.nbytes 数组字节数 a.nbytes 96 相当于a.size*a.itemsize
a.astype(int) 数组类型转换

2.3 数组变型

方法 功能 举例 注释
a.reshape(m,n) 返回一个m*n型数组 a.reshape(5,2) reshape()方法不改变原数组
a.reshape(-1,n) 确定n的长度,根据a的长度确定m a.reshape(-1,2)
a.reshape(m,-1) 确定m的长度,根据a的长度确定m a.reshape(5,-1)
a.reshape(1,-1) 返回一个行向量 a.reshape(1,-1)
a.reshape(-1,1) 返回一个列向量 a.reshape(-1,1)
a.resize 把原来数组变成m*n型元素个数 a.resize(2,5) resize()方法改变原数组

Numpy知识点大总结_第1张图片
在这里插入图片描述

2.4 数组元素处理

方法 功能 注释
a[::-1] 倒序
a.copy() 复制数组a
a[a>2] 返回数组中大于2的元素 可执行逻辑运算
a[[2,4],[0,1]] 返回a[2,0],a[4,1]
a[[2,1]] 返回数组中的第三行和第二行
a[:,[3,1]] 返回第四列和第二列
a[:,1] 返回一维数组
a[:,[1]] 返回二维数组
a.fill(b) 把a中元素都置为b
np.exp(a) 每个数组元素的指数
np.linspace(1,6,10) 生成等差行向量 1-6之间的均匀分布,返回10个数
np.logspace(1,5,base=2,num=10) 等于2**np.linspace(1,5,10)
np.mod(a,n) 求余 相当于a%n
np.fmod(a,n) 求余 余数的正负由a决定
np.mean(a) 计算平均值
np.average(a,b) 计算加权平均值,b为权重
np.max(a) 返回数组中元素最大值
np.min(a) 返回数组中元素最小值
np.pth(a) 返回数组中元素的极差 相当于max(a)-min(a)
np.var(a) 计算总体方差
np.std(a) 计算标准差
np.sqrt(a) 算术平方根
np.dot(a,b) 点积,数组的线性组合
a.clip(x,y) 将数组中小于x的都替换为x,大于y的替换为y
a.prod() 所有数组元素的乘积
np.sign(a) 返回数组中各元素的正负

2.5 数组组合

方法 功能 注释
hstack((a,b)) 水平组合
vstack((a,b)) 垂直组合
concatenate((a,b),axis=1) 水平组合
concatenate((a,b),axis=0) 垂直组合

2.6 Numpy的axis

轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。
Numpy知识点大总结_第2张图片

  • 使用0值表示沿着每一列或行标签\索引值向下执行方法
  • 使用1值表示沿着每一行或者列标签模向执行对应的方法

2.7 数组排序

方法 功能 注释
np.sprt(a) 行排列,从小到大
np.sort(a,reverse=True) 从大到小
np.msort(a) 列排序,从小到大 相当于np.sort(a,axis=0)
np.argsort(a) 排序后返回下标
np.sort_complex(a) 复数排序 先按实部,然后虚部
np.searchsorted(a,b) 将b插入原有序数组a,并返回插入元素的索引值

2.8 数组的ufun广播机制

  • ufun:通用函数,能够对array中所有元素进行操作的函数
  • Broadcasting指对不同形状的array之间执行算术运算的方式
  • 不同形状的数组进行运算时,Numpy会执行广播机制
  • Numpy能够运用向量化运算处理整个数组,速度比较快

2.8.1 一维数组执行广播机制

广播运算时,按照行补齐方式,行数不一致时,先补齐行数,然后进行运算。

2.8.2 二维数组执行广播机制

广播运算时,当列数不一致时,先补齐列数,然后运算,行数不一致时,先补齐行数,然后进行运算。

2.9 通用函数

函数 功能
np.add(a,b) 把a,b两个数组相加:a+b
np.subtract(a,b) a-b
np.divide(a,b) a/b
no.power(a,3) 数组a的三次方
np.unique(a) 类似于set(),保留唯一元素
np.in1d(a,test) 判断a中元素是否在test中
np.intersect1d(a,b) 返回a,b的交集
np.equal(a,b) 判断a与b中的元素是否相等:a==b?
np.greater(a,b) 判断a中元素是否大于b:a>b?
np.greater(a,b).any() 只要有一个符合就返回True
np.greater(a,b).all() 所有的元素符合才返回True

2.10 条件查找

函数 功能
np.where(a>3,m,n) 如果a中元素大于3,则返回m,否则返回n,m、n可以是数字也可以是字符串
np.where(a1>a2,a1,a2) 如果a1中元素大于a2,则返回a1中元素,否则返回a2中元素
np.argwhere(a>3) 返回满足条件元素的下标
np.extract([a>3],a) 返回满足条件的数组元素
np.argmin(a) 数组中最小元素的索引
np.argmax(a) 数组中最大元素的索引

2.11 多个数组对应位置上元素的大小比较

函数 功能 注释
np.maximum(a,b,c…) 返回每个索引位置上的最大值 a,b,c为数组
np.minimum(a,b,c…) 返回每个索引位置上的最小值

2.12 矩阵方法

函数 功能 注释
a=np.mat(‘1 2 3;4 5 6;7 8 9’) 利用字符串创建 矩阵的行与行之间用分号隔开,行内的元素之间用空格隔开
c=np.mat(np.arange(16).reshape(4,4)) 利用mat(ndArray)函数创建矩阵(利用reshape函数)
np.eye(n) 创建n*n单位矩阵
np.zeros() 定义数据全为0的向量或矩阵
np.ones() 定义数据全为1的向量或矩阵
A.I
A.T 转置
A.trace() 矩阵的迹(对角线之和)
np.cov(x,y) 计算协方差矩阵
np.corrcoef(x,y) 计算相关系数
np.diag([1,2,3,4,5,6,7]) 给出对角线元素
np.multiply(A,B) 元素相乘np A*B
np.matmul(A,B) 矩阵相乘 A@B
np.dot(A,B)

2.13 线性代数

函数 功能 注释
a=np.linalg.lstsq(x,b) 估计线性模型中的系数 b=a*x
np.linalg.inv(A) 求方阵逆矩阵
np.linalg.pinv(A) 求广义逆矩阵
np.linglg.det(A) 求矩阵的行列式
np.linalg.solve(A,b) 求解形如AX=b的线性方程组
np.linglg.eigvals(A) 求矩阵的特征值
np.linglg.eig(A) 求矩阵的特征值和特征向量

2.14 Numpy随机数

函数 功能 注释
np.set_printoptions(precision=5) 控制小数位数
np.random.random() 产生0-1之间的随机数 np.random.random(n),np.random.random((m,n))
np.random.seed() 随机数生成器种子
np.linalg.pinv(A) 求广义逆矩阵
np.linglg.det(A) 求矩阵的行列式
np.linalg.solve(A,b) 求解形如AX=b的线性方程组
np.linglg.eigvals(A) 求矩阵的特征值
np.linglg.eig(A) 求矩阵的特征值和特征向量
np.random.rand(m,n) 产生服从均匀分布的随机数
np.random.randint(0,100,size=(10,10)) 产生一定范围内的随机整数
np.random.uniform(low=0,high=10,size=100) 产生给定范围内的均匀分布的随机数
np.random.normal(1,3,size=100) 服从条件的正态分布随机数
np.random.randn(m,n) 服从标准正态分布随机数
np.random.shuffle(a) 对原有序列随机排序,直接作用在原来数据上
np.random.permutation(a) 返回一个序列的随机排序,不改变原数组

2.15 Numpy字符串操作

函数 功能 注释
np.char.upper(a) 将列表元素全部转为大写
np.char.lower(a) 将列表元素全部转为小写
np.char.lower(a) 将列表元素首字母大写
np.char.add([‘魔都’,‘首都’],[‘上海’,‘北京’]) 拼接字符串 array([‘魔都上海’, ‘首都北京’], dtype=’
np.char.multiply([‘魔都’,‘上海’],3) 复制 array([‘魔都魔都魔都’, ‘上海上海上海’], dtype=’
np.char.join([’:’,’-’],[‘hello’,‘world’]) array([‘h:e:l:l:o’, ‘w-o-r-l-d’], dtype=’
np.char.replace(a,‘A’,‘B’) 把a中的A替换为B
np.lchar.strip(a,’-’) 去除a中元素首尾的‘-’
np.char.islower(a) 判断a是否为小写
np.char.isupper(a) 判断a是否为大写
np.char.isdigit(a) 判断a是否为数字
np.char.isalpha(a) 判断a是否为字母
np.char.count(a,‘A’) 计算a中每个字符串包含‘A’的个数
np.char.endwith(a,‘A’) 判断a中每个字符串是否以‘A’结尾

你可能感兴趣的:(Python数据分析,python,numpy)