python编程基础-常用库使用指南-numpy
Tips:
- NumPy 的主要对象是多维数组 Ndarray。
- 在 NumPy 中维度 Dimensions 叫做轴 Axes,轴的个数叫做秩Rank。
- 注意,numpy.array 和 Python 标准库 array.array 并不相同,前者更为强大,这也就是我们学习NumPy 的重要原因之一。
numpy安装:
pip3 install --user numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
numpy导入和常用别名:
import numpy as np
numpy查看版本
np.__version__
numpy查看数组信息:
数组名.dtype
# 转换数据类型
数组名.astype(np.数据类型)
# 数组的维度
数组名.ndim
# 数组各个维度的长度(shape是一个元组)
数组名.shape
一、常用操作
1.1 创建
1.1.1 基础创建数组
# 创建数组常用np.array()函数传递一个列表或元组进行生成
np.array(列表/元组)
# 一维数组
np.array([1, 2, 3])
# 二维数组
np.array([[1, 2, 3], [4, 5, 6]])
# 三维数组
np.array([[[1, 2, 3], [4, 5, 6]],[[1, 2, 3], [4, 5, 6]]])
1.1.2 全0数组
# 二维全0数组
np.zeros((行数, 列数))
# 三维全0数组
np.zeros((长数, 宽数,高数))
1.1.3 全1数组
# 二维全1数组
np.ones((行数, 列数))
# 三维全1数组
np.ones((长数, 宽数,高数))
1.1.4 单位矩阵
# 单位方阵
np.eye(尺寸)
1.1.5 单位对角矩阵
# 给定大小的单位对角矩阵
np.identity(尺寸)
1.1.6 随机数组
# 随机二维数组0-1
np.random.rand(行数, 列数)
# 随机三维数组0-1
np.random.rand(长, 宽, 高)
# 二维随机整数数组(0<=x<= 最大值)
np.random.randint(最大值, size = (行数, 列数))
# 三维随机整数数组(0<=x<= 最大值)
np.random.randint(最大值, size = (长, 宽, 高))
1.1.6 等差数组
# 一维等差数组
np.arange(起始数值,结束数值,间隔)
# 二维等差数组
np.arange(起始数值,结束数值,间隔).reshape(行数, 列数)
# 三维等差数组
np.arange(起始数值,结束数值,间隔).reshape(长, 宽, 高)
1.2 索引
Tips:
python当中以0为起点
1.1.0 指定索引
# 二维数组索引
数组名[行, 列]
# 三维数组索引
数组名[长, 宽, 高]
1.1.1 范围索引
# 二维数组索引
数组名[起始行:结束行, 起始列:结束列]
# 三维数组索引
数组名[起始长:结束长, 起始宽:结束宽, 起始高:结束高]
1.1.2 布尔索引
布尔索引:使用布尔数组作为索引。数组名[condition],condition为一个条件/多个条件组成的布尔数组。
数组名[布尔数组]
# 举例
数组名[(数组名==2)|(数组名==1)]
数组名[~(数组名>=3)]
二、numpy的线性代数库
import numpy.linalg
# 矩阵的点积
np.dot()
两个数组的点积
# 向量点积
np.vdot()
两个向量的点积
np.inner()
两个数组的内积
np.matmul()
两个数组的矩阵积
np.determinanat()
数组的行列式
np.solve()
求解线性矩阵方程
np.inv()
寻找矩阵的乘法逆矩阵
三、numpy的统计函数
Tips:
以下函数若指定轴,则返回指定轴中的相应的值,不指定,则返回整个数组中某一个值。
np.amin(数组,axis=某个轴)
沿指定轴返回最小值
np.amax(数组,axis=某个轴)
沿指定轴返回最大值
np.ptp(数组,axis=某个轴)
返回指定轴中值的范围,或者说是最大值减去最小值
np.percentile(数组,百分数,axis=某个轴)
沿指定轴,返回数组中,指定百分比位置上的值(如果有两个数,50位置上,返回的是这两个数的差值的50%加最小的数的值,如果有3个数,按顺序排列,50%就是中间那个数字)
np.median(数组,axis=某个轴)
沿指定轴,返回中轴的值(如果有两个数,50位置上,返回的是这两个数的差值的50%加最小的数的值,如果有3个数,按顺序排列,50%就是中间那个数字)
np.mean(数组,axis=某个轴)
沿指定轴,返回指定轴的算数平均值
np.average(数组,axis=某个轴,weights=权重数组)
加权平均值是有每个分量乘以反应起重要性的权重因子得到的平均值;不指定权重时,返回数组的算数平均值,指定权重时,按照指定的权重计算平均值
np.std(数组,axis=某个轴)
标准差,标准差是与均值的偏差的平方的平方值的平方根,即std = sqrt(mean(sum((x – x.mean())**2)))
np.var(数组,axis=某个轴)
方差,方差是偏差的平方的平均值,即mean(sum((x-x.mean())**2))
四、numpy的排序、搜索和计数函数
np.sort(a,axis,kind,order)
-
a:要排序的数组
-
axis:指定排序的轴
-
kind:指定使用的排序算法,排序有三种排序算法,分别为quicksort(快速排序)、mergesort(归并排序)以及heapsort(堆排序),默认使用quicksort
-
order:如果数组包含字段,则是要排序的字段
numpy.argsort()
函数对输入数组沿给定轴执行间接排序,并使用指定排序类型返回数据的索引数组
numpy.lexsort()
函数使用键序列,执行间接排序;
numpy.argmax()
函数返回数组中最大值的索引
numpy.argmin()
函数返回数组中最小值的索引
numpy.nonzero()
函数返回输入数组中非零元素的索引,多维数组,按轴的方式返回;
numpy.where()
函数返回输入数组中满足给定条件的元素的索引
numpy.extract()
函数返回满足条件的元素
五、numpy算数运算
numpy.add(数组, 数组)
数组相加
numpy.subtract(数组, 数组)
数组相减
numpy.multiply(数组, 数组)
数组相乘
numpy.devide(数组, 数组)
数组相除
numpy.reciprocal(数组)
返回参数元素的倒数
numpy.power(数组, 幂数组)
将第一个输入数组中的元素作为底数,计算它与第二个输入数组相应元素的幂
numpy.mod(数组, 被除数数组)
返回输入数组中相应元素的除法余数,与numpy.remainder()功能相同
Tips:
A = np.array([1 + 2j,2 + 4j,3 + 0.1j,4,5])
numpy.real(A)
对复数进行操作,返回复数类型参数的实部
numpy.imag(A)
对复数进行操作,返回复数参数的虚部
numpy.conj(A)
返回通过改变虚部的符号而获得的共轭复数
numpy.angle(A)
返回复数参数的角度,函数的参数为degree,为true,返回以角度值表示,否则用弧度制表示;
六、ndarray通用函数
通用函数(ufunc)是一种对ndarray中的数据执行元素级运算的函数。
一元通用函数(ufunc):
二元通用函数(ufunc):
七、ndarray数组重塑
# 二维数组(矩阵)的转置
数组名.T
# 重塑数组形状
数组名.reshape(重塑尺寸元组)
# -1的纬度自动计算长度不需要手动确定
数组名.reshape(重塑尺寸元组,其中一个元素为-1)
# 数组展平成一维
数组名.flatten()
八、ndarray数组的去重以及集合运算
九、numpy的随机数模块
import numpy.random
常用的numpy.random模块函数:
十、ndarray数组的拆分与合并
# 两个数组竖直拼接
np.concatenate([x, y], axis = 0)
# 两个数组水平拼接
np.concatenate([x, y], axis = 1)
np.vstack((x, y)) # 垂直堆叠:相对于垂直组合
np.hstack((x, y)) # 水平堆叠:相对于水平组合
# dstack:按深度堆叠
np.split(x,2,axis=0) # 按行分割成2份
np.split(x,3,axis=1) # 按列分割成3份