前言
在没给大家介绍 numpy 之前先给大家说下 Python 的基本概念。
Python 是一种高级的,动态的,多泛型的编程语言。Python 代码很多时候看起来就像是伪代码一样,因此你可以使用很少的几行可读性很高的代码来实现一个非常强大的想法。
numpy 很简单,numpy 是 Python 的一个科学计算的库,提供了矩阵运算的功能,其一般与 Scipy、matplotlib 一起使用。其实,list 已经提供了类似于矩阵的表示形式,不过 numpy 为我们提供了更多的函数。
小编在这给大家总结了一些 numpy 的常用操作。
首先,要引入 numpy 包:
一、在numpy中N维数组对象叫做ndarrey,关于它的一些操作:
1.ndarry对象的属性:
属性 |
说明 |
.ndim |
秩,即轴的数量或维度的数量 |
.shape |
ndarray对象的尺度,对于矩阵,n行m列 |
.size |
ndarray对象元素的个数,相当于.shape中n*m的值 |
.dtype |
ndarray对象的元素类型 |
.itemsize |
ndarray对象中每个元素的大小,以字节为单位 |
2.ndarry的元素类型(1):
数据类型 |
说明 |
bool |
布尔类型,True或False |
intc |
与C语言中的int类型一致,一般是int32或int64 |
intp |
用于索引的整数,与C语言中ssize_t一致,int32或int64 |
int8 |
字节长度的整数,取值:[‐128, 127] |
int16 |
16位长度的整数,取值:[‐32768, 32767] |
int32 |
32位长度的整数,取值:[‐231, 231‐1] |
int64 |
64位长度的整数,取值:[‐263, 263‐1] |
2.ndarry的元素类型(1):
数据类型 |
说明 |
bool |
布尔类型,True或False |
intc |
与C语言中的int类型一致,一般是int32或int64 |
intp |
用于索引的整数,与C语言中ssize_t一致,int32或int64 |
int8 |
字节长度的整数,取值:[‐128, 127] |
int16 |
16位长度的整数,取值:[‐32768, 32767] |
int32 |
32位长度的整数,取值:[‐231, 231‐1] |
int64 |
64位长度的整数,取值:[‐263, 263‐1] |
3.ndarry的元素类型(2):
数据类型 |
说明 |
uint8 |
8位无符号整数,取值:[0, 255] |
uint16 |
16位无符号整数,取值:[0, 65535] |
uint32 |
32位无符号整数,取值:[0, 232‐1] |
uint64 |
32位无符号整数,取值:[0, 264‐1] |
float16 |
16位半精度浮点数:1位符号位,5位指数,10位尾数 |
float32 |
32位半精度浮点数:1位符号位,8位指数,23位尾数 |
float64 |
64位半精度浮点数:1位符号位,11位指数,52位尾数 |
complex64 |
复数类型,实部和虚部都是32位浮点数 |
complex128 |
复数类型,实部和虚部都是64位浮点数 |
4.ndarry常用函数总结:
函数 |
说明 |
np.arange(n) |
类似range()函数,返回ndarray类型,元素从0到n‐1 |
np.ones(shape) |
根据shape生成一个全1数组,shape是元组类型 np.zeros(shape)根据shape生成一个全0数组,shape是元组类型 |
np.full(shape,val) |
根据shape生成一个数组,每个元素值都是val |
np.eye(n) |
创建一个正方的n*n单位矩阵,对角线为1,其余为0 |
np.ones_like(a) |
根据数组a的形状生成一个全1数组 |
np.zeros_like(a) |
根据数组a的形状生成一个全0数组 |
np.full_like(a,val) |
根据数组a的形状生成一个数组,每个元素值都是val |
np.linspace() |
根据起止数据等间距地填充数据,形成数组 |
np.concatenate() |
将两个或多个数组合并成一个新的数组 |
.reshape(shape) |
不改变数组元素,返回一个shape形状的数组,原数组不变 |
.resize(shape) |
与.reshape()功能一致,但修改原数组 |
.swapaxes(ax1,ax2) |
将数组n个维度中两个维度进行调换 |
.flatten() |
对数组进行降维,返回折叠后的一维数组,原数组不变 |
np.abs(x) np.fabs(x) |
计算数组各元素的绝对值 |
np.sqrt(x) |
计算数组各元素的平方根 |
np.square(x) |
计算数组各元素的平方 |
np.log(x) np.log10(x) np.log2(x) |
计算数组各元素的自然对数、10底对数和2底对数 |
np.ceil(x) np.floor(x) |
计算数组各元素的ceiling值或floor值 |
np.rint(x) |
计算数组各元素的四舍五入值 |
np.modf(x) |
将数组各元素的小数和整数部分以两个独立数组形式返回 |
np.cos(x) np.cosh(x) np.sin(x) np.sinh(x) np.tan(x) np.tanh(x) |
计算数组各元素的普通型和双曲型三角函数 |
np.exp(x) |
计算数组各元素的指数值 |
np.sign(x) |
计算数组各元素的符号值,1(+), 0, ‐1(‐) |
+ ‐* / ** |
两个数组各元素进行对应运算 |
np.maximum(x,y) np.fmax() np.minimum(x,y)np.fmin() |
元素级的最大值/最小值计算 |
np.mod(x,y) |
元素级的模运算 |
np.copysign(x,y) |
将数组y中各元素值的符号赋值给数组x对应元素 |
> < >= <= == != |
算术比较,产生布尔型数组 |
二、在numpy中随机函数库的函数总结:
1.np.random的随机函数(1):
函数 |
说明 |
rand(d0,d1,..,dn) |
根据d0‐dn创建随机数数组,浮点数,[0,1),均匀分布 |
randn(d0,d1,..,dn) |
根据d0‐dn创建随机数数组,标准正态分布 |
randint(low[,high,shape]) |
根据shape创建随机整数或整数数组,范围是[low, high) |
seed(s) |
随机数种子,s是给定的种子值 |
2.np.random的随机函数(2):
函数 |
说明 |
shuffle(a) |
根据数组a的第1轴进行随排列,改变数组x |
permutation(a) |
根据数组a的第1轴产生一个新的乱序数组,不改变数组x |
choice(a[,size,replace,p]) |
从一维数组a中以概率p抽取元素,形成size形状新数组 replace表示是否可以重用元素,默认为False |
3.np.random的随机函数(3):
函数 |
说明 |
uniform(low,high,size) |
产生具有均匀分布的数组,low起始值,high结束值,size形状 |
normal(loc,scale,size) |
产生具有正态分布的数组,loc均值,scale标准差,size形状 |
poisson(lam,size) |
产生具有泊松分布的数组,lam随机事件发生率,size形状 |
三、在numpy中统计函数总结:
函数 | 说明 |
---|
sum(a, axis=None) | 根据给定轴axis计算数组a相关元素之和,axis整数或元组 |
mean(a, axis=None) | 根据给定轴axis计算数组a相关元素的期望,axis整数或元组 |
average(a,axis=None,weights=None) | 根据给定轴axis计算数组a相关元素的加权平均值 |
std(a, axis=None) | 根据给定轴axis计算数组a相关元素的标准差 |
var(a, axis=None) | 根据给定轴axis计算数组a相关元素的方差 |
min(a) max(a) | 计算数组a中元素的最小值、最大值 |
argmin(a) argmax(a) | 计算数组a中元素最小值、最大值的降一维后下标 |
unravel_index(index, shape) | 根据shape将一维下标index转换成多维下标 |
ptp(a) | 计算数组a中元素最大值与最小值的差 |
median(a) | 计算数组a中元素的中位数(中值) |
np.gradient(f) | 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度 |